CPU Design: Thanh Ghi Bộ đếm Chương Trình PC (Program Counter)

Thực hiện một bộ đếm chương trình cho vi xử lý.

Bảng chân lý của thanh ghi bộ đếm chương trình PC

PCclr PCld PCincr CLK PC_in PC_out
‘1’ X X X X 0
‘0’ 1 X PC_in
‘0’ ‘0’ ‘1’ X PC_out + 1
‘0’ ‘0’ ‘0’ X PC_out

Mã nguồn VHDL thực hiện một thanh ghi bộ đếm chương trình PC (Program Counter) dùng trong các bộ vi lý. — program_counter.vhd library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use WORK.MICROPROCESSOR_LIB.ALL;

— Uncomment the following library declaration if using — arithmetic functions with Signed or Unsigned values –use IEEE.NUMERIC_STD.ALL;

— Uncomment the following library declaration if instantiating — any Xilinx leaf cells in this code. –library UNISIM; –use UNISIM.VComponents.all;

entity program_counter is     Port ( clk : in STD_LOGIC;            PCclr : in STD_LOGIC;            PCincr : in STD_LOGIC;            PCld : in STD_LOGIC;            PC_in : in STD_LOGIC_VECTOR (DATA_WIDTH – 1 downto 0);            PC_out : out STD_LOGIC_VECTOR (DATA_WIDTH – 1 downto 0)); end program_counter;

architecture program_counter of program_counter is signal PC_reg: STD_LOGIC_VECTOR (DATA_WIDTH – 1 downto 0); begin     process(clk)     begin        if PCclr = ‘1’ then                 PC_reg <= (others => ‘0’);        elsif clk’event and clk = ‘1’ then             if PCld = ‘1’ then                 PC_reg <= PC_in;             elsif PCincr = ‘1’ then                 PC_reg <= PC_reg + 1;             end if;         end if;     end process;     PC_out <= PC_reg;        end program_counter;

Từ khóa » Thanh Ghi đếm Chương Trình