Lab 1: ALU、Regfiles 设计与有限状态机¶
注意
- 官方 ppt 部分内容存在错误,请注意辨别
- 具体的 verilog 代码请先根据官方 ppt 自行完成,本文档不提供全部的 verilog 代码,仅作参考和提示作用
- 本文档为个人经验,具体情况具体分析
实验目标¶
- ALU 的设计(后续实验会调用)
- Register Files 的设计(后续实验会调用)
- 有限状态机
1.1 ALU 的设计¶
ALU 功能描述¶
| ALU 控制信号 | 功能 |
|---|---|
| 000 | and |
| 001 | or |
| 010 | add |
| 110 | sub |
| 111 | slt(若 A < B,则 res 为 1) |
| 100 | nor |
| 101 | srl |
| 011 | xor |
ALU¶
新建 comp_organ/project/lab1/,在此目录下创建工程文件,命名为 ALU
生成并调用相应的 IP 核,新建 ALU.v 源文件,根据连接图编写 verilog 代码
编写 testbench 文件进行仿真验证
1.2 Register Files¶
功能描述¶
- 该模块含 32 个 32 位寄存器(RISC-V 中的 32 个寄存器),其中
r0恒为 0(RISC-V 中的 x0 寄存器) - 包含两个读端口
Rs1_addrRs2_addr,其数值表示寄存器的地址(号码),并在端口Rs1_dataRs2_data输出相应寄存器的值。例如若Rs1_addr = 10Rs2_addr = 11,而此刻寄存器的值为r10 = 156r11 = 123,则输出Rs1_data = 156Rs2_data = 123 - 包含写控制信号
RegWrite和写端口Wt_addrWt_data,当RegWrite = 1时,此模块的写功能才能开启,将Wt_data的值写进地址为Wt_addr的寄存器当中 - 注意所有操作不能改变
r0寄存器的值
regs¶
在目录 comp_organ/project/lab1/regs 下创建工程文件,命名为 regs
生成并调用相应的 IP 核,新建 regs.v 源文件,根据 ppt 和上述功能描述,编写 verilog 代码
编写 testbench 文件进行仿真验证
1.3 有限状态机¶
状态图¶
seq¶
在目录 comp_organ/project/lab1/ 下创建工程文件,命名为 seq
新建 seq.v 源文件,根据 ppt 和状态图,编写 verilog 代码
编写 testbench 文件进行仿真验证
评论区
欢迎在评论区指出文档错误,为文档提供宝贵意见,或写下你的疑问