FPGA/CPLD不同于ASIC,里面的逻辑单元都是预制好的,是通过编程的方式确定组合逻辑或时序逻辑的具体行为。对寄存器来讲,其上电的时候必然要有一个确定的值。当这个值是0的时候,我们称之为复位;当这个值为1的时候,我们称之为置位。
在Verilog或VHDL中,寄存器的标准描述方式是这样的:
always@(posedge clock or negedge reset_n)begin
if (!reset_n)
reg_val <= 1'b0; //0代表复位,1代表置位
else
reg_val <= `actual_value;
对FPGA/CPLD的初学者来说,会有几点困惑:
1.很多时候,给寄存器的复位或置位信号在上电的时候不一定必然有效,那这个时候,寄存器的上电初值是0还是1呢?
2.如果在寄存器的描述中,没有复位和置位的描述,寄存器上电的初值是什么呢?
3.如果我有一个这样的寄存器,在整个芯片的工作过程中,是不会进行任何复位或置位操作的,但我有希望这个寄存器在上电的时候能有一个确定的值,该怎么做?
大家想一下,我们明天解答
硬禾小帮手 -硬件工程师的设计助手
硬禾学堂 -精英工程师的在线学习平台