在VHDL中实现寄存器时,是否必须编写'else'语句
为了在进程外实现寄存器,我以以下方式使用在VHDL中实现寄存器时,是否必须编写'else'语句,vhdl,Vhdl,为了在进程外实现寄存器,我以以下方式使用when语句: registered_sig <= (others => '0') when (RESET = '1') else data_sig when (read_data = '1') and (rising_edge(CLK)) else registered_sig; registered_sig“0”)何时(重置='1')其他 当(读取数据='1')和(上
when
语句:
registered_sig <= (others => '0') when (RESET = '1') else
data_sig when (read_data = '1') and (rising_edge(CLK)) else
registered_sig;
registered_sig“0”)何时(重置='1')其他
当(读取数据='1')和(上升沿(CLK))else时的数据信号
注册信号;
这句话和没有最后一部分的同一句话有什么区别吗
registered_sig <= (others => '0') when (RESET = '1') else
data_sig when (read_data = '1') and (rising_edge(CLK));
registered_sig“0”)何时(重置='1')其他
数据信号(读取数据='1')和(上升沿(CLK));
推荐的HDL编码样式应用于所用的合成
合成工具,如fru1tbat和Brian所述
对于Altera和Altera,可在和中找到
有关Xilinx的信息,请参见。
Altera和Xilinx都使用process
结构显示触发器代码,但是
我无法使用条件并发信号找到任何描述
分配
如果仍然使用条件并发信号分配(当时使用),则
可能值得查看以下等效代码:
registered_sig <= (others => '0') when (RESET = '1') else
data_sig when (read_data = '1') and (rising_edge(CLK)) else
registered_sig;
小调:应该是
(其他=>'0')
,而不是(其他人你发现大多数合成工具都能正确地解释这一点吗?我从来没有这样做过。
process (RESET, data_sig, read_data, CLK, registered_sig) is
begin
if RESET = '1' then
registered_sig <= (others => '0');
elsif (read_data = '1') and (rising_edge(CLK)) then
registered_sig <= data_sig;
else
registered_sig <= registered_sig;
end if;
end process;
registered_sig <= ... else registered_sig;