原创 ”综合“之Verilog HDL语句

2009-3-24 14:20 4595 6 7 分类: FPGA/CPLD

连续赋值语句的综合:从赋值语句右边提取出逻辑,用于驱动赋值语句左边的net


过程赋值语句的综合:从赋值语句右边提取出的逻辑,用于驱动赋值语句左边的reg型变量。注意:initia语句仅用于仿真,不综合。只有在always中才能被综合。


建议组合逻辑用阻塞语句,时序逻辑用非阻塞语句,任何延时控制(如#5)都被综合工具器忽略。一个模块中同一个变量不能既有阻塞赋值,又有非阻塞赋值。


always语句的综合


1对于组合逻辑,事件列表必须包括所有always语句中引用的变量,否则会造成综合的结果与设计功能不匹配。


2临时变量可以不用在事件列表中列出。


if语句的综合


特别要注意综合出锁存器。always中,某个变量没有在所有的条件分支中被赋值,就会综合出锁存器。


case语句综合


和if语句一样,不完整的case分支语句也会导致锁存器的综合。


避免方法:


1)在case语句前,对要赋值的变量赋予初值


always @ (state or a or b) begin


q =0;


case(state)


 3'b000: q =  A & B;


……


2)使用default分支语句


3)使用综合指令,具体用法在case关键字行的注释中插入”synthesis full_case


并行CASE语句


通常情况下case语句和if语句一样会综合出代有优先权解码的硬件电路,从上大侠选项优先级逐渐降低。但如果设计者知道case语句中的所有项是互斥的,这时候就使用”parallel_case"综合指令。


always @(key)


 case(key)     //synthesis parallel_case


    4'b0001: a  = 0;


 endcase


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户201249 2009-3-31 15:44

您好: 在焦急之中看到您的博客,我在写关于inout端口的verilog程序上除了问题,希望您在百忙之中能够指点 module dual_port(d_in,en,clk,d_out,data_inout); //模块定义 input [15:0] d_in; //输入端口定义 input en,clk; //输入时钟等端口定义 output [15:0] d_out;//输出端口定义 inout [15:0] data_inout;//双向端口定义 reg [15:0] d_out;//在always 块内被赋值的变量必须为reg 类型 reg [15:0] reg_data;//映像寄存器变量 assign data_inout = (!en)? reg_data :16'bZ; always@ ( posedge clk) begin if(!en) reg_data<= d_in; else d_out <= data_inout; end endmodule 这是我写的程序 在modelsim中前防没有任何问题 可是再用quartus 布线之后的方针就reg_data和d_inout根本就只是x,是不是我没有注意到布线中的细节要求呢,或者需要怎么设置,在线等您的回答。
相关推荐阅读
用户180508 2011-08-08 22:29
运算放大器指标
1.输入失调电压VIO(input offset voltage) :输入电压为零时,将输出电压除以电压增益,再加上负号,即为折算到输入端的失调电压。亦即使输出电压为零时在输入端所加的补偿电压。VIO...
用户180508 2011-02-18 22:21
UDE(u盘超级加密2008)失效解决
UDE伪装成唐诗三百首的加密软件,在忘记密码资料还没有丢失,操作系统改变时加密文件没有显示在加密区内。此时文件也没有丢失。 采用R-Studio(注册后)可以探测到隐藏的文件,并恢复。 本人遇到的隐藏...
用户180508 2011-02-01 12:35
Altea公司FPGA开发软件安装指南与注意
Quartus II安装点击Setup,和安装其他应用程序一样。可以根据自己的需要决定安装的大小。比如可以选择是否安装某种型号的器件 QuartusII8.0 破解补丁1将sys_cpt.dll覆盖掉...
用户180508 2011-02-01 12:02
Altea公司FPGA开发软件安装指南与注意
Quartus II安装点击Setup,和安装其他应用程序一样。可以根据自己的需要决定安装的大小。比如可以选择是否安装某种型号的器件QuartusII8.0 破解补丁1将sys_cpt.dll覆盖掉安...
用户180508 2011-02-01 12:01
Altea公司FPGA开发软件安装指南与注意
Quartus II安装点击Setup,和安装其他应用程序一样。可以根据自己的需要决定安装的大小。比如可以选择是否安装某种型号的器件QuartusII8.0 破解补丁1将sys_cpt.dll覆盖掉安...
用户180508 2010-12-30 10:18
VC安装错误解决
安装VC++6.0时候总是说我的安装程序无法创建一个DCOM用户来注册? 右击我的电脑-》管理-》本地用户和组-》用户-》删除VSA Sever Account项 再安装,成功!...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条