前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >题解 | Verilog刷题解析【10】function和task的使用、相关笔试题

题解 | Verilog刷题解析【10】function和task的使用、相关笔试题

作者头像
FPGA探索者
发布2022-10-05 14:20:00
5640
发布2022-10-05 14:20:00
举报
文章被收录于专栏:FPGA探索者FPGA探索者

Verilog中的函数与任务(function和task),笔试中经常会遇到选择题或者简答题,对比两者的一些特性。

目的:不仅仅是解题,更多的是想从真实的FPGA和数字IC实习秋招和实际工程应用角度,解读一些【笔试面试】所注意的知识点,做了一些扩展。

本文目录:

1. 题目

2. 解析

2.1 function和task使用与对比

2.2 function使用实例

2.3 function和task相关笔试真题

3. 代码

1. 题目

在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。

代码语言:javascript
复制
`timescale 1ns/1ns
module function_mod(
    input clk,
    input rst_n,    
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);

endmodule

2. 解析

2.1 function和task使用与对比

function和task的区别:

(1)任务能调用任务和函数,但是函数只能调用函数,不能调用任务;

(2)任务可以描述组合逻辑和时序逻辑,可以有时延;函数只能描述组合逻辑,仿真时延为0;

(3)任务可以有任意多个各种类型的输入;函数只能有input端口的输入参数,且至少输入一个参数;

(4)任务可以没有返回值;函数必须有一个返回值;

2.2 function使用实例

FPGA手撕代码——CRC校验码的多种Verilog实现方式

2.3 function和task相关笔试真题

解析:

A:函数定义中不能包含任何时间控制语句,即任何#、@、wait等语句,任务中可以使用延迟、事件和时序控制结构;

B:函数至少有一个输入变量,不能包含任何输出和双向端口,任务可以有任意多个输入、双向和输出变量;

C:函数function有一个返回值,缺省时默认返回1 bit的reg寄存器类型数据,任务task没有返回值;

D:函数不能启动任务,但是任务能启动其他任务或函数。

3. 代码

代码语言:javascript
复制
`timescale 1ns/1ns
module function_mod(
    input clk,
    input rst_n, 
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
   
    function [3:0] begin_end;
        input [3:0] data_in;
        begin
            begin_end[0] = data_in[3];
            begin_end[1] = data_in[2];
            begin_end[2] = data_in[1];
            begin_end[3] = data_in[0];
        end 
    endfunction

    assign c = begin_end(a);
    assign d = begin_end(b);

endmodule

刷题地址

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA探索者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解析
    • 2.1 function和task使用与对比
      • 2.2 function使用实例
        • 2.3 function和task相关笔试真题
        • 3. 代码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档