欢迎来到天天文库
浏览记录
ID:40958866
大小:115.50 KB
页数:8页
时间:2019-08-11
《序列信号发生器与检测器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验三序列信号发生器与检测器设计一、实验目的(1)掌握关于串行序列的设计。(2)掌握顶层与底层模块的设计。(3)掌握状态机的设计。二、实验内容与要求(1)设计序列发生器,产生序列:0111010011011010。(2)设计检测器,若检测到串行序列11010,则输出为1,否则输出为0,并对其进行仿真和硬件测试。三、设计原理(1)序列发生器rrrcout00000000110010100111010000101101100011101000110011101001011111001110101110111110每来一个脉冲,rrr加一,四位二进制,
2、这样就可以顺序产生16个所需的zout组成的序列;每16个脉冲循环产生一次;cle为复位信号,当它为0时,复位,否则的话,不影响序列的顺序产生输出。设计上就可用case语句实现。(1)序列信号检测器每收到一个符合要求的串行码就需要用一个状态进行记忆。串行码长度为5位,需要5个状态;另外,还需要增加一个“未收到一个有效位”状态,共6个状态;画出状态转换图,如图所示,这是一个莫尔状态机。6个状态机根据编码原则可以用3位二进制数来表示。011011100ABCDFE当到达F状态时,zout输出为1,否则为0。(3)计数器可利用上个实验的计数器,将其改为
3、模999的就可以;因为这是关于测zout的数量的,因此必须用zout作为计数器的时钟输入端。(4)顶层的设计顶层可用原理图的方法设计,这连接方便,清晰,不容易出错。将序列发生器的输出端接到序列检测器的输入端,实现检测;序列检测器的输出端连接计数器实现计数功能。一、实验仪器PC机,试验箱,quartus软件二、实验程序(1)序列发生器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;--IEEE库使用说明ENTITYxulieISPORT(CLK,cle:IN
4、STD_LOGIC;--CLK为时钟信号cout:OUTSTD_LOGIC);--cle为复位信号ENDxulie;ARCHITECTUREoneOFxulieISSIGNALrrr:STD_LOGIC_VECTOR(3DOWNTO0);---rrr为1个四位矢量信号SIGNALc:STD_LOGIC:='0';--c为一个给输出端口赋值的信号BEGINPROCESS(CLK,cle)BEGINIF(cle='0')THENrrr<="0000";ELSE--复位IF(CLK'EVENTANDCLK='1')THENrrr<=rrr+'1';--
5、rrr自加一,实现序列自动顺序产生ENDIF;ENDIF;ENDPROCESS;PROCESS(rrr)BEGINCASErrrIS---通过判断rrr的值,进而判断应输出的值WHEN"0000"=>c<='0';WHEN"0001"=>c<='1';WHEN"0010"=>c<='1';WHEN"0011"=>c<='1';WHEN"0100"=>c<='0';WHEN"0101"=>c<='1';WHEN"0110"=>c<='0';WHEN"0111"=>c<='0';WHEN"1000"=>c<='1';WHEN"1001"=>c<='1
6、';WHEN"1010"=>c<='0';WHEN"1011"=>c<='1';WHEN"1100"=>c<='1';WHEN"1101"=>c<='0';WHEN"1110"=>c<='1';WHEN"1111"=>c<='0';WHENOTHERS=>c<='0';ENDCASE;ENDPROCESS;cout<=transportcafter30ns;--将c的值赋给coutENDone;将其封装成可调用的元件为(2)序列检测器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_
7、UNSIGNED.ALL;ENTITYceISPORT(DIN,CLK,CLR:INSTD_LOGIC;--串行输入数据位/工作时钟/清零信号zout:OUTSTD_LOGIC);--检测结果输出endce;ARCHITECTUREbehavOFceISTYPESTATE_TYPEIS---将状态符号化,共有六个状态(A,B,C,D,E,F);SIGNALSTATE:STATE_TYPE;--状态变量是STATE,类型为STATE_TYPESIGNALS:STD_LOGIC_VECTOR(4DOWNTO0);BEGINS<="11010";--用
8、于作为比较的正确序列PROCESS(CLK,CLR)BEGINIFCLR='1'THENSTATE<=A;--CLR清零ELSIFfal
此文档下载收益归作者所有