style: 缩进调整
This commit is contained in:
parent
e095daf3c3
commit
4cc5f79399
|
@ -2,19 +2,19 @@
|
||||||
|
|
||||||
## 一、实验介绍
|
## 一、实验介绍
|
||||||
|
|
||||||
加法器是ALU(算术逻辑部件)的核心组成部分,它执行数字系统中最常见的运算——加法。减法可以看作是将被减数与取负后的减数进行加法运算。因此,加法器不仅能够执行加法,还可以同时实现减法运算。此外,通过移位相加的算法,加法器还可以实现乘法运算。因此,可以说加法器是计算机中最繁忙的部件之一。
|
加法器是 ALU(算术逻辑部件)的核心组成部分,它执行数字系统中最常见的运算——加法。减法可以看作是将被减数与取负后的减数进行加法运算。因此,加法器不仅能够执行加法,还可以同时实现减法运算。此外,通过移位相加的算法,加法器还可以实现乘法运算。因此,可以说加法器是计算机中最繁忙的部件之一。
|
||||||
|
|
||||||
本实验介绍如何使用Verilog编写全加器。
|
本实验介绍如何使用 Verilog 编写全加器。
|
||||||
|
|
||||||
## 二、实验目的
|
## 二、实验目的
|
||||||
|
|
||||||
1. 理解全加器的原理和功能。
|
1. 理解全加器的原理和功能。
|
||||||
2. 学会使用Verilog描述全加器的行为。
|
2. 学会使用 Verilog 描述全加器的行为。
|
||||||
3. 掌握Verilog仿真工具的使用,验证全加器的正确性。
|
3. 掌握 Verilog 仿真工具的使用,验证全加器的正确性。
|
||||||
|
|
||||||
## 三、实验要求
|
## 三、实验要求
|
||||||
|
|
||||||
1. 使用Verilog描述全加器的行为。
|
1. 使用 Verilog 描述全加器的行为。
|
||||||
2. 通过所有测试点。
|
2. 通过所有测试点。
|
||||||
|
|
||||||
## 四、实验步骤
|
## 四、实验步骤
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<img src="多路数据选择器.assets/框图.svg" style="zoom:150%;" />
|
<img src="多路数据选择器.assets/框图.svg" style="zoom:150%;" />
|
||||||
|
|
||||||
- `A` 、`B` 、`C` 和 `D`是输入端口,表示输入的数据。
|
- `A` 、`B` 、`C` 和 `D`是输入端口,表示输入的数据。
|
||||||
- `S` 是选择端口,用于选择输入的数据。
|
- `S` 是选择端口,用于选择输入的数据。
|
||||||
- `Y` 是输出端口,输出被选中的数据。
|
- `Y` 是输出端口,输出被选中的数据。
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
<img src="多路数据选择器.assets/真值表.png" style="zoom:;" />
|
<img src="多路数据选择器.assets/真值表.png" style="zoom:;" />
|
||||||
|
|
||||||
在S分别取0、1、2、3的时候Y分别输出A、B、C、D的值。
|
在 S 分别取 0、1、2、3 的时候 Y 分别输出 A、B、C、D 的值。
|
||||||
|
|
||||||
### 3. 顶层模块
|
### 3. 顶层模块
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ endmodule
|
||||||
|
|
||||||
在上述代码中,顶层模块名为 `Mux4`,它有四个端口:
|
在上述代码中,顶层模块名为 `Mux4`,它有四个端口:
|
||||||
|
|
||||||
- `A` 、`B` 、`C` 和 `D`是输入端口,表示输入的数据。
|
- `A` 、`B` 、`C` 和 `D`是输入端口,表示输入的数据。
|
||||||
- `S` 是选择端口,用于选择输入的数据。
|
- `S` 是选择端口,用于选择输入的数据。
|
||||||
- `Y` 是输出端口,输出被选中的数据。
|
- `Y` 是输出端口,输出被选中的数据。
|
||||||
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
题目:面向教学的计算机底层硬件系统设计与实现
|
|
||||||
|
|
||||||
毕业设计地点:校内
|
|
||||||
|
|
||||||
要求:针对教学需要,使用硬件描述语言设计基于RISC-V指令集的多级流水线处理器,使其适合数字电路与计算机组成原理的教学实验。
|
|
||||||
|
|
||||||
重点难点:硬件描述语言的应用;教学化设计;数字电路与计算机组成原理实验的连续性与贯通性。
|
|
||||||
|
|
||||||
# 指导手册框架
|
|
||||||
|
|
||||||
一、实验介绍
|
|
||||||
|
|
||||||
二、实验目的
|
|
||||||
|
|
||||||
三、实验要求
|
|
||||||
|
|
||||||
四、实验步骤
|
|
||||||
|
|
||||||
# 实验设计
|
|
||||||
|
|
||||||
#### 数字电路
|
|
||||||
|
|
||||||
- 认识Verilog
|
|
||||||
- ##### 组合逻辑电路基础实验
|
|
||||||
- 全加器
|
|
||||||
- 超前进位电路
|
|
||||||
- 加减法器
|
|
||||||
- 数据选择器
|
|
||||||
- 译码器
|
|
||||||
|
|
||||||
- 思考题:编码器
|
|
||||||
- ##### 时序逻辑电路基础实验
|
|
||||||
- 触发器
|
|
||||||
|
|
||||||
- 边沿型/电平型D触发器,门电路实现
|
|
||||||
- 思考题:其他触发器
|
|
||||||
- 寄存器实验
|
|
||||||
- 计数器
|
|
||||||
- ##### 综合设计实验
|
|
||||||
- 定时与分频实验
|
|
||||||
- 数码管实验
|
|
||||||
- 桶型移位器
|
|
||||||
- 多功能ALU设计实验
|
|
||||||
- 寄存器堆与运算器设计实验
|
|
||||||
- 取指令与指令译码实验
|
|
||||||
|
|
||||||
#### 计算机组成原理
|
|
||||||
|
|
||||||
- 认识Chisel
|
|
||||||
|
|
||||||
- 对比下Chisel和Verilog
|
|
||||||
- 设计一个简单的单周期CPU
|
|
||||||
|
|
||||||
- 只支持一些简单的、基础的、有代表性的指令,如支持跑通冒泡排序
|
|
||||||
- ##### 计算机体系结构实验
|
|
||||||
- 不考虑相关冲突的流水线CPU
|
|
||||||
- 指令相关与流水线冲突
|
|
||||||
|
|
||||||
- 介绍为什么会发生冲突
|
|
||||||
- 阻塞技术
|
|
||||||
- 前递技术
|
|
||||||
- 在流水线中添加运算类指令
|
|
||||||
|
|
||||||
- 让学生参照已经实现的指令添加一条新指令
|
|
||||||
- 在流水线中添加转移指令
|
|
||||||
- 在流水线中添加访存指令
|
|
||||||
- 例外与中断的支持
|
|
|
@ -4,4 +4,10 @@
|
||||||
|
|
||||||
## 三、实验要求
|
## 三、实验要求
|
||||||
|
|
||||||
## 四、实验步骤
|
## 四、实验步骤
|
||||||
|
|
||||||
|
### 1. 框图
|
||||||
|
|
||||||
|
### 2. 真值表
|
||||||
|
|
||||||
|
### 3. 顶层模块
|
||||||
|
|
|
@ -706,9 +706,9 @@ Verilog 的行为建模可以分为两种类型:组合逻辑行为建模和时
|
||||||
input wire sel,
|
input wire sel,
|
||||||
output wire y
|
output wire y
|
||||||
);
|
);
|
||||||
|
|
||||||
reg f; // f是寄存器类型的输出信号,在always语句块中只有reg类型可以被赋值
|
reg f; // f是寄存器类型的输出信号,在always语句块中只有reg类型可以被赋值
|
||||||
|
|
||||||
always @( * ) begin
|
always @( * ) begin
|
||||||
case (sel)
|
case (sel)
|
||||||
1'b0:
|
1'b0:
|
||||||
|
@ -719,11 +719,11 @@ Verilog 的行为建模可以分为两种类型:组合逻辑行为建模和时
|
||||||
f = 1'bx; // 默认情况下,输出为未知(高阻态)
|
f = 1'bx; // 默认情况下,输出为未知(高阻态)
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
|
|
||||||
assign y = f;
|
assign y = f;
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 时序逻辑行为建模:
|
2. 时序逻辑行为建模:
|
||||||
|
@ -738,7 +738,7 @@ Verilog 的行为建模可以分为两种类型:组合逻辑行为建模和时
|
||||||
input wire data,
|
input wire data,
|
||||||
output reg q // 也可以直接将输出定义为reg类型
|
output reg q // 也可以直接将输出定义为reg类型
|
||||||
);
|
);
|
||||||
|
|
||||||
always @(posedge clk, posedge reset) // 注意此处括号内与组合逻辑行为建模的不同
|
always @(posedge clk, posedge reset) // 注意此处括号内与组合逻辑行为建模的不同
|
||||||
begin
|
begin
|
||||||
if (reset) // 当时钟信号clk上升沿到来时,如果reset为高电平,则将输出q赋值为低电平;
|
if (reset) // 当时钟信号clk上升沿到来时,如果reset为高电平,则将输出q赋值为低电平;
|
||||||
|
@ -746,9 +746,9 @@ Verilog 的行为建模可以分为两种类型:组合逻辑行为建模和时
|
||||||
else // 否则,将输出q赋值为输入data的值。
|
else // 否则,将输出q赋值为输入data的值。
|
||||||
q <= data;
|
q <= data;
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
通过行为建模,设计人员可以更直观地描述数字电路的功能和操作,不需要关注具体的电路结构和连线细节。行为建模适用于功能验证、仿真和高层次的电路描述。
|
通过行为建模,设计人员可以更直观地描述数字电路的功能和操作,不需要关注具体的电路结构和连线细节。行为建模适用于功能验证、仿真和高层次的电路描述。
|
||||||
|
|
Loading…
Reference in New Issue