单片机的Verilog代码(第1部分-规范)

在这个项目中 Verilog代码 为一个 微控制器 被呈现。在实施之前,本部分介绍了微控制器的指令集架构。 (Part-2Part-3)


微控制器的Verilog代码

指令集架构:


每个指令为12位。编码有3种类型的指令,如下所示:

  • M型 :一个操作数是累加器(有时被忽略),另一个操作数来自数据存储器;结果可以存储到累加器或数据存储器条目(与第二个操作数相同的条目)中。
  • 我输入: 一个操作数是累加器,另一个操作数是在指令中编码的立即数;结果存储到累加器中。
  • S型: 特殊指令,不需要操作数。 (例如,NOP)



指令编码空间如下表所示。



代码空间
(二进制)
代码空间
(十六进制)
类型
指令数
注意
0000_0000_0000-0000_1111_1111
000-0FF
特别说明 (S type)
256
目前只有NOP
已使用,255个空闲插槽
0001_0000_0000-0001_1111_1111
100-1FF
无条件跳
(我输入)
1
0010_0000_0000-0011_1111_1111
200-3FF
ALU说明
(M型)
32
16条指令,2个目的地选择
0100_0000_0000-0111_1111_1111
400-7FF
有条件的跳跃
(我输入)
4
JZ,JC,JS,JC
1000_0000_0000-1111_1111_1111
800-FFF
ALU说明
(我输入)
8
目前已使用7次,免费1次
插槽



这些指令可以按功能分为4类。

1. ALU指令:使用ALU计算结果;

2.无条件分支:GOTO指令;

3.条件分支:JZ,JC,JS,JO指令;

4.特殊说明:NOP。

M型指示


M型指令的一般格式如下所示。



微控制器的Verilog代码



下表包含每个M类型指令的详细信息。注意“aaaa”编码数据存储器的4位地址,并且“d”该位表示结果的目的地,即如果d = 1,则将结果写入Acc,否则将结果写入与操作数相同的存储位置

注意所有的M类型指令都是ALU指令。


微控制器的Verilog代码

微控制器的Verilog代码

微控制器verilog

微控制器的Verilog代码


评论:

1.对于循环移位,仅旋转存储器条目中的操作数,即不涉及标志。例如,如果8’b1000_0000左移循环1位,变为8’b0000_0001,并且不影响任何标志。

2.对于逻辑移位指令,总是填充0,并且C标志设置为移出的最后一位。例如,如果8’b1000_0000逻辑左移1位,变为8’b0000_0000,并且C =1。另一个示例,如果8’b0000_0100逻辑右移3位,变为8’b0000_0000,并且C =1。如果没有移出任何位,则Z标志和C标志不受影响。

3.对于算术右移指令,将填充MSB,并将C标志设置为移出的最后一位。例如,如果8’b1000_0001算术右移1位,变为8’b1100_0000,并且C =1。另一个示例,如果8’b0000_0100算术右移3位,变为8’b0000_0000,并且C =1。如果没有移出任何位,则Z标志和C标志不受影响。

我输入指令

M型指令的一般格式如下所示。

微控制器的Verilog代码

下表包含每个M类型指令的详细信息。
请注意,我键入的指令包含无条件分支,条件分支和ALU指令。

微控制器的Verilog代码
微控制器的Verilog代码

S型说明

S型指令的一般格式如下所示。
微控制器的Verilog代码
只有一种S类型指令,即NOP指令。
微控制器的Verilog代码

样品测试程序

完成MCU的硬件实现后,您需要编写测试平台并加载指令以通过仿真验证设计。以下是一些验证MCU的测试程序。

Test1:程序加载,累加器和内存加载,GOTO

微控制器的Verilog代码

Test2:加减法(M型)

微控制器的Verilog代码

Test3:逻辑运算(M型)

微控制器的Verilog代码

Test4:加,减,逻辑运算(I型)

微控制器的Verilog代码

第3部分将是整个微控制器的Verilog代码。
2. FIFO存储器的Verilog代码
3. 用于16位单周期MIPS处理器的Verilog代码
4. Verilog HDL中的可编程数字延迟计时器
5. 用于数字电路中基本逻辑组件的Verilog代码
6. 用于32位无符号除法器的Verilog代码
7. 用于定点矩阵乘法的Verilog代码
8. Verilog HDL中的车牌许可证识别
9. 提前进位乘法器的Verilog代码
10。  微处理器的Verilog代码
11。  4x4乘法器的Verilog代码
12  停车场系统的Verilog代码
13  使用Verilog HDL在FPGA上进行图像处理
14。  如何使用Verilog HDL将文本文件加载到FPGA中
15  交通信号灯控制器的Verilog代码
16。  FPGA上的闹钟的Verilog代码
17。  比较器设计的Verilog代码
18岁  D触发器的Verilog代码
19  Full Adder的Verilog代码
20  带testbench的计数器的Verilog代码
21  16位RISC处理器的Verilog代码
22  用于在FPGA上反跳按钮的Verilog代码
23。  如何为双向/输入端口编写Verilog Testbench
28。  解码器的Verilog代码
29。  复用器的Verilog代码
FPGA Verilog VHDL课程

没意见:

发表评论

热门FPGA项目