(1)リスト1は,表1の真理値表の HA に対するテストベンチであ (2) リスト 2 は,図 2 の signal cs, rd の波形を生成するテスト る。シミュレーション結果を図1に示せ。 ベンチ記述の一部である。リスト 2 を完成させなさい。 5ns 10ns library ieee; use ieee.std_logic_1164.all; 40ns 50ns cs entity TESTBENCH is end TESTBENCH; rd architecture TB of TESTBENCH is component HA is port( A, B : in std_logic; C, S : out std_logic ); end component; signal a, b, c, s : std_logic; begin CUT : HA port map (A=>a, B=>b, C,=>c, S=>s); process begin A => ’0’; B=>’0’; wait for 10 ns; B => ’1’; wait for 10 ns; A => ’1’; B=>’0’; wait for 10 ns; B => ’1’; wait for 10 ns; A => ’0’; B=>’0’; wait; end process; end TB; リスト 1 図2 【解】 architecture TB of TESTBENCH is component EX1 is port( CS, RD : in std_logic; D : out std_logic_vector(7 downto 0) ); end component; signal cs, rd : std_logic; signal d : std_logic_vector(7 downto 0); begin CUT : EX1 port map (CS=>cs, RD=>rd, D=>d); process begin cs <= ’1’; rd <= ’1’; wait for 5 ns; cs <= ’0’; wait for 5 ns; rd <= ’0’; wait for 30 ns; rd <= ’1’; wait for 10 ns; cs <= ’1’; wait; HA のテストベンチ記述 表1 HA の真理値表 入力 A 0 0 1 1 end process; end RTL; 出力 B 0 1 0 1 C 0 0 0 1 end process; end TB; S 0 1 1 0 【解】 A B C S Z 0 10 20 30 40 50 図1 シミュレーション結果 以降このまま t 60 t[ns] (3)下記の同期式 12 進カウンタについて設問に答えなさい。 (4)下記の 4 ビット左シフトレジスタについて設問に答えなさい 【条件】 【条件】 ① entity 名 counter12 ② 入力ポート CLK, nRST ③ 出力ポート COUNT, CO ①entity 名 Shift_Reg ②入力ポート CLK, nRST ③出力ポート SR 【動作】 【動作】 ①nRST=’0’で COUNT の値が初期化させる。また CO は0。 ②CLK の立ち上がりで、COUNT の値が1増える。 ③COUNT の初期値は”0000” ④CO は COUNT の値が最大値になると、1CLK 時間だけ、’1’ になる。 ①nRST=’0’で SR の値が初期化させる。 ②SR の初期値は”0001”とする。 ③CLK の立ち上がりで、SR の値が 1 ビット左シフトする。 ただし、SR の最上位ビットは最下位ビットになる。 (1)entity 部を書きなさい。 (1)entity 部を書きなさい。 【解】 【解】 enitity counter12 is port ( CLK, nRST : in std_logic; COUNT : out std_logic_vector(3 downto 0); CO : out std_logic ); end counter12; enitity Shift_Reg is port ( CLK, nRST : in std_logic; SR : out std_logic_vector(3 downto 0) ); end Shift_Reg; (2)architecture 部を書きなさい。 (2)architecture 部を書きなさい。 【解】 【解】 architecture RTL of counter12 is signal cnt : std_logic_vector(3 downto 0); begin process(CLK, nRST) begin if nRST = ’0’ then cnt <= ”0000”; elsif CLK’event and CLK=’1’ if cnt = ”1011” then cnt <= ”0000”; CO <= ’1’; else cnt <= cnt + ”0001”; CO <= ’0’; end if; end if; end process; COUNT <= cnt; end RTL; architecture RTL Shift_Reg is signal reg : std_logic_vector(3 downto 0); begin process(CLK, nRST) begin then if nRST = ’0’ then reg <= ”0001”; elsif CLK’event and CLK=’1’ then reg <= reg(2 downto 0) & reg(3); end if; end process; SR <= reg; end RTL;
© Copyright 2024 ExpyDoc