rom.vhd

来自「用VHDL编写的简单的CPU程序」· VHDL 代码 · 共 57 行

VHD
57
字号
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity rom is
port
( 
	addr:in std_logic_vector(7 downto 0);
	ce:in std_logic;
	dataout:out std_logic_vector(15 downto 0)
);
end entity rom;

architecture behave of rom is
begin
	--instructions of a program to sum from 1 to 100
	dataout <= X"02A0" when addr=X"00" and ce='0' else --LOAD A0
			   X"01A4" when addr=X"01" and ce='0' else --STORE A4
			   X"02A2" when addr=X"02" and ce='0' else --LOAD A2
			   X"01A3" when addr=X"03" and ce='0' else --STORE A3
			   X"02A4" when addr=X"04" and ce='0' else --LOOP: LOAD A4
			   X"03A3" when addr=X"05" and ce='0' else --ADD A3
			   X"01A4" when addr=X"06" and ce='0' else --STORE A4
			   X"02A3" when addr=X"07" and ce='0' else --LOAD A3
			   X"04A1" when addr=X"08" and ce='0' else --SUB A1
			   X"01A3" when addr=X"09" and ce='0' else --STORE A3
			   X"0504" when addr=X"0A" and ce='0' else --JMPGEZ LOOP
			-- some instructions for testing purpose
			   X"0CA4" when addr=X"0B" and ce='0' else --NOT A4

			   --X"02A5" when addr=X"0C" and ce='0' else --LOAD A5
			   --X"08A6" when addr=X"0D" and ce='0' else --MPY A6
			   --X"01A7" when addr=X"0E" and ce='0' else --STORE A7

			   X"0D00" when addr=X"0C" and ce='0' else --SHIFTR
			   X"0E00" when addr=X"0D" and ce='0' else --SHIFTL
			   X"1D00" when addr=X"0E" and ce='0' else --ROTR
			   X"1D00" when addr=X"0F" and ce='0' else --ROTR
			   X"1D00" when addr=X"10" and ce='0' else --ROTR
			   X"1D00" when addr=X"11" and ce='0' else --ROTR
		 	   X"1D00" when addr=X"12" and ce='0' else --ROTR
			   X"1E00" when addr=X"13" and ce='0' else --ROTL
			   X"1E00" when addr=X"14" and ce='0' else --ROTL
			   X"1E00" when addr=X"15" and ce='0' else --ROTL
			   X"1E00" when addr=X"16" and ce='0' else --ROTL
			   X"1E00" when addr=X"17" and ce='0' else --ROTL



			   X"0700" when addr=X"18" and ce='0' else --HALT
			   X"0000" when addr=X"A0" and ce='0' else --[A0] = X0000
			   X"0001" when addr=X"A1" and ce='0' else --[A1] = X0001
			   X"0064" when addr=X"A2" and ce='0' else --[A2] = X0064
			   X"FFFF";
end behave;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?