使用Verilog语言进行FPGA设计的总结

使用Verilog语言进行FPGA设计的总结

ID:39573907

大小:44.00 KB

页数:5页

时间:2019-07-06

使用Verilog语言进行FPGA设计的总结_第1页
使用Verilog语言进行FPGA设计的总结_第2页
使用Verilog语言进行FPGA设计的总结_第3页
使用Verilog语言进行FPGA设计的总结_第4页
使用Verilog语言进行FPGA设计的总结_第5页
资源描述:

《使用Verilog语言进行FPGA设计的总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用Verilog语言进行FPGA设计的总结1.在使用case或casex结构进行同步状态机构建时,最后一定要有default状态,在这个状态中主要设计的是纠错程序,这个非常重要,通过这个状态可以把状态机因状态位错误而进入无效或错误的状态中拉回来,或跳出这次操作强制进入下一次操作的初始状态。2.在使用else-elseif……-else结构时,各个条件之间必须完全是明确地互斥,任何两条件在任何时候都必须不能同时满足。这个很重要,此重要性,虽在仿真阶段没什么大问题,但当综合成门电路以后在现实的硬件上进行运行时,就会暴露出很多缺陷,影响稳定性问题以及兼容性问题。3.①在进

2、行同步时序逻辑设计时,对由其他非主时钟信号沿触发的事件,采用信号沿跟踪寄存器,来及时判断沿的发生,当然这样会产生误差,最大会有一个主时钟周期;②判断沿发生的另一种方法是,使用主时钟发生两个一个周期相同的时钟信号,第二个时钟要落后于第一个时钟一个周期,当第一个时钟为高而第一个时钟为低时,说明在此之前第一个时钟有一个上升沿,第二种方法依然会有一个主时钟周期的误差。4.在把测试模块包括在内的顶层模块的编写中,需要使用“include”来把各个子模块包含进来(被包含的文件名要写完全路径),不需要有输入输出端口列表,也不需要在模块中使用input和output进行声明,但在模块

3、中,必须对需要引用的下层模块的输入输出变量进行声明,不管输入还是输出变量都声明成wire类型,如果不声明则均默认成位宽为1位的变量;在不包括测试模块的顶层模块中,要有输入输出列表,把所有子模块的对外输入输出在列表中体现,并且使用input和output进行声明,其中output也必须默认成wire类型的,而子模块间的输入输出变量使用wire进行一下声明就可以了,但必须要有。5.在同步状态机设计中,要在前一状态为下一状态的关键变量进行赋值,以使在进入下一状态时,获得稳定的条件。6.在同步状态机设计中,一定要在必要的状态中设计一个判断条件,以便当发生异常时,能及时跳出这个

4、状态,重新开始,防止发生状态机死机现象。7.在状态机中调用task时,使用一个标志寄存器在主状态机中和task状态机中来回推拉,以使二者工作时衔接紧密。8.切记千万不可在主状态机和从状态机中同时对某一变量赋值,否则综合出来的电路会有问题。9.不能对同一个变量同时地进行输入和输出操作,否则此数据会不准确,影响整个系统的性能;10.为功能模块编写测试模块时,在模块头不需要使用include引用原模块,直接进行实例化就可以了。否则,在ISE中新建一个项目的时候,不能够直接把测试文件加在原功能模块的下面,且后仿真不会正确,因为ISE会认为这种层次关系是错的,它默认的是,被in

5、clude引用的是底层模块,而此模块本身为顶层模块;11.除法运算不可综合;12.必须确保声明的每一个寄存器变量位都能用到,不能有空闲位,否则在综合时会有Warning,例如,声明了temp[8:0]的寄存器变量,但在所有用到temp的地方最多也就用了8位,这时在综合时就会产生Warning,称最高位没有相连或此变量没有初始化而为常量;13.在使用assign语句进行连续赋值时,类似“assignc=a=b=1;”的语句是错误的,正确的应该是:“assignc=1,b=1,a=1;”;1.在进行后仿真时,若逻辑与预期的设计不一致,有两种办法来进行调试,一是,降低时钟频

6、率;二是,修改状态机,再增加一个时钟周期产生数据使能信号,这就有可能消除由于时钟过快引起的触发器输入端由延迟和冒险竞争造成的不稳定,从而使逻辑正确;2.冒险和竞争一般都是由组合逻辑和路径延迟引起的,为了很好地避免冒险竞争,在设计中采用同步时序逻辑设计。同步逻辑设计的主旨就是,利用上一个时钟沿为下一个时钟沿的触发创造稳定可靠的条件,所有的输入输出信号至少有一个时钟周期的时间来稳定,具体一点说,所有被赋的值在上一时钟沿前就已经保存在寄存器中,这些信号有足够的时间传送到被赋值的寄存器的数据端口,当时钟沿到来时它们都已经稳定,所以存入的寄存器的数值是可靠的,但这需要一个前提,

7、即下一个状态所使用的组合逻辑电路信号的延迟与时钟到各触发器的时间的差值必须小于一个时钟周期的宽度;3.在使用case(x,z)……endcase结构语句时,若两个或两个以上的可选择状态值,可以是相同的处理,这样就可以将其简写成:Casex(state)2’b00,2’b01,2’b10:begin---------------------------------------------------------------end2’b11:-------------------------------Default:------------------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。