用状态机实现序列检测器实验报告

用状态机实现序列检测器实验报告

ID:9178884

大小:147.77 KB

页数:10页

时间:2018-04-20

用状态机实现序列检测器实验报告_第1页
用状态机实现序列检测器实验报告_第2页
用状态机实现序列检测器实验报告_第3页
用状态机实现序列检测器实验报告_第4页
用状态机实现序列检测器实验报告_第5页
资源描述:

《用状态机实现序列检测器实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验报告用状态机实现序列检测器实验一、实验目的1.用VerilogHDL描述有限状态机电路。2.IPCORE的概念与设计。二、实验内容1.应用有限状态机的设计思路,检测从FPGA片上ROM读出的串行数据是否是特定的数据。2.每个人需要检测的数据是所用的电脑编号+200后转换的8位二进制数。三、实验要求1.拟用按键、拨动开关实现系统的时钟,复位信号的输入。2.一个7段数码显示译码器作为检测结果的输出显示,如果串行序列为””,显示A,否则显示b(系统需要设计一个7段数码显示译码器模块)仍使用消抖模块,对由按键输入的时钟进行消抖处理。3.读取的串行数据

2、为rom中固化的一个宽度为1bit,深度为16bits的数据。四、设计思路软件的设计框图如下,该实验可以分为几个模块,rom数据读出模块,串行检测模块,数码管显示模块,顶层模块。输入的clk为按键消抖后输出的数据,按下一次检测一次,在时钟的上升沿读出数据,时钟的下降沿检测数据,串行模块输出的4bits的数据,直接送给数码管译码模块,译码输出。三、设计原理1.ROMIP核的生成首先在ISE自己的工程中新建一个块内存,BlockMemoryGenerator,配置深度为16,宽度为1bit,选择生成的类型为单端ROM,然后选择一个已经编写好的memo

3、ry初始化文件。Memory初始化文件,编写coe文件:这里我要写入的是226,所以二进制是,写入的内容如下,:memory_initialization_radix=10;memory_initialization_vector=1110001110101010;保存并选择载入。2.读取rom中的数据根据时钟上升沿读取数据,所以可以写出rom读的代码,代码如下:moduleread_rom(clk,da,rst);inputclk;inputrst;outputda;reg[3:0]counter;always@(posedgeclkorpos

4、edgerst)beginif(rst)counter<=1'b0;elsecounter<=counter+1'b1;enddata_romu1(.clka(clk),//inputclka.addra(counter),//input[3:0]addra.douta(da)//output[0:0]douta);编写仿真激励文件,得到如下波形,分析可以知道,时钟上升沿数据被读取,读取的数据与我们在配置文件中写入的相同。2.串行检测本人的编号为226,转换为二进制数为,根据二进制数,画出状态转移图,状态转移图如下:根据状态转移图,编写veril

5、og代码,代码如下://检测:moduleser_read(inputclk,inputr_bit,inputrst,outputregout_flag);reg[3:0]status;always@(negedgeclk,posedgerst)beginif(rst==1)beginstatus<=4'b0;out_flag<=1'b0;endelsebegincase(status)4'd0:beginif(r_bit)status<=4'd1;out_flag<=1'b0;end4'd1:if(r_bit)status<=4'd2;else

6、status<=4'd0;4'd2:if(r_bit)status<=4'd3;elsestatus<=4'd0;4'd3:if(!r_bit)status<=4'd4;4'd4:if(!r_bit)status<=4'd5;//11100elsestatus<=4'd0;4'd5:if(!r_bit)status<=4'd6;//elsestatus<=4'd0;//4'd6:if(r_bit)status<=4'd7;//elsestatus<=4'd0;//4'd7:if(r_bit)beginstatus<=4'd0;//out_flag

7、<=1'b0;endelsebeginstatus<=4'd0;//out_flag<=1'b1;endendcaseendendEndmodule编写仿真激励文件,得到如下波形,因为rom数据是上升沿读取,所以串行检测是在下降沿完成的,通过波形可以看出,当检测到是,out_flag输出为高,反之输出为低,满足要求。2.数码管显示数码管显示代码如下:(静态数码管)moduledecled(ledin,ledout);inputledin;output[6:0]ledout;reg[6:0]ledout;always@(ledin)begincas

8、e(ledin)1'b1:ledout<=7'b;//b1'b0:ledout<=7'b;//adefault:ledout<=7'b;

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

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

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