|  | 
 
| 
有谁知道用Modelsim仿真怎么把代码中的中间寄存器信号加进去呢? 在激励文件中该怎样修改呀?
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  比如说用quartus仿真这一点就非常明显  我的意思就是说用modelsim仿真能不能像quartus仿真那样很方便地反寄存器信号加进去呢?
 源代码(对时钟进行同步):
 LIBRARY IEEE;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.STD_LOGIC_UNSIGNED.ALL;
 USE IEEE.STD_LOGIC_ARITH.ALL;
 ENTITY CLK_TB IS
 PORT(CLK_10M: IN STD_LOGIC;
 CLK_20M: IN STD_LOGIC;
 CLK_50M: IN STD_LOGIC;
 DATA_A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
 DATA_B : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
 DATA_OUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
 DATB_OUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
 );
 END ENTITY CLK_TB;
 ARCHITECTURE ART OF CLK_TB IS
 SIGNAL A_1:STD_LOGIC;
 SIGNAL A_2:STD_LOGIC;
 SIGNAL A_3:STD_LOGIC;
 SIGNAL B_1:STD_LOGIC;
 SIGNAL B_2:STD_LOGIC;
 SIGNAL B_3:STD_LOGIC;
 SIGNAL A_OUT:STD_LOGIC_VECTOR(3 DOWNTO 0);
 SIGNAL B_OUT:STD_LOGIC_VECTOR(3 DOWNTO 0);
 BEGIN
 PROCESS(CLK_50M,CLK_10M,A_1,A_2,A_3)
 BEGIN
 IF CLK_50M'EVENT AND CLK_50M='1' THEN
 A_1<=CLK_10M;
 A_2<=A_1;
 A_3<=(NOT A_2) AND A_1;
 END IF;
 END PROCESS;
 
 PROCESS(CLK_50M,CLK_20M,B_1,B_2,B_3)
 BEGIN
 IF CLK_50M'EVENT AND CLK_50M='1' THEN
 B_1<=CLK_20M;
 B_2<=B_1;
 B_3<=(NOT B_2) AND B_1;
 END IF;
 END PROCESS;
 
 PROCESS(CLK_50M,A_3,DATA_A,A_OUT)
 BEGIN
 IF CLK_50M'EVENT AND CLK_50M='1' THEN
 IF A_3='1' THEN
 A_OUT<=DATA_A;
 ELSE
 A_OUT<=A_OUT;
 END IF;
 END IF;
 END PROCESS;
 
 PROCESS(CLK_50M,B_3,DATA_B,B_OUT)
 BEGIN
 IF CLK_50M'EVENT AND CLK_50M='1' THEN
 IF B_3='1' THEN
 B_OUT<=DATA_B;
 ELSE
 B_OUT<=B_OUT;
 END IF;
 END IF;
 END PROCESS;
 
 DATA_OUT<=A_OUT;
 DATB_OUT<=B_OUT;
 
 END ARCHITECTURE ART;
 
 
 Testbench文件代码:
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;
 USE IEEE.STD_LOGIC_UNSIGNED.ALL;
 ENTITY CLK_TB_vhd_tst IS
 END CLK_TB_vhd_tst;
 ARCHITECTURE CLK_TB_arch OF CLK_TB_vhd_tst IS
 -- constants
 -- signals
 CONSTANT NEWCLK:TIME:=20 NS;
 SIGNAL TEST_CLK_10M : STD_LOGIC;
 SIGNAL TEST_CLK_20M : STD_LOGIC;
 SIGNAL TEST_CLK_50M : STD_LOGIC;
 SIGNAL TEST_DATA_A : STD_LOGIC_VECTOR(3 downto 0);
 SIGNAL TEST_DATA_B : STD_LOGIC_VECTOR(3 downto 0);
 SIGNAL TEST_DATA_OUT : STD_LOGIC_VECTOR(3 downto 0);
 SIGNAL TEST_DATB_OUT : STD_LOGIC_VECTOR(3 downto 0);
 COMPONENT CLK_TB
 PORT (
 CLK_10M : in STD_LOGIC;
 CLK_20M : in STD_LOGIC;
 CLK_50M : in STD_LOGIC;
 DATA_A : in STD_LOGIC_VECTOR(3 downto 0);
 DATA_B : in STD_LOGIC_VECTOR(3 downto 0);
 DATA_OUT : out STD_LOGIC_VECTOR(3 downto 0);
 DATB_OUT : out STD_LOGIC_VECTOR(3 downto 0) );
 END COMPONENT;
 BEGIN
 i1 : CLK_TB PORT MAP (
 -- list connections between master ports and signals
 CLK_10M => TEST_CLK_10M,
 CLK_20M => TEST_CLK_20M,
 CLK_50M => TEST_CLK_50M,
 DATA_A => TEST_DATA_A,
 DATA_B => TEST_DATA_B,
 DATA_OUT => TEST_DATA_OUT,
 DATB_OUT => TEST_DATB_OUT
 );
 CLK_50M : PROCESS
 -- variable declarations
 BEGIN
 TEST_CLK_50M<='0';
 WAIT FOR NEWCLK/2;
 TEST_CLK_50M<='1';
 WAIT FOR NEWCLK/2;
 END PROCESS CLK_50M;
 CLK_10M : PROCESS
 -- variable declarations
 BEGIN
 TEST_CLK_10M<='0';
 WAIT FOR NEWCLK*5;
 TEST_CLK_10M<='1';
 WAIT FOR NEWCLK*5;
 END PROCESS CLK_10M;
 CLK_20M : PROCESS
 -- variable declarations
 BEGIN
 TEST_CLK_20M<='0';
 WAIT FOR (NEWCLK*5)/2;
 TEST_CLK_20M<='1';
 WAIT FOR (NEWCLK*5)/2;
 END PROCESS CLK_20M;
 
 DATA_A : PROCESS
 -- optional sensitivity list
 -- (        )
 -- variable declarations
 BEGIN
 TEST_DATA_A<="0000";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0001";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0010";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0011";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0100";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0101";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0110";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="0111";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1000";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1001";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1010";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1011";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1100";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1101";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1110";
 WAIT FOR NEWCLK*5;
 TEST_DATA_A<="1111";
 WAIT FOR NEWCLK*5;
 END PROCESS DATA_A;
 
 DATA_B : PROCESS
 -- optional sensitivity list
 -- (        )
 -- variable declarations
 BEGIN
 TEST_DATA_B<="0000";
 WAIT FOR NEWCLK*5;
 
 TEST_DATA_B<="0010";
 WAIT FOR NEWCLK*5;
 
 TEST_DATA_B<="0100";
 WAIT FOR NEWCLK*5;
 TEST_DATA_B<="0110";
 WAIT FOR NEWCLK*5;
 TEST_DATA_B<="1000";
 WAIT FOR NEWCLK*5;
 
 TEST_DATA_B<="1010";
 WAIT FOR NEWCLK*5;
 
 TEST_DATA_B<="1100";
 WAIT FOR NEWCLK*5;
 
 TEST_DATA_B<="1110";
 WAIT FOR NEWCLK*5;
 
 END PROCESS DATA_B;
 
 END CLK_TB_arch;
 以上代码是正确的,不过在仿真时只能看到源代码中的端口信号,而现在我想看到源代码其中的中间寄存器信号,该怎么办呢?
 请问大家用modelsim怎么观察源代码中的A_1,A_2,A_3,B_1,B_2,B_3中间寄存器信号?在testbench中该如何修改呢?
 | 
 |