简谈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设计多路数据采集和控制模块的思路、过程、编程及应用

该模块能实现32路12位的A,D数据采集和16路的TTL电平输入输出控制。文本介绍了此模块的设计思路....

发表于 10-15 18:21 13次 阅读
使用FPGA设计多路数据采集和控制模块的思路、过程、编程及应用

如何使用FPGA进行LED点阵显示字符的设计详细资料分析

现场可编程门阵列( FPGA) 是一种可编程逻辑器件, 它具有丰富的I/O 口及内部资源, 编程和修....

发表于 10-15 18:21 14次 阅读
如何使用FPGA进行LED点阵显示字符的设计详细资料分析

ADF4159检测没有任何信号

您好,我用的是ADF4159这块芯片,然后用FPGA对芯片进行初始化,为了检测初始化有没有成功,我在MUXOUT端口直接接示...

发表于 10-15 14:31 13次 阅读
ADF4159检测没有任何信号

怎么知道FPGA上剩余的电路板使用量和可用空间量

嗨, 我有一些相当大的设计,我能够在FPGA上实现,但从设计总结来看,我无法弄清楚FPGA架构上剩余多少可用空间。 设备...

发表于 10-15 11:55 33次 阅读
怎么知道FPGA上剩余的电路板使用量和可用空间量

错误:NgdBuild:256种混合语言设计

我正在尝试合成混合的V​​HDL / Verilog设计但是当XST进入高级HDL综合部分时,它会为每个verilog模块获得以下错误:...

发表于 10-15 11:41 7次 阅读
错误:NgdBuild:256种混合语言设计

JESD204B转换器的确定性延迟解密

作者:Ian Beavers 对于需要一系列同步模数转换器(ADC)的高速信号采样和 处理应用,解偏斜和转换器的延迟变化匹配是至关重要...

发表于 10-15 10:40 74次 阅读
JESD204B转换器的确定性延迟解密

运算放大器的最大电源电流规格

Harry Holt,ADI公司应用工程师 内容提要 对于大多数IC(集成电路),数据手册上都会列出最大电源电流,但人们常常对其测...

发表于 10-15 10:38 51次 阅读
运算放大器的最大电源电流规格

【FPGA】外设不能直接和主机直接相连有哪些问题?

一般情况下外设不能直接和主机直接相连,它们之间的信息交换主要存在以下问题: • 速度不匹配 通常情况下外设的工作速度会比...

发表于 10-15 09:50 25次 阅读
【FPGA】外设不能直接和主机直接相连有哪些问题?

请问AD9361 LVDS时序必须在FPGA中直接使用FB_CLK双边沿发送数据吗?

我在手册上看到AD9361 LVDS模式发送数据的时钟要使用双边沿,在FPGA中,我将FB_CLK倍频到2倍使用单边沿发送数据,...

发表于 10-15 09:21 14次 阅读
请问AD9361 LVDS时序必须在FPGA中直接使用FB_CLK双边沿发送数据吗?

管理不可避免:产品过时怎么办

谁会在不幸去世的情况下管理您的遗产? 如果您的办公室和设备被自然灾害摧毁,您的企业会怎么做? 当供应商停止关键组件时,您...

发表于 10-15 08:41 31次 阅读
管理不可避免:产品过时怎么办

FPGA教程之FPGA初级,中级和高级的资料和视频教程免费下载

手头的FPGA资料,免费分享给大家,内含初级,中级和高级资料视频教程,希望大家学业有成。

发表于 10-15 08:00 16次 阅读
FPGA教程之FPGA初级,中级和高级的资料和视频教程免费下载

以FPGA芯片为载体设计一个多功能信号发生器

信号发生器又称为波形发生器, 是一种常用的信号源,广泛应用于电子电路、通信、控制和教学实验等领域。

的头像 电子发烧友网工程师 发表于 10-14 09:17 176次 阅读
以FPGA芯片为载体设计一个多功能信号发生器

探讨FPGA在医疗电子设备开发中的应用

智慧医疗整合个人生理状态感测与结合物联网,是众多IoT应用中的重点项目,因为医疗IoT应用市场的特殊....

的头像 电子发烧友网工程师 发表于 10-14 09:13 212次 阅读
探讨FPGA在医疗电子设备开发中的应用

采用FPGA与高性能DSP芯片的雷达信号处理系统设计

现代雷达特别是机载雷达数字信号处理机的特点是输入数据多,工作模式复杂,信息处理量大。因此,在一个实时....

发表于 10-14 08:27 51次 阅读
采用FPGA与高性能DSP芯片的雷达信号处理系统设计

为什么说Intel是为了好基友微软收购FPGA公司?

去年Intel宣布斥资167亿美元收购了全球第一大FPGA公司Altera,而且这家公司还是Inte....

