实验 1:运算器与存储器
新手建议
如果你先前没有修读过「数字电路实验」课程,或从来没有接触过 Verilog 硬件描述语言,请抓紧时间阅读「数字电路实验课」的 Lab1:Verilog 代码设计、Lab2:仿真、Lab3:上板运行的相关内容。
如果你忘记了 Vivado 的操作流程,可以阅读使用 Vivado 构建完整项目进行复习。
任务 1:完成 ALU、RF 模块的设计
Task 1-1
设计实现支持 12 种运算模式的 ALU。模块的端口定义如下:
ALU 端口定义 | |
---|---|
1 2 3 4 5 6 |
|
op
控制 ALU 执行的运算操作,具体的对应关系如下表所示。
本项任务不需要上板,请参考如下的仿真文件验证设计的正确性。
ALU 仿真文件 | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
检查实验时,你需要向助教展示仿真的波形图,并现场修改部分输入以检验正确性。
值得注意的点
- 在 Verilog 中,算数右移运算符
>>>
仅在有符号类型$signed()
时能给出正确结果 - 请多尝试一些可能的输入,以避免遗漏部分情况
Task 1-2
设计寄存器堆模块。要求 x0 寄存器始终为 0;读操作为写优先的(同时读写时优先读出即将写入的值)。读优先的寄存器堆模块参考代码如下,你可能需要进行一定的修改。
RF 示例代码 | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
你可以使用如下的仿真文件验证设计的正确性。
RegFile_tb | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
在检查时,请向助教展示你的仿真结果,并介绍写优先的实现思路。
任务 2:分布式存储器与块式存储器
Task 2
请分别例化一个分布式存储器和一个块式存储器,二者均设定为单端口 RAM 存储器,容量为 1024 x 32 bits。讨论二者在读写时时序的异同。你需要设计合适的仿真文件以验证你的结论。
任务 3:排序模块 SRT
Task 3-1
请基于 PPT 介绍内容,完成硬件冒泡排序模块 SRT 的设计。
你需要在开发板上完成这项任务,相关外设与控制信号的对应关系如下:
我们强烈建议大家优先完成仿真测试,通过后再进行上板测试。板子的时钟周期设定为 10ns(100MHz)。你可以参考数电实验的 信号处理、有限状态机、Verilog 常见错误分析 等章节的内容完成设计。
1024 个待排序数据需要通过 COE 文件载入存储器。这些数据需要自行生成,且应当包括至少 256 个不同的整数(毕竟排序 1024 个相同的数意义不大)。检查时,请现场上板运行排序程序,并展示最终结果以及运行时间。
限制文件
不同的开发板所需的限制文件不同,本课程实验所需的限制文件请点击这里。在使用文件时,请将需要连接的接口的注释符号去掉,修改好对应接口的名字即可。
开发板的数码管显示
这里是一个参考实现。
Task 3-2
基于 Vivado 的工具查看 SRT 综合后的电路资源和性能。请在实验报告中给出 LUT、FF 等资源的使用情况,以及电路正常工作的最高时钟频率。
选做任务(二选一)
Task X-1
使用块式存储器实现 SRT;比较其与分布式实现的电路资源和性能差异。
Task X-2
使用快速排序替代冒泡排序,其中 pivot 固定选择最后一个元素;比较其与原实现的电路资源和性能差异。
延伸(不计分)
在硬件层面,还有什么方式能降低排序所需要的期望时间?SRT 在排序 1024 个数据时期望时间最低能达到多少?
实验检查与提交
本次实验布置时间为 2025-03-19,持续一周。相应的 DDL 节点如下:
检查 DDL | 报告提交 DDL |
---|---|
2025-03-26 21:00 | 2025-04-02 23:59 |
检查与报告延迟一周以内(含)的,至多只能得到 80% 分数;延迟一周以上、两周以内(含)的,至多只能得到 60% 分数;延迟超过两周的不得分。
提醒
实验的 DDL 为当天晚上 21:00。助教有权利在 21:00 准时停止检查,请大家合理安排好自己的时间。
关于实验报告
实验报告需要大家提交 PDF 格式。我们推荐大家使用 Markdown 或者 Latex 撰写实验报告,这样可以直接导出为 PDF。大家也可以使用 Word、WPS 等进行报告撰写,最后转换为 PDF 格式。我们不推荐也不拒绝大家手写实验报告,但请将其拍照扫描成 PDF 文件后再上传。我们不接受任何因为文件格式错误而导致成绩异常的申诉请求!
在实验报告中,你需要给出每一项任务的答案,并附上必要的说明过程(或截图)。
特别地:实验报告的字数和排版与最终得分无关。影响得分的仅有内容正确性与完整性。
实验报告请提交至 BB 平台。