数据通路和有限状态机设计 下载本文

内容发布更新时间 : 2024/12/23 22:38:48星期一 下面是文章的全部内容请认真阅读。

实验4和5 数据通路及有限状态机设计

一、实验目的

综合应用掌握的简单组合电路和时序电路的设计方法。完成一个简单的数据通路的设计,掌握数据通路的基本设计方法;为该数据通路配上一个控制器(有限状态机),掌握有限状态机的基本设计方法;将所有的实验综合起来,实现一个自动运算电路。

二、实验内容及步骤

1. 数据通路设计

根据图1给出的数据通路(图中SUM和NEXT是寄存器,Memory是存储器,+是加法器,==0是比较器,其它则是多路选择器),完成相应的Verilog程序设计。具体要求如下:

? 图中数据线的宽度和各个器件的数据线宽度初始设计时均为8位,要求

构成数据通路时可以扩充至16位或者是32位;

? 设计的数据通路能够正确综合,Vivado所示的电路原理图与图1给出的

一致。

图1 数据通路图

1

【提示】

(1)分别设计n位加法器模块,n位2选1多路选择器模块,n位比较器模块。(用parameter传参来扩展)

(2)设计一个含同步复位rst和加载load端的n位寄存器模块

当load=1时,对输入的n位数据进行同步寄存,即让输入D的值赋给输出Q; (3)设计一个n位存储器模块,存储器中存放有一条至少包含3个节点的数据链表(如图3所示),链表第1个节点在0号地址。存放的链表可以参考后面所示的文本文件用系统函数$readmemh进行初始化,也可以自行设计数据。

(4)根据图1实例化以上模块完成数据通路模块的设计

输入端口有:时钟clk,复位rst,加载信号LD_SUM, LD_NEXT, ...... 输出端口有: 链尾标志NEXT_ZERO

2. 有限状态机设计

如果要在图1所示的数据通路中完成图3所示的数据链表的求和运算,需要一个控制器,用课上讲的有限状态机(FSM)来实现该控制器。由一个启动信号start开始进行求和运算,当计算结束时输出求和结束信号done。假设有限状态机的状态转移图如图2所示,根据状态转移图,按照有限状态机(FSM)标准的实现模式来编写Verilog程序代码。具体要求如下:

? 设计的有限状态机(FSM)能够正确综合;

? 编写有限状态机的仿真程序,完成有限状态机(FSM)的功能仿真,有

限状态机功能仿真正确。

【提示】 该控制器模块的端口有:

输入端口:时钟clk,复位rst,启动求和start,链尾标志next_zero 输出端口: LD_SUM, LD_NEXT, ...... ,求和结束done

2

图2 状态转移图

3. 自动运算电路的设计

将实验步骤1实现的数据通路与实验步骤2实现的有限状态机(FSM)结合起来,可以进行以链表方式存储的数据的求和运算。

在存储器中存放的数据链表其结构如图3所示,链表的各个节点在存储器中不是连续存放,各节点的第一个地址存放下一个节点的地址,各节点的第二个地址中存放着要进行求和运算的数据,当下一个节点的地址为0时,表示到达链表的结尾,求和运算结束。

3

图3 数据链表及其在存储器中的存放格式

利用上面设计的数据通路、有限状态机,将它们集成起来,设计并实现一个能够进行上述图3所示链表数据的自动求和运算,该电路的总体框架如图4所示,数据通路中存储器所存放的链表可以参考下面所示的文本文件来进行初始化。具体要求如下:

? 完成自动运算求和电路的设计,能够正确综合; ? 编写仿真程序,进行功能仿真,仿真结果正确; ? 功能仿真正确后修改约束文件、生成比特流文件; ? 进行最后的时序仿真,时序仿真结果正确再下载运行; ? 板上实际运行,运行结果正确。

拨动一个开关开始求和运算,每步的求和结果(即SUM寄存器中的值)输出在LED上正确显示,求和运算结束后一个LED指示灯亮,表明运算完成,LED

4

上显示最终的和,整个求和运算步数不能少于3次。

图4 自动运算电路模块构成图

存储器初始化文件(存储器每个存储单元32位,共有16个存储单元,最后的求和运算结果 = 2+4+6+8 = 20): 00000003 00000002 00000000 00000007 00000004 00000000 00000000 0000000b 00000006 00000000 00000000 00000000 00000008 00000000 00000000 00000000

5