LogiSim中的16位CPU设计

16位CPU设计 Logisim 被呈现。带有数据路径和控制单元的16位简单CPU如下所示:

cpu logisim
图1. 16位简单CPU的框图

 的设计过程 中央处理器 在Logisim中:

1.多路复用器: 

多路复用器对数

图2.多路复用器的屏幕截图

在这种设计中,多路复用器模块将从控制单元获取10位选择信号,并输出10个16位数据输入之一。设计该模块时,我们可以看到多路复用器将传输N 如果N,则将16位数据输入到输出 10位选择信号的位有效“HIGH”其他位为零。注意,应该像这样控制来自控制器单元的选择信号。 10位选择信号中只有一个位是高电平。例如,如果我们希望多路复用器输出4 输入时,选择信号将为0x008 = 0000001000。
因此,我们使用10个多路复用器2到1,在第一级控制单元的10位输入中输入1位选择信号。 模块。如果1位选择信号为高电平,则每个多路复用器将输出输入数据,否则将输出零。然后在2nd stage, we use a OR gate to OR all 日 e outputs of 10 multiplexers. Since 日 ere is just 1 bit in 日 e 10-bit select signal is asserted 高, we will get 日 e expected output at 日 e output of 日 e OR gate.
总线输出  = Dout when DinOut is asserted 高.
总线输出  = R0in…R7in when R0out….R7out is asserted 高
总线输出  = Gin when Gout is asserted 高


 2.     Addsub:
cpu logisim

图3. Addsub模块的屏幕截图

该模块将根据来自控制器单元的addsub信号执行ADD和SUB操作。 MUX将在以下选择操作的结果:
Addsub = 0:执行添加操作。
Addsub = 1:执行SUB操作。

 3. 控制单元和2位计数器:
 一种。     2位计数器:



cpu logisim

图4. 2位计数器模块的屏幕截图


2位计数器将根据时钟的上升沿而上升,并且如果run = 0或Resetn = 0,则清零。因此,我们使用2个T触发器并相互连接,如图4和OR所示。门用于产生清除信号,以清除计数器。 
关于T型触发器的简介:
Logisim中的CPU设计

功能:如果T输入为高电平,则每当时钟输入为上升沿时,T触发器都会更改状态(“切换”)。如果T输入为低电平,则触发器保持先前的值。此行为由特征来描述 方程
Qnext = T xor Q
To make it as a counter, 日 e T input is asserted 高. It becomes Q下一页=不是Q。我们在下图中连接2个T-FF:

Logisim中的CPU设计
图5.使用TFF的2位向上计数器
运作方式

Logisim中的CPU设计
表1. 2位向上计数器u的操作唱TFF

b。     控制单元:


cpu logisim
表2.控制 信号

我们将根据上表对控制单元进行签名。可以看出,在第一个周期中,IRin将被置为高电平,而在下一个周期中,控制信号将跟随该表。周期数将等于2位计数器的值,因此在下图中,我们将获得计数器的输出作为多路复用器的选择信号,作为控制单元的最后一级。

控制单元16位CPU Logisim

图6。 控制单元最后阶段的屏幕截图

同样,上图所示的MUX 2至1用于在将Resetn设置为低电平时清除所有控制信号。
此外,从表中可以看出,在每个周期中,我们需要4个MUX到1来选择4个不同指令的控制信号,因此我们在3个周期中使用3个MUX 4到1,这3个MUX 4到1的每个输入取决于IR值从8 to 6。详情如下所示:

Mux 4比1 Logisim

图7。 3 MUX 4 to 1的第1部分的屏幕截图

Logisim中的CPU设计

图8。 3 MUX 4 to 1的第2部分的屏幕截图

如我们所见,我们使用2解码器3至8来解码寄存器地址。第一个是将3位RX解码为8位控制信号,另一个是将3位RY解码为8位控制信号。
最后,我们按照表2的说明和周期数为3 MUX 4至1提供正确的输入。详见图7和8。

4. 16位 Logisim中的简单CPU


我们连接所有模块在s之前和寄存器中实现电路文件simple_CPU.circ并使用Logisim进行了测试。

Logisim中的CPU设计

图9.最终电路

cpu logisim

图10.包含计数器模块的控制单元电路

通过更改各种Din或指令并观察总线,寄存器文件和控制信号的值,成功在Logisim上测试了16位CPU电路的最终电路。 

Logisim Circuit文件下载: 

中央处理器 Logisim文件

您可能还会喜欢:
D触发器的VHDL代码
D触发器的Verilog代码
比较器的Verilog代码
FIFO存储器的Verilog代码
FIFO存储器的VHDL代码
用于16位单周期MIPS微处理器的Verilog代码
Verilog中的可编程数字延迟计时器
Verilog HDL中的基本数字逻辑组件
VHDL中的FIR滤波器
什么是FPGA?为什么要使用FPGA?
VHDL中的完整8位微控制器
用于32位无符号除法器的Verilog代码
Verilog中的定点矩阵乘法[完整代码和教程]
提前进位乘法器的Verilog代码
微控制器的Verilog代码(第3部分)
LogiSim中的16位处理器CPU设计和实现
使用Verilog HDL在FPGA上进行图像处理
参数化的N位开关尾环计数器 
使用两相自计时系统的4x4乘法器的Verilog代码
FPGA上数字时钟的VHDL代码
使用有限状态机(FSM)的停车系统的Verilog代码
交通信号灯控制器的Verilog代码
FPGA上的闹钟的Verilog代码
8位比较器的VHDL代码
使用VHDL和Xilinx核发生器的矩阵乘法设计
将文本文件加载到FPGA中的两种方法 
FPGA Xilinx Spartan-6上的车牌许可证识别Verilog / Matlab实现

什么是FPGA编程? FPGA与软件编程
面向学生的推荐且价格合理的Xilinx FPGA板
面向学生的推荐且价格合理的Altera FPGA板

FPGA Verilog VHDL课程

没意见:

发表评论

热门FPGA项目