Vhdl代码模拟

时间:2015-10-02 10:54:08

标签: vhdl modelsim

我正在尝试模拟以下代码:

entity schal is port ( SW  : in bit_vector(7 downto 0);
       LED : out bit_vector(7 downto 0)); 
end schal;


architecture BEHAVIOUR of schal is 
begin 

INOUT_PROS : process (SW)
begin 
    LED <= SW; 

end process INOUT_PROS;
end BEHAVIOUR;

我写了 do file

vsim work.schal
restart
view wave
radix hex
add wave -height 25 -radix default sim:/schal/*

force SW 01000001
run 20ns
force SW 01000000
run 20ns

这是我得到的:

enter image description here

你可以看到模拟仅影响第一位但不影响整个矢量? 任何想法我应该如何调整做文件来获得正确的模拟?

2 个答案:

答案 0 :(得分:2)

我认为您的force命令没有使用正确的语法。您正试图强制使用二进制值,但正确的方法是force SW 2#010000012#指定二进制值。

在ModelSim中,转到帮助&gt;文档&gt; PDF书架,然后打开“命令参考手册”。其中包含有关所有命令的文档,包括force

答案 1 :(得分:1)

这是一个Read-The-Fine-Manual时刻。请参阅&lt; value&gt; “命令参考手册”中“强制命令参数”部分下的参数说明。

  

字符枚举的一维数组可以强制为字符文字序列,也可以强制为基数为2,8,10或16的基数。例如,以下值对于类型的信号是等效的bit_vector(0到3):

examples

您可以注意到IEEE Std 1076-2008 15.5.3基础文字告诉我们:

  

基于文字的是以明确指定基础的形式表示的抽象文字。基数应至少为2,最多为16。

有基于VHDL标准的文字,无法用force命令表示。

还要注意问题的使用

force SW 01000001

与“命令参考手册”中的 字符文字序列 示例兼容。请参阅以下注意

  


对于VHDL中的基础数字,ModelSim将每个1或0转换为数字枚举类型的适当值。转换由pref.tcl文件中的转换表控制。如果ModelSim找不到0或1的转换,它将使用信号类型的左边界(type'left)作为该值。

还要从问题的值和波形中注意SW枚举的最右侧位置正确转换。这表明该行为与force命令&lt; value&gt;不匹配。描述。

在VHDL术语中,您正在强制使用scary_jeff的答案中演示的位字符串文字,而不是用于提供值的字符串文字。 (均为无引号)。

根据示例,字符文字序列是正确的,但不能正确翻译。您可能想知道引号是否会有所帮助 - 否则将如何强制包含前导空格的字符串类型对象的值?

作为早期的MTI Modelsim用户,模拟器最初只支持VHDL。问题是模拟器或示例。

当然,使用VHDL测试平台而不是在do文件中嵌入模拟序列。

此方法可在VHDL模拟器之间移植:

entity schal_tb is
end entity;

architecture foo of schal_tb is
    signal SW:  bit_vector(7 downto 0);
    signal LED: bit_vector(7 downto 0);
begin
DUT:
    entity work.schal
        port map (
            SW => SW,
            LED => LED
        );
STIMULUS:
    process 
    begin
        SW <= "01000001";
        wait for 20 ns;
        SW <= "01000000";
        wait for 20 ns;
        wait for 60 ns;   -- to show 100 ns on waveform
        wait;             -- suspends process permenently
    end process;
end architecture;

并给出:

schal_tb.png

还有在线VHDL Testbench大纲生成器,例如Doulos VHDL Testbench generator或此Online VHDL Testbench Template Generator