简谈FPGA verilog中的function用法与例子

FPGA学习交流 2018-08-10 13:42 次阅读

       大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA verilog中的function用法与例子。
       
       函数的功能和任务的功能类似,但二者还存在很大的不同。在 Verilog HDL 语法中也存在函数的定义和调用。
       
       1.函数的定义
       函数通过关键词 function 和 endfunction 定义,不允许输出端口声明(包括输出和双向端口) ,但可以有多个输入端口。函数定义的语法如下:

function [range] function_id;
  input_declaration
  other_declarations
  procedural_statement
endfunction

       其中,function 语句标志着函数定义结构的开始;[range]参数指定函数返回值的类型或位宽,是一个可选项,若没有指定,默认缺省值为 1 比特的寄存器数据;function_id 为所定义函数的名称,对函数的调用也是通过函数名完成的,并在函数结构体内部代表一个内部变量,函数调用的返回值就是通过函数名变量传递给调用语句;input_declaration 用于对函数各个输入端口的位宽和类型进行说明,在函数定义中至少要有一个输入端口;endfunction为函数结构体结束标志。下面给出一个函数定义实例。

       定义函数实例:
function  AND; //定义输入变量
input A, B; //定义函数体
begin
  AND = A  && B;
end
endfunction

       函数定义在函数内部会隐式定义一个寄存器变量, 该寄存器变量和函数同名并且位宽也一致。函数通过在函数定义中对该寄存器的显式赋值来返回函数计算结果。此外,还有下列
       几点需要注意:
       (1)函数定义只能在模块中完成,不能出现在过程块中;
       (2)函数至少要有一个输入端口;不能包含输出端口和双向端口;
       (3) 在函数结构中, 不能使用任何形式的时间控制语句 (#、 wait 等) , 也不能使用 disable中止语句;
       (4)函数定义结构体中不能出现过程块语句(always 语句) ;
       (5)函数内部可以调用函数,但不能调用任务。

       2.函数调用
       和任务一样,函数也是在被调用时才被执行的,调用函数的语句形式如下: func_id(expr1, expr2, ........., exprN) ,其中,func_id 是要调用的函数名,expr1, expr2, ......exprN是传递给函数的输入参数列表,该输入参数列表的顺序必须与函数定义时声明其输入的顺序相同。下面给出一个函数调用实例。

       函数调用实例:
module comb15 (A, B, CIN, S, COUT);

input [3:0] A, B;
input CIN;
output [3:0] S;
output COUT;

wire [1:0] S0, S1, S2, S3;

function signed [1:0] ADD;

input A, B, CIN;

reg S, COUT;

begin
S = A ^ B ^ CIN;
COUT = (A&B) | (A&CIN) | (B&CIN);
ADD = {COUT, S};
end
endfunction

assign S0 = ADD (A[0], B[0], CIN),
S1 = ADD (A[1], B[1], S0[1]),
S2 = ADD (A[2], B[2], S1[1]),
S3 = ADD (A[3], B[3], S2[1]),
S = {S3[0], S2[0], S1[0], S0[0]},
COUT = S3[1];
endmodule

       在函数调用中,有下列几点需要注意:
       (1)函数调用可以在过程块中完成,也可以在 assign 这样的连续赋值语句中出现。
       (2)函数调用语句不能单独作为一条语句出现,只能作为赋值语句的右端操作数。

        今天就聊到这里,各位,加油。

收藏 人收藏
分享:

评论

相关推荐

中美贸易酣战正急,国产FPGA遇“天时”尚需“人和”?

目前,全球FPGA市场被美国Xilinx(赛灵思)、Altera(阿尔特拉)、Lattice(莱迪思)、Microsemi(美高森美)四大巨头高度...

发表于 08-15 09:34 8次 阅读
中美贸易酣战正急,国产FPGA遇“天时”尚需“人和”?

基于带处理器和FPGA的SoC的新型SoM

本文将讨论使用 SoM 来开发嵌入式系统的优势,这些系统需要借由 FPGA 提供更高的处理能力。本文....

的头像 电子设计 发表于 08-15 09:21 40次 阅读
基于带处理器和FPGA的SoC的新型SoM

四强联手发布了基于FPGA的一系列vBRAS解决方案,加快了FPGA硬件加速的步伐

在近日举行的2018上海世界移动大会期间,中国电信、英特尔、联想与赛特斯联合发布了基于FPGA的一系....

发表于 08-14 16:20 108次 阅读
四强联手发布了基于FPGA的一系列vBRAS解决方案,加快了FPGA硬件加速的步伐

现代先进武器装备为何越来越青睐高端芯片?

至于FPGA,它包含大量门电路,使芯片更集成化,速度更快,可靠性更高.尤其是具有系统内可再编程(可再....

的头像 半导体观察IC 发表于 08-14 14:58 241次 阅读
现代先进武器装备为何越来越青睐高端芯片?

数字电路中最简单的混频知识

在FPGA设计中,不管是Altera还是Xilinx,它们的IP核几乎都是采用二进制补码带符号数,也....

的头像 FPGA技术联盟 发表于 08-14 14:35 86次 阅读
数字电路中最简单的混频知识

arm加载fpga程序为什么DONE信号一直为低?

[ENV] 我们的一块板卡上有FPGA(7A200T),ARM(tm4c1294),FLASH(N25Q),想通过arm上电加载fpga启动,过程如下;...

发表于 08-14 14:35 28次 阅读
arm加载fpga程序为什么DONE信号一直为低?

FPGA在音乐科技及医疗照护领域的应用

FPGA的应用领域包罗万象,我们今天来看看在音乐科技领域及医疗照护的智能巧思。

的头像 芯榜 发表于 08-14 10:39 152次 阅读
FPGA在音乐科技及医疗照护领域的应用

以FPGA和CPLD为基础的灵活可行的降低汽车电子物料成本解决方案

汽车制造商们坚持不懈地改进车内舒适性、安全性、便利性、工作效能和娱乐性,反过来,这些努力又推动了各....

发表于 08-14 10:01 60次 阅读
以FPGA和CPLD为基础的灵活可行的降低汽车电子物料成本解决方案

将FPGA作为下一代汽车电子设计的灵活及低成本解决方案还需要考虑这些问题

随着汽车在过去 25 年中从纯机械设备演变成高度集成的线控驾驶汽车电子系统,设计人员面临的挑战也不....

发表于 08-14 09:31 41次 阅读
将FPGA作为下一代汽车电子设计的灵活及低成本解决方案还需要考虑这些问题

电子工程师为什么要学会用FPGA 有什么好处?

对当今的硬件工程师来讲,FPGA的应用是同PCB设计一样必须掌握的技能,因此在过去三年里我们摩尔吧的硬禾实战营最重要的技...

发表于 08-14 09:29 64次 阅读
电子工程师为什么要学会用FPGA 有什么好处?

如何高效学习FPGA 学习FPGA应该避免那些误区

FPGA对于硬件工程师以及高校师生来说是非常重要的一项技能,其重要性甚至要超过PCB设计,不仅是因为在电子产品系统中(尤...

发表于 08-14 09:14 55次 阅读
如何高效学习FPGA 学习FPGA应该避免那些误区

基于FPGA的二值图像的膨胀算法的实现

1 背景知识 二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单...

发表于 08-14 09:08 99次 阅读
基于FPGA的二值图像的膨胀算法的实现

作为工程师的你,真的需要不断学习吗?

今天的这篇文章来自我们一位可爱的工程师烧友,很有情怀,相信很多朋友会产生共鸣。 我是一个平凡的工程师,标准的80后,从事单...

发表于 08-14 09:05 318次 阅读
作为工程师的你,真的需要不断学习吗?

用于双路1.2V/5A应用的DC-DC POL模块参考设计包含BOM,PCB文件及光绘文件

描述 PMP4379 是一款 POL 模块参考设计,适用于直流输入为 4.5V – 15V 的 DSP 和 FPGA 应用。此设计中提供详...

发表于 08-14 07:16 175次 阅读
用于双路1.2V/5A应用的DC-DC POL模块参考设计包含BOM,PCB文件及光绘文件

鼎阳SDS1102X示波器拆解分析

用单片SoC芯片替代传统的CPU+FPGA的分立方案,也可以减少硬件布板面积,有利于将高性能处理系统....

的头像 硬件十万个为什么 发表于 08-13 17:32 399次 阅读
鼎阳SDS1102X示波器拆解分析

Xilinx利用FPGA迈出了AI领域的第一步,未来前景可期

未来几年,人工智能芯片的需求将急剧上升。联合市场研究公司(Allied Market Researc....

发表于 08-13 16:49 90次 阅读
Xilinx利用FPGA迈出了AI领域的第一步,未来前景可期

FPGA巨头赛灵思收购深鉴科技,计划未来布局中国ADAS及自动驾驶

上周,刚刚收购深鉴科技的FPGA巨头:赛灵思面向媒体记者在深举行了“汽车产业最新技术与产品说明会”。....

发表于 08-13 16:40 272次 阅读
FPGA巨头赛灵思收购深鉴科技,计划未来布局中国ADAS及自动驾驶

FPGA学习系列:26. 计算器的设计

设计背景:计算器是设计中经常用到的一个操作软件,设计和学习计算器使我们亲密的联系所学的各模块, 对我....

的头像 FPGA学习交流 发表于 08-13 13:45 98次 阅读
FPGA学习系列:26. 计算器的设计

FPGA学习系列:27. VGA驱动设计

设计背景:     VGA (Video Graphics Array) 即视频图形阵列,是IBM于....

的头像 FPGA学习交流 发表于 08-13 13:45 125次 阅读
FPGA学习系列:27. VGA驱动设计

简谈FPGA/Verilog中inout端口使用方法

        大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA/Verilog中inout....

的头像 FPGA学习交流 发表于 08-13 13:45 110次 阅读
简谈FPGA/Verilog中inout端口使用方法

是否可以同时将两个或多个外部ADC连接到FPGA?

我正在寻找一个32通道ADC(24位分辨率),可以同时采样所有信号。但我只能找到符合上述要求的8通道ADC。 那么,我可以同...

发表于 08-13 10:33 200次 阅读
是否可以同时将两个或多个外部ADC连接到FPGA?

中频数字化基带硬件电路设计

以数字基带信号处理器件FPGA 为核心,实现上行信号的捕获、跟踪、扩频解调,主要由信号放大电路、AD 转换电路、FPGA 最...

发表于 08-13 07:18 19次 阅读
中频数字化基带硬件电路设计

适用于Xilinx Virtex 7 FPGA的电源解决方案包括原理图和物料清单

描述             Xilinx chose TI as the power solution vendor to power V...

发表于 08-13 06:31 266次 阅读
适用于Xilinx Virtex 7 FPGA的电源解决方案包括原理图和物料清单

以FPGA为核心的多轴控制器设计

专用控制器在完成整个控制的过程中,arm只负责指令解析、控制指令发送、实时数据上传等任务,fpga才....

发表于 08-12 09:47 257次 阅读
以FPGA为核心的多轴控制器设计

如何使用云科技在线设计PCB?详细经验教程

OrCAD® Capture Cloud工具作为桌面版本的一部分被引入市场,并拥有如下优势: 无需....

的头像 CadencePCB和封装设计 发表于 08-12 09:44 235次 阅读
如何使用云科技在线设计PCB?详细经验教程

以FPGA系统为核心的1553B总线接口设计

在总线接口模块中,曼彻斯特编解码是实现功能的核心部分,所以编码数据和解码数据是进行功能验证时观察的重....

发表于 08-12 09:44 57次 阅读
以FPGA系统为核心的1553B总线接口设计

如何设计一个基于FPGA的嵌入式监控系统?

为了实现自动图像报警和图像采集,本文设计了动体检测算法,这是因为绝大多数情况下我们只对监控区域中运动....

发表于 08-12 09:39 64次 阅读
如何设计一个基于FPGA的嵌入式监控系统?

以FPGA为核心的高阶快速数字滤波器设计

本文详细讲述了通过Matlab工具设计FIR线性相位滤波器的方法, 并针对声波信号设计了优于传统结构....

发表于 08-12 09:33 56次 阅读
以FPGA为核心的高阶快速数字滤波器设计

如何利用FPGA研究CPU工作原理实现其功能?

初始时的PC 为0000H, SP为03FFH。SP的更改可通过指令sph l来执行。针对实验箱, ....

发表于 08-12 09:29 72次 阅读
如何利用FPGA研究CPU工作原理实现其功能?

如何设计一个16位的嵌入式微控制器?

使用的FPGA器件是StratixⅡ型号为EP1S40F780C7。综合结果显示:A8096使用3 ....

发表于 08-12 09:11 73次 阅读
如何设计一个16位的嵌入式微控制器?

关于FPGA的优势以及产业化的限制因素详解

可编程的“万能芯片” FPGA——现场可编程门阵列,是指一切通过软件手段更改、配置器件内部连接结构....

发表于 08-11 11:47 56次 阅读
关于FPGA的优势以及产业化的限制因素详解

各种存储器接口控制器设计所面临的挑战和Xilinx的解决方案详解

FPGA 设计人员在满足关键时序余量的同时力争实现更高性能,在这种情况下,存储器接口的设计是一个一....

发表于 08-11 11:04 1360次 阅读
各种存储器接口控制器设计所面临的挑战和Xilinx的解决方案详解

FPGA究竟是什么?能代替CPU架构吗?

FPGA全称现场可编程门阵列(Field-Programmable Gate Array),最初作为....

的头像 FPGA极客空间 发表于 08-10 17:23 380次 阅读
FPGA究竟是什么?能代替CPU架构吗?

如何实现用Python开发FPGA?

近日,想必各位科技爱好者的朋友圈都被一篇发表在第25届IEEE国际讨论会上,用Python开发FPG....

的头像 FPGA开发圈 发表于 08-10 14:57 198次 阅读
如何实现用Python开发FPGA?

Virtex UltraScale+ FPGA:业界首款以16FF+工艺制造的高端FinFET FPGA

赛灵思在UltraScale+产品系列及设计工具上一直与100多家客户积极接触,目前已向其中60多....

发表于 08-10 11:35 46次 阅读
Virtex UltraScale+ FPGA:业界首款以16FF+工艺制造的高端FinFET FPGA

Xilinx推出SDSoC发环境2016.1版,使用 C和C++语言进行软件定义编程

赛灵思公司 (Xilinx) 推出 SDSoC发环境2016.1版,支持Zynq系列SoC和MPS....

发表于 08-10 11:16 90次 阅读
Xilinx推出SDSoC发环境2016.1版,使用 C和C++语言进行软件定义编程

在FPGA模块层如何提供容错设计

赛灵思根据实际情况提供了基于器件的打包式解决方案,从而帮助用户克服功能安全系统设计的复杂性挑战,而且....

的头像 FPGA开发圈 发表于 08-10 09:55 722次 阅读
在FPGA模块层如何提供容错设计

FPGA学习系列:26. 矩阵键盘的设计

设计背景: 矩阵键盘在工程设计越来越多的被用到,已然成为了我们做开发接触到的不可缺少的小型项目,利于....

的头像 FPGA学习交流 发表于 08-09 10:47 773次 阅读
FPGA学习系列:26. 矩阵键盘的设计

Quartus Prime Pro设计软件:用于支持英特尔下一代高度集成的大容量FPGA

Altera(现在已属英特尔公司)今天发布新的产品版Quartus Prime Pro设计软件,进....

发表于 08-09 09:21 72次 阅读
Quartus Prime Pro设计软件:用于支持英特尔下一代高度集成的大容量FPGA

Mouser供货Terasic开发套件,专为Altera SoC FPGA而设

贸泽电子(Mouser Electronics) 即日起开始分销Terasic Technolog....

发表于 08-09 08:42 44次 阅读
Mouser供货Terasic开发套件,专为Altera SoC FPGA而设

数字集成电路设计Verilog的详细资料介绍免费下载

Verilog的主要应用包括: – ASIC和FPGA工程师编写可综合的RTL代码 – 高抽象级....

发表于 08-09 08:00 45次 阅读
数字集成电路设计Verilog的详细资料介绍免费下载

Vivado设计套件TCL命令资料参考指南免费下载

工具命令语言(TCL)是集成在VIVADO环境中的脚本语言。TCL是半导体工业中用于应用程序编程接口....

发表于 08-09 08:00 34次 阅读
Vivado设计套件TCL命令资料参考指南免费下载

基于现场可编程门阵列(fpga)技术fir数字滤波器的设计

设计一个滤波器,其采样率 fs=1MHz,通带截止频率 fpass=50KHz,归一化表示fpass....

的头像 FPGA技术联盟 发表于 08-08 15:55 283次 阅读
基于现场可编程门阵列(fpga)技术fir数字滤波器的设计

FPGA怎么搭复位电路 fpga复位电路设计方案

FPGA的可靠复位是保证系统能够正常工作的必要条件,本文对FPGA设计中常用的复位设计方法进行了分类....

发表于 08-08 15:14 84次 阅读
FPGA怎么搭复位电路 fpga复位电路设计方案

美高森美最新11.7版本Libero系统级芯片,是用于FPGA产品的全面FPGA设计工具套件

美高森美公司(Microsemi Corporation)宣布推出最新11.7版本Libero系统....

发表于 08-08 14:28 41次 阅读
美高森美最新11.7版本Libero系统级芯片,是用于FPGA产品的全面FPGA设计工具套件

FPGA学习系列:23. 音乐蜂鸣器的设计

设计背景: 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、....

的头像 FPGA学习交流 发表于 08-08 12:31 516次 阅读
FPGA学习系列:23. 音乐蜂鸣器的设计

浅析国内FPGA市场发展现状

2018年上半年对于中国半导体行业而言是多事之秋,发生了几件让国人深入思考的大事。我作为IC产业的逃....

的头像 FPGA极客空间 发表于 08-08 10:50 583次 阅读
浅析国内FPGA市场发展现状

浅析2018人工智能曲线五个阶段的关键技术

工智能被广为关注,但是一些想法恐难达到预期。本成熟度曲线将追踪AI基本趋势和未来创新,以确定人工智能....

的头像 智能制造 发表于 08-08 09:12 1064次 阅读
浅析2018人工智能曲线五个阶段的关键技术

FPGA开发攻略为什么要掌握FPGA开发知识?FPGA详细资料免费下载

FPGA 是英文 Field Programmable Gate Array 的缩写,即现场可编程门....

发表于 08-08 08:00 46次 阅读
FPGA开发攻略为什么要掌握FPGA开发知识?FPGA详细资料免费下载

利用人工智能定时方案简化高性能计算加速

云计算和人工智能(AI)将会是解决一些世界上最大的挑战的关键,如加速科学发现、加快医学研究、能源、医....

的头像 SiliconLabs 发表于 08-07 15:30 359次 阅读
利用人工智能定时方案简化高性能计算加速

极目智能发布旗下最新车规级视觉ADAS解决方案,该系统搭载Xilinx高性能FPGA平台

2018年8月3日,智能驾驶辅助技术供应商极目智能发布旗下最新车规级视觉ADAS解决方案JM600....

发表于 08-07 14:24 172次 阅读
极目智能发布旗下最新车规级视觉ADAS解决方案,该系统搭载Xilinx高性能FPGA平台

几种进行FPGA时序约束的方法大盘点!

从最近一段时间工作和学习的成果中,我总结了如下几种进行时序约束的方法。按照从易到难的顺序排列如下:

发表于 08-07 14:14 167次 阅读
几种进行FPGA时序约束的方法大盘点!

xilinx下载器驱动提示“系统找不到指定的路径”的解决过程

本篇记录了本人解决xilinx下载器驱动安装问题(装驱动提示错误如下图)。主要过程就是更新到win1....

的头像 FPGA学习交流 发表于 08-07 13:47 341次 阅读
xilinx下载器驱动提示“系统找不到指定的路径”的解决过程

FPGA学习系列:22. 数字时钟的设计

设计背景:数字时钟的设计,在我们的好多设计中都有过这样那样的设计,这基本属于一个比较精简的一个小项目....

的头像 FPGA学习交流 发表于 08-07 13:47 189次 阅读
FPGA学习系列:22. 数字时钟的设计

FPGA学习系列:24. FIFO控制器的设计

设计背景: First Input First Output的缩写,先入先出队列,这是一种传统的按序....

的头像 FPGA学习交流 发表于 08-07 11:11 448次 阅读
FPGA学习系列:24. FIFO控制器的设计

蜂鸣器音乐程序与最简单蜂鸣器电路图之FPGA学习课程

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子....

发表于 08-07 10:35 115次 阅读
蜂鸣器音乐程序与最简单蜂鸣器电路图之FPGA学习课程

基于verilog的FPGA中上电复位设计

在实际设计中,由于外部阻容复位时间短,可能无法使FPGA内部复位到理想的状态,所以今天介绍一下网上流....

的头像 FPGA极客空间 发表于 08-07 09:17 611次 阅读
基于verilog的FPGA中上电复位设计

从云端到边缘推动FPGA应用拓展

快速兴起的网络边缘计算对于FPGA的应用需求也在增加。莱迪思半导体亚太区资深事业发展经理陈英仁表示:....

的头像 FPGA技术联盟 发表于 08-06 16:25 524次 阅读
从云端到边缘推动FPGA应用拓展