序列检测器 用verilog语言实现.doc

序列检测器 用verilog语言实现.doc

ID:56921161

大小:158.00 KB

页数:4页

时间:2020-07-24

序列检测器 用verilog语言实现.doc_第1页
序列检测器 用verilog语言实现.doc_第2页
序列检测器 用verilog语言实现.doc_第3页
序列检测器 用verilog语言实现.doc_第4页
资源描述:

《序列检测器 用verilog语言实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、实验目的及要求目的:1、掌握利用有限状态机实现一般时序逻辑分析的方法;2、掌握用verilog编写可综合的有限状态机的标准模板;3、掌握用verilog编写状态机模块的测试文件的一般方法。要求:1.设计一个串行数据检测器。要求:连续4个或4个以上为1时输出为1,其他输入情况为0。编写测试模块对设计的模块进行各层次的仿真,并观察波形,编写实验报告。二、实验设备(环境)及要求实验设备:PC机一台环境要求:安装Modelsim仿真软件以及SynplifyPro综合工具程序模块:moduleserial_detec

2、ted(din,clk,reset,out);inputdin;//串行数据输入inputclk;//时钟输入inputreset;//异步复位信号输入outputout;//结果输出regout;reg[3:0]state,nextstate;//状态编码parameterIdle=3'b000,First_bit=3'b001,Second_bit=3'b010,Third_bit=3'b011,Fourth_bit=3'b100;//----------------更新当前状态--------------

3、------------always@(posedgeclkornegedgereset)beginif(!reset)state<=Idle;elsestate<=nextstate;end//------------------------------------------------------//-------------产生下一状态组合逻辑---------------------always@(stateordin)begincase(state)Idle:if(din)nextstate=Fir

4、st_bit;elsenextstate=Idle;First_bit:if(din)nextstate=Second_bit;elsenextstate=Idle;Second_bit:if(din)nextstate=Third_bit;elsenextstate=Idle;Third_bit:if(din)nextstate=Fourth_bit;elsenextstate=Idle;Fourth_bit:if(din)nextstate=Fourth_bit;elsenextstate=Idle;def

5、ault:nextstate=3'bxxx;endcaseend//------------------------------------------------------//--------------产生输出的组合逻辑----------------------always@(stateorresetordin)beginif(!reset)out<=0;elseif(state==Fourth_bit)out<=1;elseout<=0;end//---------------------------

6、---------------------------Endmodule测试模块:moduletest_serial_detected;//Inputsregdin;regclk;regreset;//Outputswireout;//InstantiatetheUnitUnderTest(UUT)serial_detecteduut(.din(din),.clk(clk),.reset(reset),.out(out));initialbegindin=0;reset=1;//给复位信号变量赋初值clk=0;

7、//给时钟变量赋初值#22reset=0;//使复位信号有效#133reset=1;//经过一个多周期以后是复位信号无效end//---------------------------------------------------//--------产生信号和控制-----------------------------always#50clk=~clk;//产生周期性时钟always@(posedgeclk)//在每次时钟正跳变沿时刻产生不同的dinbegin#50din<={$random}%2;//di

8、n的值是随机产生的#(3*50+12);//din的值维持一段时间endinitial//暂停仿真以便观察仿真波形begin#$stop;endendmodule4.利用Modelsim编译纠错和仿真5.利用SynplifyPro进行综合6.利用Quartus2进行布局布线四、实验结果与数据处理1.Modelsim仿真波形如下,自上向下信号依次为reset、clk、din、out2.选

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。