问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Verilog中#能被综合么,综合后有什么含义么?

发布网友 发布时间:2022-05-12 05:41

我来回答

4个回答

热心网友 时间:2023-11-22 18:39

为求全面完整,叙述比较长,希望你能耐心看完,起码我都耐心打完了,呵呵~
先扼要答题:
(1)#1是延时语句,不能被综合,只能用于仿真。
至于延时多少则取决于你所定义的时钟,例如:
assign #1 A_xor_wire = eq0 ^ eq1; // `timescale 1ns/100ps
就表示该异或门延时为1ns,也就是说从输入端信号变化到输出端体现变化需要1ns的时间。(其中1ns表示延时单位,100ps表示时间精度,即编译器所能接受的最小仿真时间粒度。 )
(2)ud_cnt #(SIZE, ID) cnt (.clk(clk),....) 是带参数值的模块引用,模块实例语句自身包含有新的参数值。你没有贴出完整代码,我还是抄书上例子给你讲,例如:

HA #(5,2) Hal(New, NewB, NewC);
//第1个值5赋给参数AND_DELAY,该参数在模块HA中说明。
//第2个值5赋给参数XOR_DELAY,该参数在模块HA中说明。

mole HA(A,B,S,C);
input A,B;
output S,C;
parameter AND_DELAY =1, XOR_DELAY =2;
assign #XOR_DELAY S = A^B;
assign #AND_DELAY C=A&B;
endmole

//模块实例语句
HA h2 (.A(Cin), .S(Sum), .B(S1), .C(C2)); //通过端口与信号的名字关联

仔细对比看看,想想,我想你应该明白了吧?

再扩展深化:
实际上,电路对不同的信号跳变表现出的延时往往并不一致,这些延时模型包括上升沿延时(输出变为1)、下降沿延时(输出变为0)、关闭延时(输出变成Z,高阻态)和输出变成X的延时。比如:
assign #(1,2) A_xor_wire = eq0 ^ eq1;
assign #(1,2,3) A_xor_wire = eq0 ^ eq1;
第一句表示上升延时为1ns,下降延时为2ns,关闭延时和传递到X的延时取两者中最小的,即1ns。
第二句表示上升延时为1ns,下降延时为2ns,关闭延时为3ns,传递到X的延时取1、2、3中最小的,即1ns。
在一些电路模型中,延时分为最大、典型和最小3种情况。连续赋值语句中的延时也可以采用min:typ:max的格式来表示,如:
assign #(4:5:6, 3:4:5) A_xor_wire = eq0 ^eq1;
表示上升延时的min:typ:max为4:5:6,下降延时的min:typ:max为3:4:5。

你代码中类似“RESETn <= #1 1'b0;”的语句属于“在非阻塞赋值语句的右式(RHS)中增加延时”,可以精确的模拟电路中的传导延时,是一种有意义的、健康的代码风格。以
always (a or b) begin
SUM <= #5 a+b
end
为例,其执行过程是这样的:
首先计算a+b的值,然后将“相加结果赋予sum”的更新事件调度到T+5ns以后执行,此后,a和b上的任何变化都将导致always的再次执行,也就是说a和b上的任何变化都不会被忽略,而总是在5ns以后体现在SUM上。
此外,不推荐在阻塞赋值语句中增加延时(#5 SUM=a+b; 和 SUM = #5 a+b;),也不推荐在非阻塞语句的左式中增加延时(#5 SUM <= a+b;)。详见《设计与验证:Verilog HDL》的8.5.4节。
而在连续赋值语句中,只有一种延时语法是合法的,如下:
assign #5 B=~A;
这种延时精确地模拟了电路中的惯性延时。A信号上任何小于5ns的变化都将被过滤掉,而不会反映到B信号上。

参考资料:《设计与验证:Verilog HDL》《Verilog_HDL硬件描述语言.J.Bhasker著.徐振林等译》

热心网友 时间:2023-11-22 18:39

# 是用来模拟电路延迟的。因为在RTL仿真的时候,如果没有#的延迟,信号的变化是瞬间就完成的,没有任何可以测量到的延迟。我们知道,实际电路是会有延迟的。有人会采用#延迟在RTL里模拟这样的电路延迟。这样的延迟是设计人员手工设置的。一旦进行综合,这样的延迟是没有对应的电路单元。也就是说,在综合中没有任何意义。

ud_cnt #(SIZE, ID) cnt (.clk(clk),....) 是实例化一个mole。mole的名字是ud_cnt。该mole定义了两个parameter。在实例化的时候,#(SIZE,ID), 分别用SIZE和ID来从新设定这两个parameter。.clk(clk)等等就是普通的端口映射。

热心网友 时间:2023-11-22 18:39

对于第一个问题,是延时语句,verilog语句在综合的时候,综合工具会自动忽略的。
对于第二个语句,是将参数传递的过程,将参数传递给parameter

热心网友 时间:2023-11-22 18:40

不能综合,被忽略 了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在思科的CCNA,CCNE,CCIP的考证费分别是多少啊,通过率怎样 长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 verilog综合的最后输出是什么 Verilog 中什么是综合? 综合的常用工具有哪些? 综合和仿真对模块的编写风格的要求有什么不同? verilog hdl中什么是综合?什么是模拟? 对verilog的 仿真和综合有什么区别,具体一点 软件体系结构风险分析有哪些基本步骤 什么是verilog综合, verilog综合是什么意思 verilog中的“综合”究竟是什么含义? 求图片:班级纪念册的封面 自已画的 功能原理方案包括哪些基本内容 一个java项目下的src中的各个.java文件的关系,以及一些特点。求详细说明。 哪个牌子有彩色牛仔裤? 昨天听到一首歌,请问是什么?英文歌曲,女的唱的。 相爱两年.女方家里不同意我们在一起~!重谢 如何提高记忆力,让脑子再灵起来,恢复大脑机能,恢复身体求大神帮助 怎么了,昨晚梦见前男友,内心当中很想和他在一起,可是我却害怕,梦见他的家人骂我,我好难过,也无奈。 医保不报销的范围可以有哪些 做梦去男朋友家里他妈对我很不好骂我是狐狸精 他爸还是酒鬼占我便宜? 有哪些看完以后让人极度舒适的综艺视频? 现在有啥好看的电影呢 为什么verilog语言中综合只支持次数确定的循环 Verilog综合的问题 为啥有for语句的Verilog程序不能综合 verilog硬件描述语言中综合与模块的关系是什么 verilog中的函数和任务能综合吗 电磁辐射大吗 请问有电磁辐射吗? 电磁辐射对人有害吗 电磁辐射会危害身体健康吗 拉布拉多什么时间交配最好 拉布拉多,月经后,在什么时间内可以交配? 电磁辐射到底对人体有什么危害 拉布拉多犬要几岁才可以交配? 屡教不改的同义词 屡教不改同义词 屡教不改相近的成语 屡教不改的近义词 屡教不改相似的成语 K/3总账期末调汇时提示“汇兑损益科目不能核算外币”? 豆逗你怎么样