发表于 10-13 10:50 124次 阅读
为什么说Intel是为了好基友微软收购FPGA公司?

市场被垄断,中小FPGA公司要怎么做才能站稳脚跟?

相对于通用MCU和专用SoC,FPGA除了具有灵活的可编程性这一大优势之外,还有两个绕不开的劣势,那....

发表于 10-13 10:45 51次 阅读
市场被垄断,中小FPGA公司要怎么做才能站稳脚跟?

基于FPGA为核心的多路模拟信号采集模块的设计资料免费下载

为了实现对58路模拟信号进行不同频率的采集,设计了一种以现场可编程门阵列(FPGA)为核心的多路模拟....

发表于 10-12 16:15 34次 阅读
基于FPGA为核心的多路模拟信号采集模块的设计资料免费下载

基于FPGA的高速多路数据采集系统的设计方案详细资料说明

介绍了一种基于FPGA的高速多路数据采集系统的设计方案,描述了系统的主要组成及FPGA的实现方法,并....

发表于 10-12 16:15 26次 阅读
基于FPGA的高速多路数据采集系统的设计方案详细资料说明

如何使用FPGA实现多路同步实时数据采集的方案设计资料免费下载

介绍了一种基于FPGA的多路同步、实时数据采集新方案,着重对其硬件结构和控制逻辑进行了阐述,并从工程....

发表于 10-12 16:14 26次 阅读
如何使用FPGA实现多路同步实时数据采集的方案设计资料免费下载

如何使用FPGA设计高速数据采集系统的详细资料免费下载

为了在提高数据采集卡的速度的同时降低成本,设计了一种应用流水线存储技术的数据采集系统。该系统应用软件....

发表于 10-12 16:14 24次 阅读
如何使用FPGA设计高速数据采集系统的详细资料免费下载

如何设计基于FPGA的嵌入式以太网与Matlab通信平台的数据传送交互系统

着FPGA单片可编程容量的日益增大,传统的嵌入式系统设计正在逐渐被片上系统所取代,用于数据通信的以太....

发表于 10-12 16:14 21次 阅读
如何设计基于FPGA的嵌入式以太网与Matlab通信平台的数据传送交互系统

FPGA verilog实现中值滤波

一、实现步骤:1.查看了中值滤波实现相关的网站和paper;2.按照某篇paper的设计思想进行编程....

的头像 FPGA学习交流 发表于 10-12 14:58 93次 阅读
FPGA verilog实现中值滤波

程序没错误,但quartus软件报错了,但不知到什么原因?

