从电路到Verilog | IP设计可企及,宏和参数只是为了合并同类模块

2016-08-16 10:49:35 来源:EEFOCUS
标签:

 

老衲第一次学习Verilog语言,基本就到前面几讲的程度,顶多加上了解`define宏定义。于是对于能设计IP核的人,那是佩服的五体投地,如黄河泛滥一发不可收拾。直到Verilog 2001出了参数(parameter)和生成块(generate)功能,做IP核就成了人人可以掌握的技能了。对头,下面老僧就和施主们讲这些内容。


同样的代码/模块要简化不难,这就是所谓模块化的作用。但是类似的模块----例如同样是计数器,只是内部D触发器位宽的不同----要聚类就需要一些技巧了,因为电路是不支持结构灵活变化的。为了能够合并类似模块,Verilog发展出了宏和参数这两个玩意。


最后呢,在Verilog 2001里面,设计了块生成的功能。这个功能使得用户可以更加简单的根据外部的输入,灵活的产生最佳的电路结构。


1. 参数定义,结构变化
参数的定义方法和传递方式见表1所示。定义有两种方法,传递也有两种方法,在加上参数列表的两种表示,又是一个“一题多解”。那种方式好?没标准答案,按照施主喜欢的方式来即可。但是一个项目里面,最好选择一种组合模式,方便其他人阅读。


表1参数的定于与传递


“parameter_list”为参数列表,参数之间用逗号“,”隔开;其中,“parameter_name”是用户定义的参数名称,建议采用容易阅读的命名方式;“parameter_initial_value”为该参数对应的初始值,在本模块的实例未被定义参数的时候使用。


“parameter_list_seperated”为独立于module定义之外的参数列表,需要在模块行为描述之前书写。它由若干个关键字“parameter”开头的参数定义构成;如果一个“parameter”带多个参数定义,则这些参数需要被逗号“,”隔离;每个“parameter”开头的定义,末尾用分号“;”表示结束。


“parameter_assignment_list”是参数赋值列表,由关键字“defparam”开头,后面是各个参数的赋值。对于每个参数,参数名称需要用“module_instance_index”指定是哪一个例化模块对应的参数;模块索引“module_instance_index”的格式是按照最高模块例化名称到最底层例化的顺序排列,模块例化名称之间用点“.”隔离;“parameter_value”是对应参数的值;参数赋值之间用逗号“,”隔离,末尾需要有分号“;”。


“parameter_assignment_list_sequence”是按照定义顺序的参数传递列表,其中各个对应参数值“parameter_value”的顺序必须和定义时候的顺序一致。


“parameter_assignment_list_named”是按照指定名称的参数传递列表,其中各个对应参数值“parameter_value”有前面带点“.”的参数名称“parameter_name”指定。所以在参数的排列顺序上可以任意。


当在实例化模块的同时传递参数的时候,请注意模块名称之后是参数传递列表,然后才是模块的实例名等,这个顺序不能搞错。参数传递列表被#(…)标记出来。


参数的值可以说明位宽,但是一般而言,参数的值是一个常数不需要定义位宽的。
代码中引用参数的时候,直接使用其名称,无需象宏定义那样用“`”开头。


例2给出了一个位宽和最大值参数化的计数器的例子,请参考。例子中,这个计数器完成到达最大值就清零的不停的计数功能。顶层模块调用了两个参数不同的计数器。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

作者简介
加菲
加菲

十年一觉,博士毕业后十多年从事无线通讯产品的研发工作。了解W-CDMA、TDS-CDMA和LTE的标准协议、接收机算法以及系统架构和开发。从事过关于W-CDMA的FPGA IP core设计工作,也完成过W-CDMA和TDS-CDMA的接收机理论研究和链路仿真工作。综合上面的工作,最终选择了无线通讯的系统设计和标准设计工作。目前拥有100多个已授权的发明专利,是某通讯行业标准文件的第一作者,亦有专利思想被写入3GPP协议。已出版著作《IP核芯志》。

继续阅读
打造国内自主可控芯片,RISC-V是重要一环
打造国内自主可控芯片,RISC-V是重要一环

随着物联网、5G、人工智能技术的不断发展,行业对芯片的需求也变的越来越严苛,无论是从芯片的超低功耗方面还是差异化方面,都存在不小的挑战。

基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计
基于 QDR-IV SRAM 实现网络流量管理统计计数器 IP设计

网络路由器带有用于性能监控、流量管理、网络追踪和网络安全的统计计数器。计数器用来记录数据包到达和离开的次数以及特定事件的次数,比如当网络出现坏包时。数据包的到达会使多个不同的统计计数器发生更新;但一台网络设备中的统计计数器的数量及其更新速度常常受到存储技术的限制。

格罗方德(格芯Global Foundries)最近火了,这些芯片厂商表示并不意外?

随着格罗方德收购IBM半导体业务及其先进节点工艺开发专业技术,IDM向无晶圆公司提供先进制造业务的机会正在消逝。格罗方德最近宣布的百亿美金扩张计划更是彰显了这种趋势。这里提到的产能扩张包括他们在纽约的FinFET,在德累斯顿的FD-SOI,在新加坡的CMOS,以及要在中国成都新建的CMOS和FD-SOI工厂,这意味着格罗方德绝对称得上是一

别看MCU叱咤物联网,“异构”却有难言之隐?

2016年,高通收购恩智浦、软银收购ARM公司无疑是集成电路产业界的两起重磅事件。巧合的是,这两件收购案的标的都与MCU产品有关。恩智浦继2015年收购飞思卡尔后,已成为汽车电子领域MCU的当之无愧的领军企业;而ARM则早已凭借其划时代的IP架构左右着MCU产业生态。

通过IP设计实现汽车功能安全

如今,汽车行业变革迅猛,汽车的设计、使用和销售模式都在快速演变。驾驶员安全技术、交通拥堵、环境问题及汽车作为代步工具的基本前提都影响着新一代汽车的研发。为解决这些难题,很多汽车厂商都试图强化计算能力以优化车辆控制。

更多资讯
用FPGA实现FIR滤波器IP仿真
用FPGA实现FIR滤波器IP仿真

FIR(Finite Impulse Response)滤波器,即有限脉冲响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

FPGA 国产化进程加速,安路科技能否迎来爆发?

FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它由输入/输出块、可配置逻辑块和可编程互联三部分组成,同一片FPGA,不同的编程数据,可以产生不同的电路功能,因此FPGA的使用非常灵活。

FPGA建立时间和保持时间你必须知道的
FPGA建立时间和保持时间你必须知道的

时钟是FPGA设计中最重要的信号,FPGA系统内大部分器件的动作都是在时钟的上升沿或者下降沿进行。无论是在输入,输出或是寄存器与寄存器之间,只要设计到时钟上升沿或者下降沿的采样,就会提到建立时间(setup TIme) 和保持时间(hold TIme) 。

Microchip推出全新低功耗FPGA视频和图像处理解决方案, 助力客户加速智能嵌入式视觉设计

随着基于视觉的计算密集型系统在网络边缘的集成度越来越高,现场可编程门阵列(FPGA)正迅速成为下一代设计的首选灵活平台。

基于FPGA的图像直方图实时显示
基于FPGA的图像直方图实时显示

上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。