verilog中有谁用过用parameter定义的常数做赋值语句的位宽限制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog中有谁用过用parameter定义的常数做赋值语句的位宽限制相关的知识,希望对你有一定的参考价值。

比如
parameter SIZE = 10;
reg [SIZE-1:0] cnt;
cnt <= SIZE'b00_0000_0000;

参考技术A parameter用来定义常数。
可以用来定义状态
比如
parameter idle=4'b0000;
parameter s1=4'b0001;
…………………………
…………………………
然后case(state)
idle:………………
s1:………………
这样比较方便不用每次都把具体的数字写出来,相当于一个代号。
参考技术B parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。
状态机的定义可以用parameter 定义,但是不推荐使用`define 宏定义的方式,因为'define 宏定义在编译时自动替换整个设计中所定义的宏,而parameter 仅仅定义模块内部的参数,定义的参数不会与模块外的其他状态机混淆。例如一个工程里面有两个module 各包含一个FSM,如果设计时都有IDLE 这一名称的状态,如果使用'define 宏定义就会混淆起来,如果使用parameter 则不会造成任何不良影响

你这样使用只能对该文件或模块有效,其他的不可以的,我个人觉得只要在该模块中使用,是用parameter是没有问题的追问

这里的parameter貌似编译通不过,
但如果是`define SIZE 10
再进行初始化
cnt <= `SIZE'b00_0000_0000;
这样却可以。我想问的是初始化中为什么能使用parameter?

追答

这个基本上都是`define SIZE 10
而parameter一般是这样用的,都是与状态机联系在一起的,我还没见过有谁用parameter SIZE=10;然后用于cnt <= `SIZE'b00_0000_0000;
一般都是状态的转换时用,parameter IDLE=0x001;之类的

本回答被提问者采纳

有谁用过STC90系列的单片机,2k的RAM该怎么用,我添加了stc90.h头文件,还是说我定义的DATA SEGMENT过大

我原来用的STC8952单片机,但需要1K的RAM进行大量数据变换,就打算换个STC9052,有2KRAM+256,应该够用了。STC90.H的头文件也添加了,但我定义数组时,还是说我的DATA SEGMENT过大,我定义的是1024字节的,应该够用啊,是不是差什么头文件

我用过STC5A60S2和STC12C5608虽然其上面有超过256B的RAM,但超过256B以外的部分,应看作外部存储器,定义变量时需用xdata 来修饰,定义内部高128B的内存变量需
idata来修饰
其中xdata 的定义与单片机头文件无关,不管你的单片机有没有那么多的外部存储器,都可以定义,编译都不报错,当然如果真是没有的话执行会出错
参考技术A 用xdata修饰变量,就能使用2k ram了,不信你看汇编,这些ram要用movx指令访问。本回答被提问者采纳

以上是关于verilog中有谁用过用parameter定义的常数做赋值语句的位宽限制的主要内容,如果未能解决你的问题,请参考以下文章

有谁用过STC90系列的单片机,2k的RAM该怎么用,我添加了stc90.h头文件,还是说我定义的DATA SEGMENT过大

随机起名生成器,有谁用过哪个呢?

FaceBook SDK for Unity 有谁用过吗,请问pc端程

EXPDP 的QUERY参数,有谁用过的

有谁用过CTEX的编辑器WinEdt 6.0的,请教一个问题:

有谁用过pdfobject,网页打开PDF文件,有些问题需要帮忙!