哈工大veriog大作业.doc
文本预览下载声明
Harbin Institute of Technology
Verilog HDL
ModelSim仿真设计大作业
题 目: 序列检测器设计与仿真
院 系:
指导教师: 付方发
日 期: 2014.06.14
哈尔滨工业大学
目录
设计题目与亮点综述……………………………………………………. 2
设计题目……………………………………………………………………… 2
设计特点……………………………………………………………………… 2
规范设计…………………………………………………………………. 2
设计思路……………………………………………………………………… 2
规范叙述……………………………………………………………………… 3
代码编写…………………………………………………………………. 3
仿真验证…………………………………………………………………. 6
测试内容……………………………………………………………………… 6
Testbench代码与仿真输出………………………………………………… 7
常规测试代码……………………………………………………………… 7
常规测试仿真波形………………………………………………………… 8
常规测试显示输出………………………………………………………… 8
异常测试代码……………………………………………………………… 15
异常测试仿真波形………………………………………………………… 17
异常测试显示输出………………………………………………………… 17
分析与结论…………………………………………………………………… 24
反思与心得………………………………………………………………. 24
1 设计题目与亮点综述
1.1 设计题目
(英文)
Try realizing the function of a shift register as below:
At the positive edge of clock, detect the input port to judge if “1001” sequence appears
low level asynchronic reset
4-cycle valid indication
(中文翻译)
试实现如下移位寄存器的功能:
在时钟上升沿,检测输入端口并判断是否出现“1001”序列
低电平异步复位
四周期有效检验
1.2 设计特点
使用Verilog HDL,基于ModelSim SE 10.1a实现了一个具有上述功能的序列检测器,并进行了代码编写及Testbench测试激励验证、数据流图输出。
该检测器具有以下特点:
可综合的,采用门级与RTL级描述编写的语句
采用模块化规范设计代码
配置有正确状态检测的有限状态机
根据情况使用阻塞语句与非阻塞语句
考虑到多种情况的激励块Testbench
2 规范设计
2.1 设计思路
移位寄存器是本检测器的核心模块,同时存在随时钟上升沿进行不断检测的分析模块。开始我使用了行为级描述,在反复试验充分理解它的结构后,我采用了可综合的方式用门级描述写出了电路代码;随后开始考虑4周期有效检验的问题,最终使用了定时器与标志位结合的方式,成功实现了这一细节功能,完成了本设计题目。
2.2 规范叙述
本序列检测器由如下几大模块构成:
构成4位移位寄存器的D触发器单元DFF:
1.具有同步上升沿置位功能,上升沿到来时,输出端口q的值将等于输入端口d;
2.具有异步下降沿复位功能,复位后q=0。
由门电路构成的序列检测模块seqscan(Sequence Scanner):
1.是一个组合逻辑电路,具有4位端口,使用4位寄存器[3:0]q保存序列,使用4位运算寄存器[3:0]l保存各位检测结果,以达到分别检测“1001”的各位的目的。
2.检测“1”的方法是,将“1”电平与该端口做与运算,如该位是“1”,则输出也应是“1”,并保存在运算寄存器l的相应位;
3.检测“0”的方法是将其取反,如该位是“0”,则输出为“1”, 并保存在运算寄存器l的相应位;
4.检测整个4位序列的方法是,将运算寄存器l的各位做与运算,如四位都为“1”,则输出也为“1”,并作为状态标志位输出seq的值。
检测器的主模块shiftdtct(Shift Detector):
1.单次或者多次调用上述两个模块,模块间共用时钟信号、复位信号、移位寄存器q。
2.声明了两个参量SEQUENCE_1与SEQUENCE_0,值分别为1’b1和1’b0,用以控制这个状态机,请参照第3部分的代码;
3.声明了检验计数器count,用来记录检测
显示全部