verilog 带参数例化中参数问题

verilog中参数问题_百度知道
verilog中参数问题
我想用一个模块中的一个输出去改变另一个模块中的参数值,有实现的办法吗?
我有更好的答案
不可以parameter是静态的,在模块instantiation的时候就确定了,之后是不能改变的module的output是动态的,不同的仿真时间,output的值是变化的verilog是不允许用动态的变量控制静态的parameter的
采纳率:94%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。陷阱15:变量位宽与赋值位宽的不一致
本文所属图书&>&
这本书可以帮助工程师写出更好的Verilog SystemVerilog的设计和验证代码,书中阐述了使用Verilog和SystemVerilog语言时超过100个常见的编码错误;每一个例子都详细说明了错误的症状、错误的语言规则以及正确的编&&
陷阱:当我将一个4bit的负数赋值到一个8bit的有符号变量时,并没有出现符号扩展。
摘要:在赋值中的位宽不匹配可能会导致0扩展或符号扩展,这依赖于表达式的类型,依赖于赋值语句的右侧。
为变量赋整数值时,需遵守两个扩展或裁断规则
第一,根据陷阱14中所讨论的规则,数值根据指定的位宽做位宽扩展或位宽截断。
第二,如本陷阱所讨论的,赋值操作法则被应用。
该陷阱讨论的是整数的赋值(如a=5),在陷阱46的赋值法则和陷阱中,在赋值语句的右边存在操作符。
对于整数赋值的赋值操作有:
当一个赋值语句的左侧表达式的bit要比右边整数的bit小时,则右侧数值的最高有效位截断。
当赋值语句左侧的bit数大于右侧时,则:
如果右侧整数是无符号数,它将零扩展到相应位数。
如果右侧是有符号数,它将有符号扩展到相应位数。
例外:如果赋值语句右侧是一个未明确位宽的高阻整型(如抌z),或未知值(如抌x),则该值将分别通过z或x做扩展。不管是有符号还是无符号。
这些规则可能猛得一看和陷阱14中所讲述的规则相同,在那里讲述的是整型位宽与实际的数值并不匹配的情况。但是在这两个规则中,有一个微妙但重要的差异,即整型扩展从不会做符号扩展,但是赋值语句有可能会做符号扩展。
再来专门讨论这个陷阱。表达式中赋值语句右边的符号扩展仅仅发生在当右边是有符号的时。表达式左边的符号对符号扩展是否发生不会产生影响。
考虑如下例子:
这些简单的例子阐述了两类陷阱:
分配到一个有符号变量并不会引起符号扩展。符号扩展仅仅发生在表达式右侧是有符号的情况下。
赋值到一个无符号变量将会导致符号扩展。符号扩展仅仅发生在表达式右侧是有符号的情况下。
这些相同的赋值扩展规则应用适用于当一个赋值中右侧被执行。然而,不论是零扩展还是符号扩展,都依赖于操作类型。这些操作规则暗含在陷阱45中。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书好记性不如烂笔头
Verilog中的参数例化和重定义
.v文件中的parameter参数例化方式
//定义参数的方式
module exam_prj
#(parameter WIDTH=8)
input [WIDTH-1:0] dataa,
input [WIDTH-1:0] datab,
output reg [WIDTH:0] result
parameter Conuter_Top = 4'd9;
//例化参数的方式
.WIDTH(8),
.Conuter_Top(4'd5)
exam_prj_inst
.dataa(dataa),
.datab(datab),
.result(sum)
.v文件中的parameter参数重定义方式
parameter CNT_MAX = 25'd24_999_999;
.CNT_MAX(25'd24_999)
counter_inst(
.Rst_n(Rst_n),
.led(LED[0])
PLL_LED PLL_LED(
.Clk(Clk),
.Rst_n(Rst_n),
defparam PLL_LED.counter_inst.CNT_MAX = 249;
@(posedge (prj_inst.CNT_MAX == 25'd189))
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长![转载]Verilog实例化时的参数传递
收藏&verilog&parameter在调用DesignWare时候,通常会有dw01_add
#(a_width,bwidth)这一类语法出现,当时很疑惑这是为什么,现在才查到它的出处。怀疑是不是自己基本功不够扎实。查到的用法如下
1、module_name #( parameter1, parameter2) inst_name(
port_map);
2、module_name #( .parameter_name(para_value),
.parameter_name(para_value)) inst_name (port map);
用#方法和port map的写法差不多
module multiplier (a, b, product);
& & parameter a_width = 8,
b_width = 8;
& & localparam product_width =
a_width+b_
& & input [a_width-1:0]
& & input [b_width-1:0]
output[product_width-1:0]
& & &if((a_width
& 8) || (b_width & 8))
& &CLA_multiplier #(a_width,
b_width) u1 (a, b, product);
& & WALLACE_multiplier #(a_width,
b_width) &u1 (a, b, product);
&endgenerate
这个用法着实实用。如果有一个模块经常被调用,那么这种方法能让verilog的层次精简很多。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
Verilog例化时的参数传递
摘要:【原文】http://www.fpganotes.com/post/32/类似VHDL的Generic语句,Verilog也可以在例化时传递参数例子见http://sutherland-hdl.com/online_verilog_ref_guide/vlog_ref_top.html#8.0%20Module%20Instances传递的参数是子模块中定义的parameter。传递的方法:1、module_name#(parameter1,parameter2)inst_n
【原文】http://www.fpganotes.com/post/32/
类似VHDL的Generic语句,Verilog也可以在例化时传递参数例子见http://sutherland-hdl.com/online_verilog_ref_guide/vlog_ref_top.html#8.0%20Module%20Instances传递的参数是子模块中定义的parameter。传递的方法:1、module_name #( parameter1, parameter2) inst_name( port_map);2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);用#方法和port map的写法差不多3、defparamdefparam heirarchy_path.parameter_name =这种方法与例化分开,参数需要写绝对路径来指定
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
Verilog例化时的参数传递相关信息,包括
的信息,所有Verilog例化时的参数传递相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International

我要回帖

更多关于 verilog 参数定义 的文章

 

随机推荐