简单计算机系统综合设计(CPU)

本文详述了一位大学生使用VHDL设计简单计算机系统CPU的过程,包括指令寄存器、指令译码器、控制信号逻辑、函数发生器、移位逻辑、使能信号、指令计数器、通用寄存器组、选择器和存储器等部件的实现,重点解决了process响应、总线阻塞等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单计算机系统综合设计(CPU)

前言:作为一位来自于大学的本科生,让我最难忘记的就是这一次CPU的综合设计了。

基本部件

数字逻辑实验中我们要求完成的有以下基本部件,使用VHDL源完成编程。
0000:指令寄存器IR,
a) 模块的接口设计
控制信号:LDIR,CLK,I[7…0]
输入信号:需执行指令I[7…0] 输出信号:需执行指令out1[7…0]
b) 功能实现
根据指令寄存器IR的功能可知:
当HALT = 1 时,输出信号 x[7…0] 为高阻态;
否则,当处于时钟下降沿时,LDIR = 1时,输出信号out[7…0]为输入信号I[7…0]。
VHDL的实现如下所示:

library ieee;
use ieee.std_logic_1164.all;
entity IR is
	port (LDIR, CLK : in std_logic;
		I : in std_logic_vector(7 downto 0);
		OUT1 : out std_logic_vector(7 downto 0)
		);
end IR;

architecture behavior of IR is
	signal command: std_logic_vector(7 downto 0);
	begin
		OUT1 <= command;
		process(CLK)
			begin
				if (CLK'event and CLK = '0' and LDIR = '1') then
					command <= I;
				end if;
			end process;
end behavior;

0001:指令译码器DECODING,
a) 模块的接口设计
控制信号:EN 输入信号:需执行指令IR[7…0]
输出信号:需执行指令IR[7…0],
各项指令的控制信号:MOVA,MOVB,MOVC,ADD,SUB,OR1,NOT1,RSR,RSL,JMP,JZ,JC,IN1,OUT1,NOP,HALT
b) 功能实现
根据指令译码器的功能可知:
当EN = 1时,输入信息:需执行指令IR[7…0]对应一个指令控制信号。
指令译码器需要完成指令机器码和指令控制信号的一一对应。
VHDL的实现如下所示:

library ieee;
use ieee.std_logic_1164.all;

entity DECODING is
port(EN:in std_logic;
	 IR:in std_logic_vector(7 downto 0);
	 MOVA, MOVB, MOVC, ADD, SUB, OR1, NOT1, RSR, RSL, JMP, JZ, JC, IN1, OUT1, NOP, HALT: out std_logic);
end DECODING;

architecture behavior of DECODING is 
signal R: std_logic_vector(7 downto 0):="00000000"; 
signal signalB,signalC: std_logic;
begin    
	MOVA <= '1' when 
	IR(7 downto 4) = "1111" and (not (IR(3 downto 2) = "11")) and (not (IR(1 downto 0) = "11")) and EN = '1' else '0';
	MOVB <= '1' when 
	IR(7 downto 4) = "1111" and (IR(3 downto 2) = "11") and (not (IR(1 downto 0) = "11")) and EN = '1' else '0';
	MOVC <= '1' when 
	IR(7 downto 4) = "1111" and (not (IR(3 downto 2) = "11")) and (IR(1 downto 0) = "11") and EN = '1' else '0';
	ADD <= '1' when 
	IR(7 downto 4) = "1001" and EN = '1' else '0';
	SUB <= '1' when 
	IR(7 downto 4) = "0110" and EN = '1' else '0';
	OR1 <= '1' when 
	IR(7 downto 4) = "1011" and EN = '1' else '0';
	NOT1 <= '1' when 
	IR(7 downto 4) = "0101" and EN = '1' else '0';
	RSR <= '1' when 
	IR(7 downto 4)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值