我知道,它不允许有比较X或Z在一个综合的VHDL代码.但它是否允许编写一个代码,在其中我将信号与信号进行比较0或1检测Z并暂停操作?代码如下:
process(clk)
begin
if rising_edge(clk ) then
if(rst = '0') then
reg_0 <= (others => 'Z');
elsif(btf_start = '1') then
reg_0 <= "ZZ" & frame_in;
elsif(t_btf_finish = '1') then
reg_0 <= (others => 'Z');
end if;
end if;
end process;
process(clk)
begin
if rising_edge(clk) then
if(reg_0(0) = '0' or reg_0(0) = '1') then
-- DO SOME OPERATIONS
else
-- DO NOTHING
end if;
end if;
end process;
Run Code Online (Sandbox Code Playgroud) 使用组合逻辑在VHDL/Verilog中驱动模块的输出是一种很好的设计实践吗?
是否可以直接在组合块中使用模块输入,并使用该组合块的输出来驱动同一模块中的另一个顺序块?
我在将字符串值传递给SystemVerilog中的泛型参数时遇到问题.模块实例化如下所示.内存将一些值写入FILE_OUT,这是一个通用参数.我需要为不同的内存实例生成两个不同的文件 - "file1.txt"和"file2.txt".
最初我尝试使用`define指令:
if(ch_ID==1)
`define FILE_OUT file1.txt
else
`define FILE_OUT file2.txt
Run Code Online (Sandbox Code Playgroud)
但是,由于`define创建了全局宏,因此模拟总是给出输出"file2.txt"
然后我尝试将文件名作为参数传递
if(ch_ID==1)
parameter FILE_OUT= "file1.txt"
else
parameter FILE_OUT= "file2.txt"
memory #(.FILE_OUT (FILE_OUT)) mem
Run Code Online (Sandbox Code Playgroud)
这给了我错误 - "FILE_OUT"应该是一个常数值".
SV不支持字符串值作为参数吗?如果没有,为什么我在使用时接受字符串值`define?
有人可以帮我解决这个问题吗?
