购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 任务与实践

完成本章的学习后,读者应完成以下三个实践任务:

1)寄存器堆仿真(具体内容见3.3.1节)。

2)同步RAM和异步RAM仿真、综合与实现(具体内容见3.3.2节)。

3)数字逻辑电路的设计与调试(具体内容见下面3.3.3节)。

3.3.1 实践任务2:寄存器堆仿真

本实践任务要求:

对一个寄存器堆设计进行功能仿真,通过观察其仿真波形了解行为特征。

实验环境中提供的寄存器堆源码为“两读一写”的结构,也就是有两个读端口(读端口没有使能位控制,表示永远使能)和一个写端口。接口信号如表3.1所示。

表3.1 寄存器堆接口信号列表

请参照2.3.1节中介绍的方式获取本次实践任务所需的实验开发环境。具体的实验环境位于dc_env/exp2/目录下,其目录结构如下:

建议参考下列步骤完成本实践任务:

1)使用Vivado新建一个工程。

2)点击“Add Sources”,选择添加设计源码(design sources),加入regfile.v。

3)点击“Add Sources”,选择添加仿真源码(simulation sources),加入rf_tb.v。

4)对工程进行仿真测试,结合波形观察寄存器堆的读写行为。

3.3.2 实践任务3:同步RAM和异步RAM仿真、综合与实现

本实践任务要求:

1)调用Xilinx库IP实例化一个同步RAM,进行仿真以观察行为,进行综合和实现后查看时序结果和资源利用率。

2)调用Xilinx库IP实例化一个异步RAM,进行仿真以观察行为,进行综合和实现后查看时序结果和资源利用率。

3)对观察到的现象进行对比分析。

请参照2.3.1节中介绍的方式获取本次实践任务所需的实验开发环境。具体的实验环境位于dc_env/exp3/目录下,其目录结构如下:

实验环境提供的设计顶层文件用于将两种类型的RAM封装成相同的模块名和接口。包封后的RAM顶层接口信号如表3.2所示。

表3.2 RAM包封后顶层接口信号列表

注意:包封后的RAM接口没有片选信号,即片选使能始终有效(其内部实例化的具体RAM的片选使能信号恒为1)。

建立同步RAM工程的参考步骤如下:

1)使用Vivado新建一个工程。

2)点击“Add Sources”,选择添加设计源码(design sources),加入block_ram_top.v。

3)点击“Add Sources”,选择添加约束文件(constraints),加入ram.xdc。

4)点击“Add Sources”,选择添加仿真源码(simulation sources),加入ram_tb.v。

5)参考附录D.1节,调用Xilinx库IP生成同步RAM(Block RAM,深度为65536,宽度为32,片选使能信号设为一直有效)。

建立异步RAM工程的参考步骤如下:

1)使用Vivado新建一个工程。

2)点击“Add Sources”,选择添加设计源码(design sources),加入distributed_ram_top.v。

3)点击“Add Sources”,选择添加约束文件(constraints),加入ram.xdc。

4)点击“Add Sources”,选择添加仿真源码(simulation sources),加入ram_tb.v。

5)参考附录D.1节,调用Xilinx库IP生成异步RAM(Distributed RAM,深度为65536,宽度为32)。

在完成工程的创建后,对它们进行仿真,对比读写行为的异同。在完成工程的仿真后,对它们进行综合和实现,参考附录D.1节介绍的方法查看时序结果和资源利用率,并结合读写时序进行分析。

在实践过程中,应特别注意以下几点:

●生成IP时,请将对应IP命名为block_ram和distributed_ram,如命名错误,IP将会报错。若遇到已生成IP无法改名的情况,可以删除该IP,重新生成。

●生成IP时,可以点击窗口左侧的图查看接口信息。当参数正确时,端口名和宽度应与指定的顶层文件中的调用相对应。

●有兴趣的读者可以自行调研资料、调整同步/异步RAM定制时的其他选项参数,并根据仿真波形对比参数的作用。

●对程序进行综合之前请确保已正确加载约束文件(ram.xdc)。

●添加testbench时请注意选择add simulation source,否则会导致顶层文件错误,综合结果不正确。

●在进行异步RAM的综合实现时,因为所需要使用的FPGA资源多,有可能会耗费大量时间,所以应提前计划,安排好时间。

●时序报告和资源报告的生成需要查看综合和实现完成后的结果。

3.3.3 实践任务4:数字逻辑电路的设计与调试

本实践任务要求:

1)调试并修正一个给定数字逻辑电路设计中的功能错误。

2)上板后可以实现正确的功能。

请参照2.3.1节中介绍的方式获取本次实践任务所需的实验开发环境。具体的实验环境位于dc_env/exp4/目录下,其目录结构如下:

show_sw.v中的设计共有5个功能错误。该设计的正确功能是:

1)获取开发板最右侧4个拨码开关的状态(记为“拨上为1,拨下为0”,实际开发板上拨码开关的电平是“拨上为低电平,拨下为高电平”),共有16个状态(数字编号是0~15)。

2)最左侧数码管实时显示4个拨码开关的状态。数码管只支持显示0~9,如果拨码开关状态是10~15,则数码管的显示状态不更改(显示上一次的显示值)。

3)最右侧的4个单色LED灯会显示上一次拨码开关的状态,支持显示0~15(拨码开关拨上,对应LED灯亮)。

比如,初始状态下,4个拨码开关拨下,按复位键,则数码管显示0,LED灯都不亮;拨码开关拨为1,则数码管显示1,LED灯还是都不亮;拨码开关再拨为3,则数码管显示3,LED灯显示1。

提供的设计源码中包含5个bug,其中4个是3.2.2节中提到的波形异常的前4种情况:波形为“Z”、波形为“X”、波形停止和越沿采样,另外的1个bug是功能bug。

本任务提供的示例设计的顶层信号如表3.3所示。

表3.3 示例设计的顶层信号列表

请参考下列步骤完成本实践任务:

1)学习本章3.2节和附录C.1节的内容。

2)使用Vivado新建一个工程。

3)点击“Add Sources”,选择添加设计源码(design sources),加入show_sw.v。

4)点击“Add Sources”,选择添加约束文件(constraints),加入show_sw.xdc。

5)点击“Add Sources”,选择添加仿真源码(simulation sources),加入tb.v。

6)理解示例设计的功能,分析仿真顶层tb.v,并理解仿真的行为。注意,开发板上拨码开关的电平是“拨上为低电平,拨下为高电平”,单色LED灯的电平行为是“高电平不亮,低电平亮”。仿真顶层tb.v也是按此电平设计的。

7)进行仿真,并充分利用仿真的辅助小技巧(分割、分组、颜色变化、标志等)进行调试,找出所有的bug。

8)仿真完成后,进行综合和实现并生成二进制码流文件。

9)生成二进制码流文件后,连接开发板,进行上板验证。(如果没有本地或远程FPGA实验平台或者不进行上板实验,可以跳过此步骤。) Wd/p7vaJYeg0IaggSJptq/Oy9cu+RpwNenki8tkBIqDUiC7OjIKVpjly9ZXLTdc2

点击中间区域
呼出菜单
上一章
目录
下一章
×