- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1)所有综合工具都支持的结构:
always,assign ,begin ,end,case,wire ,tri ,supply0 ,supply1 ,reg,integer ,
default ,for ,function ,and,nand,or,nor,xor ,xnor,buf ,not ,bufif0 ,
bufif1 ,notif0 ,notif1 ,if ,inout ,input ,instantitation ,module,negedge,
posedge,operators ,output ,parameter 。
2)所有综合工具都不支持的结构:
time ,defparam,$finish ,fork ,join ,initial ,delays ,UDP,wait 。
3)有些工具支持有些工具不支持的结构:
casex,casez,wand,triand ,wor,trior ,real ,disable ,forever ,arrays ,
memories,repeat ,task ,while 。
建立可综合模型的原则
要保证 Verilog HDL 赋值语句的可综合性,在建模时应注意以下要点:
1)不使用 initial 。
2)不使用#10。
3)不使用循环次数不确定的循环语句,如 forever 、while 等。
4)不使用用户自定义原语( UDP元件)。
5)尽量使用同步方式设计电路。
6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议
采用行为语句来完成设计。
7)用 always 过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。
8)所有的内部寄存器都应该能够被复位, 在使用 FPGA实现设计时, 应尽量使用
器件的全局复位端作为系统总的复位。
9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建
模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要
同时用阻塞赋值和非阻塞赋值。
10)不能在一个以上的 always 过程块中对同一个变量赋值。而对同一个赋值对
象不能既使用阻塞式赋值,又使用非阻塞式赋值。
11)如果不打算把变量推导成锁存器, 那么必须在 if 语句或 case 语句的所有条
件分支中都对变量明确地赋值。
12)避免混合使用上升沿和下降沿触发的触发器。
13)同一个变量的赋值不能受多个时钟控制, 也不能受两种不同的时钟条件 (或
者不同的时钟沿)控制。
14)避免在 case 语句的分支项中使用 x 值或 z 值。
不可综合 verilog 语句
1、initial
只能在 test bench 中使用,不能综合。(我用 ISE9.1 综合时,有的简单的 initial
也可以综合,不知道为什么)
2、events
event 在同步 test bench 时更有用,不能综合。
3、real
不支持 real 数据类型的综合。
4、time
不支持 time 数据类型的综合。
5、force 和 release
不支持 force 和 release 的综合。
6、assign 和deassign
不支持对 reg 数据类型的 assign 或 deassign 进行综合, 支持对 wire 数据类型
的 assign 或 deassign 进行综合。
7、fork join
不可综合,可以使用非块语句达到同样的效果。
8、primitives
支持门级原语的综合,不支持非门级原语的综合。
9、table
不支持 UDP和 table 的综合。
10、敏感列表里同时带有 posedge 和 negedge
如:always @(posedge clk or negedge clk) begin...end
这个 always 块不可综合。
11、同一个 reg 变量被多个 always 块驱动
12、延时
以#开头的延时不可综合成硬件电路延时,综合工具会忽略所有延时代码,但不
会报错。
如:a=#10 b;
这里的#10 是用于仿真时的延时,在综合的时候综合工具会忽略它。也就是说,
在综合的时候上式等同于 a=b;
13、与 X、Z 的比较
可能会有人喜欢在条件表达式中把数据和 X(或 Z) 进行比较,殊不知这是不可综
合的,综合工具同样会忽略。所以要确保信号只有两个状态: 0 或 1。
如:
1 module synthesis_compare_xz (a,b);
2 output a;
3 input b;
4 reg a;
5
6 always @ (b)
7 begin
8 if ((b == 1bz) || (b == 1bx)) begin
9 a = 1;
10 end else be
您可能关注的文档
最近下载
- 2024全国建材行业职工助推高质量发展主题竞赛题库大全-中(多选题汇总).pdf VIP
- Pumpkin Tool v.1.4中文指导手册-零维化学动力学仿真反应路径分析.docx VIP
- 宠物与人类健康PPT.ppt VIP
- 体育经济学知到课后答案智慧树章节测试答案2025年春西安体育学院.docx VIP
- 水泥混凝土路面施工方案(精品).docx VIP
- 浸矿对离子型稀土矿体结构影响的试验研究及其应用.doc VIP
- 【Green Fashion Society - PZ Academy】2024纺织服装行业企业ESG研究报告.pdf VIP
- 拟提拔干部考察材料.docx VIP
- 20S517- 排水管道出水口.pdf VIP
- 7.《神奇瑞兽》第2课课件 人美2024版七年级上册.pptx
文档评论(0)