题目描述

在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。

请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。

程序的接口信号图如下:

使用Verilog HDL实现以上功能并编写testbench验证。

输入描述:

a,b:4bit位宽的无符号数

输出描述:

c,d:4bit位宽的无符号数

解题思路

该题很明显,就是考察function的使用方法;

在Verilog HDL中,函数的声明由关键字function开始,endfunction结束。对于函数中的语句需要用begin…end包含,即使只有一句。函数的声明模板如下:

function [range-1:0] function_name(input_declaration);other_declaration ;    procedural_statement ;
endfunction

函数在声明时,会隐式的声明一个宽度为 range、 名字为 function_name 的寄存器变量,函数的返回值通过这个变量进行传递。当该寄存器变量没有指定位宽时,默认位宽为 1。然后进行输入变量的声明和其它声明。注意function定义的尾部需要加“;”结束。

function 是用来描述功能的函数,不是描述硬件的,不可以有时序逻辑。

funtion 中可以使用for 循环:

`timescale 1ns/1ns
module function_mod(input [3:0]a,input [3:0]b,output [3:0]c,output [3:0]d
);function [3:0]bit_reverse(input [3:0]data);integer i;for(i=0;i<4;i=i+1)begin:reversebit_reverse[i] = data[3-i] ;end  endfunctionassign  c = bit_reverse(a) ;   //调用functionassign  d = bit_reverse(b) ;
endmodule

那么function 中的for 循环与 generate ... for 有什么区别?

function 在FPGA中实现,消耗的是什么资源?

函数function的使用方法相关推荐

  1. Python中Function(函数)和methon(方法)

    首先来看他们的定义, 函数function -- A series of statements which returns some value to a caller. It can also be ...

  2. Python中Function(函数)和method(方法)

    在Python中,对这两个东西有明确的规定: 函数function -- A series of statements which returns some value to a caller. It ...

  3. python中function函数的用法_Python中Function(函数)和methon(方法)

    在Python中,对这两个东西有明确的规定: 函数function -- A series of statements which returns some value toa caller. It ...

  4. js function定义函数的4种方法

    js function定义函数的4种方法 1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: 复制代码代码如下: function func(){}  或  var func=funct ...

  5. php undefined function 几个函数,PHP Fatal error: Call to undefined function 函数名() in 解决方法...

    PHP Fatal error: Call to undefined function 函数名() in 解决方法 发布于 2015-01-14 08:55:15 | 219 次阅读 | 评论: 1 ...

  6. php函数的默认值,php函数指定默认值方法的小例子

    php函数指定默认值方法的小例子 本节内容: php函数指定默认值 在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替. 例1, 复制代码 代码如下: ...

  7. 深入理解javascript中的立即执行函数(function(){…})()

    2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...

  8. 1.2、什么是函数?什么是方法

    1.2.什么是函数?什么是方法 在javascript中,函数和方法的区分 有助于理解js执行上下文关系,基于原型的继承方式. 什么是函数 通过function或字面量定义的function类型的变量 ...

  9. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))

    ( function(){-} )() ( function (){-} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...

最新文章

  1. 特斯拉前员工承认备份AutoPilot代码,但入职小鹏汽车前已删除
  2. Python 技术篇-socket套接字实现服务器客户端消息传递实例演示,UDP实现
  3. Sublime Text2使用ctex
  4. CoreData 从入门到精通(四)并发操作
  5. 深入源码理解.NET Core中Startup的注册及运行
  6. ActionScript 3.0 编程
  7. HDU1325 Is It A Tree?
  8. gstreamer插件用不了,及黑名单Blacklist的解决办法
  9. php获取字段中的第几个数字_php提取字符串中的数字
  10. Dynamips ADSL实验之一pppoeoa(工大瑞普修正版)
  11. Xpose_HOOK入门教程
  12. Lync 2013 客户端简介
  13. 谷粒商城——第一篇 前后端基础
  14. script脚本阻塞的探究、异步属性async和defer的区别
  15. LTE CQI/PMI 上报机制
  16. 如何成为一名IC验证工程师——IC修真院直播
  17. 视频字幕识别(百度AI开放平台OCR | python | opencv)
  18. python哪里最难用_Python里最难的Asyncio,这里有一份非常适合小白的教程
  19. linux系统资源查看详解
  20. 基础版微信模板消息开发详解,附代码PHP

热门文章

  1. 大数据开发跟大数据分析的区别是什么?
  2. Springboot整合Netty,实现Socket通信
  3. LaTeX 向量两种表示方法(加粗、箭头)示例
  4. AWS免费云主机之如何使用putty登录
  5. 证件识别接口编写的JAVA调用示例
  6. hydra(海德拉)暴力破解工具
  7. mysql版本在哪看_mysql版本查询(mysql版本有哪些)
  8. Octave是什么,以及Octave online的使用(相当于open source的matlab)
  9. i5 11400和锐龙r5 5600X哪个强
  10. 【java】黑白图像