library ieee; use ieee.std_logic_1664.all; use ieee.std_lodic_unsigned.all; entity cnt10 is     port (clk,...

发表于 10-12 12:08 100次 阅读
程序没错误,但quartus软件报错了,但不知到什么原因?

国产FPGA开发经验分享之初识AGM

    近期因某型产品降成本需求,有幸接触到一家名不见经传的国产FPGA产品,整体使用下来性价比非常高。板卡几个月...

发表于 10-12 11:50 169次 阅读
国产FPGA开发经验分享之初识AGM

通过对CORDIC算法的工作原理进行分析

在式(1)中,如果让旋转的角度φ满足条件:tanφ=±2-i,则式(1)中的乘法操作就可以转换为移位....

的头像 电子发烧友网工程师 发表于 10-12 11:16 124次 阅读
通过对CORDIC算法的工作原理进行分析

FPGA深入医疗电子设备开发应用

智慧医疗整合个人生理状态感测与结合物联网,是众多IoT应用中的重点项目,因为医疗IoT应用市场的特殊....

发表于 10-11 16:58 123次 阅读
FPGA深入医疗电子设备开发应用

Intel收购Altera,CAPI FPGA激烈争夺市场

IBM和Xilinx走到了一起,IBM大中华区科技合作部业务发展总监张思民与Xilinx公司亚太区通....

发表于 10-11 16:51 202次 阅读
Intel收购Altera,CAPI FPGA激烈争夺市场

如何实现FPGA接口的简化设计?

许多新式 FPGA 设计采用了一些用于控制的嵌入式处理器。一种典型解决方案需要使用诸如 NIOS 等....

的头像 电子发烧友网工程师 发表于 10-11 10:10 189次 阅读
如何实现FPGA接口的简化设计?

深入剖析FPGA规范化的重要性

很多人认为,IC/FPGA属于设计范畴。设计是一个需要设计师自由创作的过程,怎么可能被一些条条框框所....

的头像 电子发烧友网工程师 发表于 10-11 09:59 162次 阅读
深入剖析FPGA规范化的重要性

FPGA在市场上扮演了关键地位,与MCU共存可穿戴市场

电子产业几个众所周知的趋势包括:所有产品的生命周期都在变短;消费类电子产品制造商可以利用的盈利窗口....

发表于 10-10 17:16 207次 阅读
FPGA在市场上扮演了关键地位,与MCU共存可穿戴市场

一种基于FPGA的控制系统的电子电路设计方法浅析

文主要介绍基于现场可编程门阵列及EDA方法学的永磁无刷直流电机控制系统的电子电路设计。FPGA是....

发表于 10-10 16:55 79次 阅读
一种基于FPGA的控制系统的电子电路设计方法浅析

FPGA中的testbench介绍

跟大家解释一点,所有testbench本质上都是串行执行,因为在CPU环境下,没有可靠并行执行的能力....

的头像 FPGA极客空间 发表于 10-10 16:14 140次 阅读
FPGA中的testbench介绍

高云半导体小蜜蜂家族GW1NS系列产品入围Arm TechCon 2018年度最佳技术创新奖

中国广州,2018年10月10日,广东高云半导体科技股份有限公司(以下简称“高云半导体”)今日宣布,....

的头像 人间烟火123 发表于 10-10 10:27 718次 阅读
高云半导体小蜜蜂家族GW1NS系列产品入围Arm TechCon 2018年度最佳技术创新奖

怎么利用FPGA器件保护DSP网络设计避免入侵?

对于基于数字信号处理器(DSP)的设计,如果DSP没有足够的安全能力,便特别容易受到入侵。在许多应用....

发表于 10-09 16:58 88次 阅读
怎么利用FPGA器件保护DSP网络设计避免入侵?

FPGA能在实时基因组测序计算中大显身手,大大缩短时间

目前,FPGA在实时基因组测序计算大显身手,把测序时间从30小时缩短到26分钟,之后基因组测序计算时....

发表于 10-09 16:51 181次 阅读
FPGA能在实时基因组测序计算中大显身手,大大缩短时间

简谈 SDRAM的工作原理

SDRAM:Synchronous Dynamic Random Access Memory,同步动....

的头像 FPGA学习交流 发表于 10-09 15:22 74次 阅读
简谈 SDRAM的工作原理

fpga 有符号数、无符号数

 在设计中,所有的算数运算符都是按照无符号数进行的。如果要完成有符号数计算,对于加、减操作通过补码处....

的头像 FPGA学习交流 发表于 10-09 15:22 62次 阅读
fpga 有符号数、无符号数

英特尔:5G是未来互联互通之基础,将进一步开发人类潜能

“5G不仅仅是下一代沟通方式、连通方式,它也是第四次工业浪潮的一个基础,将进一步开发人类潜能。”在I....

的头像 章鹰 发表于 10-09 11:31 1118次 阅读
英特尔:5G是未来互联互通之基础,将进一步开发人类潜能

浅析FPGA规范化的重要性

设计规范化与自由创作之间没有任何矛盾。它只是制约了那些可能出错或者低效的行为,令设计思路更加明朗、设....

的头像 FPGA极客空间 发表于 10-09 11:10 168次 阅读
浅析FPGA规范化的重要性

Xilinx开发平台扩展功能及FMC连接器的特性

该视频访谈中,Avnet、Xilinx 和 Maxim共同探讨了 Xilinx 开发平台和评估板功能....

的头像 Maxim视频 发表于 10-09 03:22 132次 观看
Xilinx开发平台扩展功能及FMC连接器的特性

一个成熟的FPGA不仅是熟悉FPGA就好

FPGA是介于软硬件之间的一朵奇葩。你用它做接口、做通信,它就偏向硬件;你用它做算法、做控制,它就偏....

的头像 电子发烧友网 发表于 10-08 16:18 257次 阅读
一个成熟的FPGA不仅是熟悉FPGA就好

详解基于FPGA至简设计法的4位闪烁灯

LED灯的理论、教学板的原理图,已经在案例1位闪烁灯中有详细的描述,在此不再讲述,有兴趣的读者可以返....

发表于 10-08 15:47 148次 阅读
详解基于FPGA至简设计法的4位闪烁灯

详解DSP和FPGA在汽车电子中的广泛应用

汽车电子产品中的语音处理主要涉及到语音的数字化处理、语音编解码、语音压缩和语音识别。国外比较热门的汽....

发表于 10-08 14:36 134次 阅读
详解DSP和FPGA在汽车电子中的广泛应用

Xilinx FPGA的Maxm电源解决方案

Here’s evidence that Maxim and Xilinx have been wo....

的头像 Maxim视频 发表于 10-08 03:23 180次 观看
Xilinx FPGA的Maxm电源解决方案

英特尔扩充FPGA加速平台产品组合,可为数据中心开发人员提供强大的平台

英特尔今天推出了采用英特尔 Stratix 10 SX FPGA(英特尔超强大的 FPGA)的全新....

发表于 10-01 11:31 225次 阅读
英特尔扩充FPGA加速平台产品组合,可为数据中心开发人员提供强大的平台

ADI的FPGA夹层FMC176简化了高速数据转换器到FPGA的连接

Analog Devices, Inc. ( ADI)推出一款FPGA夹层卡(FMC) FMC17....

发表于 10-01 11:03 85次 阅读
ADI的FPGA夹层FMC176简化了高速数据转换器到FPGA的连接

一种基于实用AGC算法的音频信号处理方法与FPGA实现的分析研究

随着现代通信技术的广泛使用,通信企业问的竞争不断加剧,为提升自身的竞争优势,通信企业需要将其通信信号....

发表于 09-30 16:29 241次 阅读
一种基于实用AGC算法的音频信号处理方法与FPGA实现的分析研究

一种基于FPGA的神经网络硬件实现方案详解

人工神经网络在智能控制、模式识别、图像处理等领域中应用广泛。在进行神经网络的应用研究时,人们可以将神....

发表于 09-30 16:14 604次 阅读
一种基于FPGA的神经网络硬件实现方案详解

如何使用FPGA进行激光驾束制导信息场仿真系统设计

本文设计的激光驾束制导信息场仿真系统主要是为了满足在实验室环境下对激光驾束制导信息场检测和对检测设备....

发表于 09-29 17:23 48次 阅读
如何使用FPGA进行激光驾束制导信息场仿真系统设计

如何使用FPGA和单片机的高性价比来设计LED显示屏系统

随着平板显示技术的不断更新,大型LED显示系统利用发光二极管构成的点阵模块或像素单元组成大面积显示屏....

发表于 09-29 16:55 76次 阅读
如何使用FPGA和单片机的高性价比来设计LED显示屏系统

如何使用FPGA实现图像采集系统的详细设计资料免费下载

视频图像采集是视频信号处理系统的前端部分,正在向高速、高分辨率、高集成化、高可靠性方向发展。图像采集....

发表于 09-29 16:55 69次 阅读
如何使用FPGA实现图像采集系统的详细设计资料免费下载

使用EDA技术及VHDL硬件描述语言实现的TDMA数字频带通信系统资料概述

基于EDA 技术及VHDL 硬件描述语言, 提出了一种TDMA 数字频带通信系统, 在一片EPF10....

发表于 09-29 16:54 53次 阅读
使用EDA技术及VHDL硬件描述语言实现的TDMA数字频带通信系统资料概述

基于SoC FPGA的心电信号检测系统设计详解

心电信号( electrocardiogram,ECG) 能够客观反映心脏各部分的生理状况,也是用来....

发表于 09-29 16:49 182次 阅读
基于SoC FPGA的心电信号检测系统设计详解

FPGA与DSP有哪些区别、特点及用途?

FPGA是一种可编程的硅芯片,DSP是数字信号处理,当系统设计人员在项目的架构设计阶段就面临到底采用....

发表于 09-29 16:43 441次 阅读
FPGA与DSP有哪些区别、特点及用途?

FPGA的CY7C68013固件程序详细资料免费下载

本文档的主要内容详细介绍的是FPGA的CY7C68013固件程序详细资料免费下载。

发表于 09-29 08:00 52次 阅读
FPGA的CY7C68013固件程序详细资料免费下载

ARM入门教程学习方案之十三点ARM入门建议免费下载

这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还....

发表于 09-28 16:36 86次 阅读
ARM入门教程学习方案之十三点ARM入门建议免费下载

英特尔决心布局FPGA,助力其成长发展

日前被英特尔(Intel)收购的FPGA大厂Altera在最新旗舰产品Stratix 10中已正式採....

发表于 09-28 15:57 448次 阅读
英特尔决心布局FPGA,助力其成长发展

嵌入式FPGA IP问世,为物联网的应用推进带来了新的助推力量

物联网的发展应用,是以无数量连网的智能设备为硬件基础,而这些设备所产生的数据要成为有用的信息,则需要....

发表于 09-28 15:50 209次 阅读
嵌入式FPGA IP问世,为物联网的应用推进带来了新的助推力量

always block內省略else所代表的電路 (SOC) (Verilog)

Abstract在Verilog中,always block可以用來代表Flip-Flop, Com....

的头像 FPGA学习交流 发表于 09-28 11:16 244次 阅读
always block內省略else所代表的電路 (SOC) (Verilog)

TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为±1 °C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150°C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 ±1°C远程二极管传感器 ±1°C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...

发表于 09-19 16:35 4次 阅读
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器

TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75°C)和测量分辨率(0.0 625°C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55°C至+ 150°C的温度范围。 特性 8通道远程二极管温度传感器精度:±0.75&...

发表于 09-18 16:05 2次 阅读
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器