




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Verilog HDL语言中always敏感信号对比分析 张稳稳 (西安邮电大学电子工程学院,陕西西安710121) 摘要:为了高效地利用VerilogHDL语言中always行为建模语句设计集成电路,采用比较和举例论证的方法,总结出always语句中事件控制敏感信号对设计仿真的影响。always语句中敏感信号分为时钟边沿信号和电平信号,对于敏感信号为时钟边沿信号,仿真结果直观简单;但是对于敏感信号为电平信号,敏感信号必须是所有的输入和判断语句的信号,否则仿真结果不确定。 关键词:veriloghdl;always语句;敏感信号;时钟边沿信号;时钟电平信号 :TN911.6?34;TP312:A:1004?373X(xx)15?0032?03 :xx?02?26 基金项目:陕西省教育厅专项科研基金(xxJK0626);西安邮电大学青年教师科研基金资助项目(101?1215;101?0473) 0引言 硬件描述语言(HardwareDescriptionLanguage,HDL)是一种用形式化方法来描述数字电路和系统的语言。VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的,两种HDL均为IEEE标准。但是Veriolg语言的很多规定与C语言相似,代码简单,有大量支持仿真的语句与可综合语句,对于初学者设计简单的数字系统,更容易学习和掌握1。所以,VerilogHDL语言在大规模集成电路和现场可编程门阵列设计中得到了广泛的应用2?4。 在集成电路设计中,Verilog语言中的always语句经常用来描述时序逻辑电路和组合电路。always语句是一种结构化的过程语句,是行为级建模的基本语句,它的语句格式为:always(敏感事件列表),敏感事件可以是时钟边沿信号也可以是电平信号,分别对应时序逻辑电路和组合逻辑电路5。敏感事件列表中可以包含多个敏感事件,只要所列举的任意一种情况发生,都将激活事件控制,各个敏感事件之间是“或”的关系;但不可以同时包括电平敏感事件和边沿敏感事件,也不可以同时包括同一个信号的上升沿和下降沿,这两个事件可以合并为一个电平敏感事件。而且,按照语法要求,在always块中只能给寄存器变量赋值。 在实际应用中,敏感信号为时钟边沿信号,仿真综合结果一般正确。但是当敏感信号为电平信号时,情况就会变得复杂,仿真综合结果会变得不确定。文献6对always敏感信号与仿真结果的这种不确定性问题也进行了肯定,但是并没有进一步的分析。本文对always语句中的事件控制敏感信号出现的各种情况进行对比探讨,发掘always语句中敏感信号分别为时钟边沿信号和电平信号的差异,并通过仿真图形去验证。 1敏感信号为时钟边沿信号 Always语句中的敏感信号如果为时钟边沿敏感事件,一般用来表示时序逻辑电路,时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与之前的输入有关。从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化7。这里以经常用到的D触发器为例,其仿真图如图1所示。 上面所述的D触发器,赋值语句为q=a|b,等式右端为wire型变量。再举个多敏感信号的时序逻辑电路的例子,比如带有清零端的16分频,其仿真图如图2所示。 只要在always块的敏感信号表中定义有效的时钟沿,敏感词的作用立竿见影,然后使用过程赋值语句对信号赋值,就可以实现时序逻辑电路。 2敏感信号为电平信号 always语句中的敏感信号如果为电平敏感事件,一般用来表示组合逻辑电路,组合逻辑电路的特点是输出信号只是当前时刻输入信号的函数,与其他时刻的输入状态无关,无存储电路。从电路行为上看,其特征就是输出信号的变化仅仅与输入信号的电平有关,不涉及对信号跳变沿的处理8。always电平敏感信号列表,必须将所有的输入信号和条件判断信号都列在信号列表中。有时不完整的信号列表会造成不同的仿真和综合结果,因此需要保证敏感信号的完备性。在实际的PLD器件开发中,EDA工具都会默认将所有的输入信号和条件判断语句作为触发信号,增减敏感信号列表中的信号不会对最终的执行结果产生影响,因此如果期望在设计中通过修改敏感信号来得到不同的逻辑,是不能实现的,这也是经常犯错的地方,这是因为仿真器在工作时不会自动补充敏感信号表。如果缺少信号,则无法触发和该信号相关的仿真进程,也就得不到正确的仿真结果。这里以一个2?4译码器为例,其仿真图如图3所示。 如果想用一个敏感信号来控制逻辑变化,比如当enable信号的电平发生变化时,再去译码,程序如下,仿真图如图4所示。 由图4可以看出,这并不是所需的结果,这就是前面所说的,系统自动将所有的输入作为了敏感信号。 因此,在应用always块语句表述组合逻辑电路时,一定要注意敏感信号的完整性,要求触发为所有内部用到的信号,可以用always(*),此时,综合工具和仿真工具会自动将所有的敏感信号自动加入敏感信号列表。 前面已经提到过always敏感信号不可以同时包括同一个信号的上升沿和下降沿,这两个事件可以合并为一个电平敏感事件。在设计中,一些初学的设计者经常在时钟的上升沿和下降沿都进行计数器加1,以为这样能实现倍频,仿真结果如图5所示。 从图5中可以发现并没有出现想要的结果,而是呈现出了高阻态。将直接加1运算改为直接的赋值语句,程序如下,仿真结果如图6所示。 从图6中可以看出,t8这个变量存储的是最后一次赋值,这时当always敏感信号为电平信号,系统默认为组合逻辑电路,虽然将信号定义为reg型,但只是为了满足always模块中的信号必须定义为reg型的语法要求,最终的实现结果中并没有寄存器,在图5中出现高阻态,因为t8=t8+1是计数器,是时序逻辑电路。 3结论 本文对Verilog语言中always块语句中的敏感信号进行了对比探讨,得到如下结论: (1)如果敏感信号是时钟边沿触发信号,表示的是时序逻辑电路,而且在描述时序电路的always块中的reg型信号都会被综合成寄存器,而且时序逻辑的敏感信号列表只需要加入所用的时钟触发沿即可。 (2)如果敏感信号是电平触发信号,表示的是组合逻辑电路,这里一定要注意敏感信号的完整性,即所有的输入和判断语句的信号都要加为敏感信号,否则,得不到想要的设计结果。 (3)在组合逻辑电路描述中,将信号定义为reg型,只是为了满足always模块中的信号必须定义为reg型的语法要求,最终实现结果中并没有寄存器。 参考文献 1PALNITTKARS.VerilogHDL数字设计与综合M.夏宇闻,胡燕祥,刁岚松,译.2版.北京:电子工业出版社,xx. 2孙继荣,李志蜀,王莉,等.程序切片技术在软件测试中的应用J.计算机应用研究,xx,24(5):210?213. 3宁佐林,邱智亮.PCI桥接IPCore的VerilogHDL实现J.电子科技,xx,19(4):43?46. 4赵东,耿卫东,吴春亚,等.用FPGA实现OLED灰度级显示J.光电子?激光,xx,13(6):554?558. 5罗杰.VerilogHDL与数字ASIC设计基础M.武汉:华中科技大学出版社,xx 6PADMANABHANTR,SUNDARIBBT.DesignthroughVerilogHDLM.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司融资借款合同范例
- 2024年初级审计师考试智力题试题及答案
- 酒店管理中的职业生涯规划与发展路径探索试题及答案
- 使用天津市商品房合同范例
- 公司英文合同范例
- 光伏购置原材料合同范例
- 中餐入股合同范例
- 中外餐饮合同范例
- 仓库转让合同范例
- 乡间管道安装合同范例
- 浙江省宁波三锋教研联盟2023-2024学年高二上学期期中联考英语试题 (解析版)
- JGJT301-2013 大型塔式起重机混凝土基础工程技术规程
- 国开《Windows网络操作系统管理》形考任务4-配置故障转移群集服务实训
- 成人社区获得性肺炎诊断与治疗指南解读
- 汽车改色备案流程委托书范本
- 西汉马王堆T型帛画
- 非遗传承人申请范本
- 《隋书刑法志》所见隋初修律
- 社会主义建设道路初步探索的意义和经验教训
- 【辅助投篮机器人设计7600字(论文)】
- 四年级下册数学说课稿-5 解决问题的策略(1)-苏教版
评论
0/150
提交评论