您的当前位置:首页正文

FPGA学习笔记

2024-02-15 来源:步旅网
1赋值语句的使用:连续赋值只能用于线网型的变量赋值,形式如下 assign out1=a&b;

过程赋值只能用于给寄存器型变量赋值,分为阻塞赋值“=”和非阻塞赋值“<=”,应注意的的地方如下:

1)在使用always 块描述组合逻辑时使用阻塞赋值(电平敏感),在使用always块描述时序逻辑时使用非阻塞赋值(边沿敏感);

2)不要在同一个always块内同时使用阻塞赋值和非阻塞赋值;

3)不要在不同的always快内为同一个变量赋值; 4)在赋值语句前不要使用0延时;

2 时序电路包括组合逻辑电路和存储电路,在设计中也应将组合逻辑电路和存储电路分开描述,尽量不要同时写到一个always中,Verlog HDL 中通过定义寄存器变量为存储单元建模,对寄存器变量赋值只能使用过程赋值,即将赋值语句放在always块中,而不能使用连续赋值(用assign 赋值),对于边沿触发的存储单元,应该使用非阻塞赋值,(用<=赋值)对于电平触发的存储单元应使用阻塞赋值(用=赋值),当组合逻辑和存储电路写到同一个always块中是,应使用非阻塞赋值。

3 用流水线改善电路性能,所谓流水线就是指在多级组合逻辑之间插入寄存器用来暂存中间结果。

4 使用同步复位可以抑制复位信号的毛刺,采用同步复位只要不在时钟沿附近出现毛刺就不会影响电路,实现的方法是在寄存器的输入端加入组合逻辑,如果复位信号有效,则使组合逻辑的输出值为复位后的寄存器的值。在使用同步复位时,不能只注意到复位信号不能在时钟有效沿生效,而忽略复位信号失效时刻的限制,如果复位信号在时钟沿附近失效也可能造成组合逻辑的输出信号不能满足寄存器的建立时间的要求,从而导致电路出现错误。使用异步复位时必须注意复位信号是稳定的。 在VerilogHD代码写法上,同步复位信号不出现在always的敏感列表中,而异步复位信号出现在always的敏感列表中。注意使用异步复位时,还注意对于复位信号使用 边沿触发的方式,不要使用电平敏感事件。 5再设计有限状态机电路时应该先画状态图,然后再开始编写代码,画出状态图可以使有限状态机的机构变得更清晰。 编写有限状态机程序应该遵循的的规则:

1) 在复杂的数字系统中经常包括多个有限状态机,一

个主状态机和若干个从状态机,在代码中各个有限个状态机应该分开描述。

2) 在描述不同的状态时,不要直接使用数值,而是利

用parameter将数值定义为有意的符号名,`define虽然也可以完成同样的功能,但与parameter不同,`define定义的是全局变量,作用域是从`define语句

开始直达所有程序代码结束。而parameter的作用域是在模块中,因而在不同的模块中可以安全地使用同名的状态。

3) 将产生状态的组合逻辑电路和用于保存状态的寄

存器分别写在不同的always中,产生输出结果的组合逻辑也单独写到一个always块中。

因篇幅问题不能全部显示,请点此查看更多更全内容