实验三_用状态机实现序列检测器的设计_第1页
实验三_用状态机实现序列检测器的设计_第2页
实验三_用状态机实现序列检测器的设计_第3页
实验三_用状态机实现序列检测器的设计_第4页
实验三_用状态机实现序列检测器的设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验三 用状态机实现序列检测器的设计一、实验目的:用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。二、原理说明:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出a,否则输出b。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例3-1描述的电路完成对序列数"11100101"的。当这一串序列数高位在前(左移)串行

2、进入检测器后,若此数与预置的密码数相同,则输出“a”,否则仍然输出“b”。【例3-1】/顶层文件:module XULIEQI(clk,reset,din8,LED7S;input clk;input reset;input 7:0 din8;output 6:0 LED7S;wire 3:0 AB;xulie u1 (clk, din8, reset, din;schk u2 (din,clk,reset,AB;decl7s u3 (AB,LED7S;endmodule/串行检测:module schk(DIN,CLK,CLR,AB;input DIN,CLK,CLR;output3:0 A

3、B;reg 7:0 Q;reg 3:0 AB;parameter idle = 8'b00000000,a = 8'b00000001,b = 8'b00000010,c = 8'b00000100,d = 8'b00001000,e = 8'b00010000,f = 8'b00100000,g = 8'b01000000,h = 8'b10000000;parameter data=8b11100101;always (posedge CLK or negedge CLRif(!CLRbeginQ <= idle

4、;endelsebegincase(Qidle:beginif(DIN=data7 Q<=a;else Q<=idle;enda:beginif(DIN= data6 Q<=b;else Q<=idle;endb:beginif(DIN= data5 Q<=c;else Q<=idle;endc:beginif(DIN= data4 Q<=d;else Q<=idle;endd:beginif(DIN= data3 Q<=e;else Q<=idle;ende:beginif(DIN= data2 Q<=f;else Q<

5、=idle;endf:beginif(DIN= data1 Q<=g;else Q<=idle;endg:beginif(DIN= data0 Q<=h;else Q<=idle;enddefault :Q<=idle;endcaseendalways (Qbeginif(Q=h AB <= 4'b1010 ;else AB <= 4'b1011 ;endendmodule/前端预置8位数据输入:module xulie(clk, din8, reset, din;input clk;input7:0 din8;input reset;

6、output din;parameter s0 = 3'b000,s1 = 3'b001,s2 = 3'b010,s3 = 3'b011,s4 = 3'b100,s5 = 3'b101,s6 = 3'b110,s7 = 3'b111;reg2:0 cur_state,next_state;reg din;always (posedge clk or negedge resetif(!resetcur_state <= s0;elsecur_state <= next_state;always (cur_state or

7、 din8 or din begincase (cur_states0 : begindin <= din87;next_state <= s1;ends1 : begindin <= din86;next_state <= s2;ends2 : begindin <= din85;next_state <= s3;ends3 : begindin <= din84;next_state <= s4;ends4 : begindin <= din83;next_state <= s5;ends5 : begindin <= di

8、n82;next_state <= s6;ends6 : begindin <= din81;next_state <= s7;ends7 : begindin <= din80;next_state <= s0;enddefault : begindin <= 1'b0;next_state <= s0;endendcaseendendmodule提示:1.若对于D <= "11100101 ",电路需记忆:初始状态、1、11、111 、 1110 、11100、111001、1110010、11100101 共9种

9、状态。三、实验内容:1. 编写由两个主控进程构成的有限状态机。画出状态图,并给出其仿真测试波形;2. 自己编写数码管显示程序(decl7s.v)来显示A或B状态。已知数码管为共阳级连接。输入(4bits)输出(7bits)显示内容4b10107b 0001000a4b10117b 0000011b4b00007b10000000提示:可以在default分支选用显示“0”。3. 利用QuartusII对文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序。最后进行引脚锁定并完成硬件测试实验。建议用KEY1(PIN23)控制复位信号RESET;KEY0(PING26)控制状态机工作时钟CLK;指示输出AB接数码管HEX0(PIN_AF10, PIN_AB12, PIN_AC12, PIN_AD11, PIN_AE11, PIN_V14, PIN_V13。5. 下载后,按以下提示进行操作:1)、按实验板“系统复位”键;2)、用SW0-SW7(PIN_N25, PIN_N26,PIN_P25,PIN_AE14,PIN_AF14,PIN_AD13,PIN_AC13,PIN_C13键输入待测序列数"11100101 ";3)、按下RESET键;4)、按KEY0键(时钟clk输入) 8次,这时若串行输入的8位二进制序列码与预置码"1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论