### 电子科技大学计算机组成原理实验课1-实验5:Verilog时序逻辑设计
#### 实验概述
本次实验是电子科技大学计算机组成原理课程中的一个重要环节,主要目标是通过实际操作来掌握时序逻辑电路的设计方法,特别是使用Verilog硬件描述语言进行设计与仿真的过程。实验分为五个主要部分,包括边沿D触发器74x74、4位通用移位寄存器74x194、3位最大序列长度线性反馈移位寄存器(LFSR)、4位同步计数器74x163以及基于74x163设计的1Hz数字信号发生器。
#### 实验目的
1. **理解并掌握边沿D触发器74x74、同步计数器74x163、4位通用移位寄存器74x194的工作原理。**
2. **使用Verilog语言对这些基本组件进行设计与仿真。**
3. **设计一个3位LFSR计数器,并实现其功能。**
4. **设计一个1Hz数字信号发生器,作为LFSR计数器的时钟信号。**
#### 实验内容详解
**1. 边沿D触发器74x74**
- **工作原理**:边沿D触发器是一种基本的存储单元,具有置位和清零功能。当CLK(时钟信号)上升沿到来时,根据D输入的状态更新输出Q的状态。
- **Verilog设计**:使用Verilog代码描述该触发器的行为。例如,下面给出了一个简单的边沿D触发器的Verilog实现:
```verilog
`timescale 1ns / 1ps
module D(CLK, D, PR_L, CLR_L, Q, QN);
input CLK, D, PR_L, CLR_L;
output Q, QN;
wire w1, w2, w3, w4;
nand(w1, PR_L, w2, w4);
nand(w2, w1, CLR_L, CLK);
nand(w3, w2, CLK, w4);
nand(w4, w3, CLR_L, D);
nand(Q, PR_L, w2, QN);
nand(QN, Q, w3, CLR_L);
endmodule
```
**2. 4位通用移位寄存器74x194**
- **工作原理**:4位通用移位寄存器允许数据按照指定的方向(左移或右移)移动,并可以通过不同的控制信号进行串行或并行加载数据。
- **Verilog设计**:使用Verilog描述74x194的逻辑行为。例如,可以使用如下的Verilog代码实现:
```verilog
`timescale 1ns / 1ps
module shift_register(DS, SH_LDS, MR, QS, QD);
input [3:0] DS;
input SH_LDS, MR;
output reg [3:0] QS, QD;
always @(posedge SH_LDS or posedge MR) begin
if (MR) begin
QS <= 0;
QD <= 0;
end else begin
QS <= DS;
QD <= QS << 1;
end
end
endmodule
```
**3. 3位LFSR计数器**
- **设计原理**:LFSR是一种特殊的移位寄存器,通常用于生成伪随机数序列。在这个实验中,需要设计一个3位的LFSR计数器。
- **Verilog设计**:利用上面提到的4位通用移位寄存器74x194和一些额外的逻辑门来构建3位LFSR计数器。设计时需要考虑反馈路径的构造。
**4. 4位同步计数器74x163**
- **工作原理**:同步计数器能够在时钟信号的作用下递增计数。
- **Verilog设计**:使用Verilog语言实现74x163的功能。例如,可以使用以下代码:
```verilog
`timescale 1ns / 1ps
module counter(CLK, LD, ENP, Q, CO);
input CLK, LD, ENP;
output reg [3:0] Q;
output reg CO;
always @(posedge CLK or posedge LD) begin
if (LD) begin
Q <= 4'b0000;
end else if (ENP) begin
Q <= Q + 1;
end
end
assign CO = (Q == 4'b1111);
endmodule
```
**5. 1Hz数字信号发生器**
- **设计原理**:利用74x163和其他小规模逻辑门设计1Hz的数字信号发生器。假设输入为100MHz,需要设计一个分频器来将频率降低到1Hz。
- **Verilog设计**:设计一个分频器,将100MHz的输入时钟信号分频为1Hz。这通常涉及多个计数器级联和适当的控制逻辑。
#### 实验总结
本次实验不仅让学生掌握了基本时序逻辑电路的设计方法,还学会了如何使用Verilog语言进行电路设计和仿真。通过具体的实验任务,学生能够深入理解各种时序逻辑元件的工作机制,并将其应用于实际的电路设计中。这对于未来从事计算机组成原理相关领域的学习和研究都是非常有帮助的。
1