VHDL赋初值问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VHDL赋初值问题相关的知识,希望对你有一定的参考价值。

VHDL的output可以赋初值吗?
如果可以,代码怎么写

参考技术A 可以的,代码的话直接写:=“xxxx”-vector或者:=‘x’,直接写的output后面就行 参考技术B 信号没有存储功能,不可以赋值,只有signal和variable可以赋值

verilog HDL状态机 赋初值问题

最近要做数字时钟,要用LCD显示,参考的两个程序里面都有状态机,一个是调整时间用的,一个是LCD显示用的,现在被我放在一起了,该怎么处理才可以?可不可以在几个CASE后面分别赋值?

两个always可以独立写。也可以写在一起,只要触发条件相同。
但是要注意一点,如果独立写,在2个alway结构中,不能对同一个变量赋值,不然就会出现错误。这就是verilog不能当做软件使用的一点体现,原因在于数字电路的输出不能随意连在一起。
欢迎追问~
参考技术A 分成两个always模块就可以了。两个always分别写两个状态机。
当然,如果两个状态机是一样的,可以弄成一个追问

这样可以吗?reg[3:0] state1=4'b1001,state2=4'b0000;
parameter warmup=4'b0000,
...... countime=4'b1001;
两个状态机分开使用

追答

1.建议不要reg直接赋初值,你可以全部用parameter来。也可以直接定义两个reg型的变量。状态变化就将这个reg型变量加1就行了。也可以全部用parameter,这样对状态的作用的分辨有帮助。
2.放在两个进程中,只要不在两个进程中驱动一个信号,对它赋值就可以了。如果要对同一个reg信号(作为模块的output)赋值,那么肯定需要设置两个中间寄存器来对数据进行选择。
其他应该没什么问题。其实就是把两个。v文件的输入输出结合到一起,然后把各自的除了IO以外的包括进程 reg wire声明以及其他assign赋值语句搬移到一个模块中就可以了。要注意的仅仅是没有重复的reg复制,没有重复的声明以及此模块可能需要的模块例化。

参考技术B 可以用一个或多个always,赋初值放在一个if (reset)中就可以啦追问

这样可以吗?reg[3:0] state1=4'b1001,state2=4'b0000;
parameter warmup=4'b0000,
...... countime=4'b1001;
两个状态机分开使用

追答

parameter 放在always外就可以啦

以上是关于VHDL赋初值问题的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么给Table第一列赋初值呢

verilog HDL状态机 赋初值问题

在单片机编程时那些unsigned int是否可以不赋初值,都默认初值是0

c语言字符串赋初值

java所有变量定义时都要赋初值吗????

.为啥c语言里有的变量要赋初值,有的变量不用赋。