EDA实验报告序列检测器的VHDL设计_第1页
EDA实验报告序列检测器的VHDL设计_第2页
EDA实验报告序列检测器的VHDL设计_第3页
EDA实验报告序列检测器的VHDL设计_第4页
EDA实验报告序列检测器的VHDL设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、X IANGTAM UN IVEfI'MTtwaCollegeofInfomiftlon|Enqlncerin口srfXhangftBfiUniTErprtT#实验七序列检测器的VHDL设计、实验目的用状态机实现序列检测器的设计,了解一般状态机的设计与应用。二、实验设计原理序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检

2、测过程中,任何一位不相等都将回到初始状态重新开始检测。书上P168例5-11描述的电路完成对序列数“11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。、实验内容用VHDL状态机设计一个8位序列信号检测器。要求:利用QuartusII进行文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序,最后进行引脚锁定并完成硬件测试实验。程序设计及程序分析如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSCHKISPORT(DIN,CLK,CLR:INSTD_LOGIC;A

3、B:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDSCHK;ARCHITECTUREbehavOFSCHKISSIGNALQ:INTEGERRANGE0TO8;SIGNALD:STD_LOGIC_VECTOR(7DOWNTO0);BEGIND<="11100101”;PROCESS(CLK,CLR)BEGINIFCLR='1'THENQ<=0;ELSIFCLK'EVENTANDCLK='1'THENCASEQISWHEN0=>IFDIN=D(7)THENQ<=1;ELSEQ<=0;ENDIF;W

4、HEN1=>IFDIN=D(6)THENQ<=2;ELSEQ<=0;ENDIF;WHEN2=>IFDIN=D(5)THENQ<=3;ELSEQ<=0;ENDIF;WHEN3=>IFDIN=D(4)THENQ<=4;ELSEQ<=0;ENDIF;WHEN4=>IFDIN=D(3)THENQ<=5;ELSEQ<=0;ENDIF;WHEN5=>IFDIN=D(2)THENQ<=6;ELSEQ<=0;ENDIF;| Th« CJolleoie- of lfrforni«tion r | Eny

5、lneiBrlnQi of XJmntftMi UniTErprtTWHEN6=>IFDIN=DTHENQ<=7;ELSEQ<=0;ENDIF;WHEN7=>IFDIN=D(0)THENQ<=8;ELSEQ<=0;ENDIF;WHENOTHERS=>Q<=0;ENDCASE;ENDIF;ENDPROCESS;PROCESS(Q)BEGINIFQ=8THENAB<="1010”;ELSEAB<="1011”;ENDIF;ENDPROCESS;ENDbehav;四、仿真分析编译仿真后的波形如下所示:由仿真结果可以看到,

6、由于预置的密码数是“11100101”,当输入的序列数与上述的数字相同,输出才由B变成A。五、硬件测试过程 .按实验板“系统复位”键; .用键2和键1输入2位十六进制待测序列数“11100101”; .按键7复位(平时数码6指示显"B'); .按键6(CLK)8次,这时若串行输入的8位二进制序列码(分别显示于数码管2和数码管1以及发光管D8D0)与预置码“11100101”相同,则数码6应从原来的B变成A,表示序列检测正确,否则仍为B。六、实验内容将8位待测预置数作为外部输入信号,即可以随时改变序列检测器中的比较数据。写出此程序的符号化单进程有限状态机。程序设计如下:LIBR

7、ARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCHK2ISPORT(DIN,CLK,CLR:INSTD_LOGIC;一僻大学信息工程学院% XIANGTAN UN IVERSI片Th*Cjoliegeofluforni-rtJon|EngineerlngofXlmngtB«iUniTErvitfSHR:INSTD_LOGIC_VECTOR(7DOWNTO0);AB:OUTSTD_LOGIC_VECTOR(3DOWNTO0);ENDENTITYSCHK2;ARCHITECTUREbeha

8、vOFSCHK2ISSIGNALQ:INTEGERRANGE0TO8;SIGNALD:STD_LOGIC_VECTOR(7DOWNTO0);BEGIND<=SHR;PROCESS(CLK,CLR)BEGINIFCLR='1'THENQ<=0;ELSIFCLK'EVENTANDCLK='1'THENCASEQISWHEN0=>IFDIN=D(7)THENQ<=1;ELSEQ<=0;ENDIF;WHEN1=>IFDIN=D(6)THENQ<=2;ELSEQ<=0;ENDIF;WHEN2=>IFDIN=D(

9、5)THENQ<=3;ELSEQ<=0;ENDIF;WHEN3=>IFDIN=D(4)THENQ<=4;ELSEQ<=0;ENDIF;WHEN4=>IFDIN=D(3)THENQ<=5;ELSEQ<=0;ENDIF;WHEN5=>IFDIN=D(2)THENQ<=6;ELSEQ<=0;ENDIF;WHEN6=>IFDIN=D(1)THENQ<=7;ELSEQ<=0;ENDIF;WHEN7=>IFDIN=D(0)THENQ<=8;ELSEQ<=0;ENDIF;WHENOTHERS=>Q&l

10、t;=0;ENDCASE;ENDIF;ENDPROCESS;PROCESS(Q)BEGINIFQ=8THENAB<="1010"ELSEAB<="1011"ENDIF;ENDPROCESS;ENDARCHITECTUREbehav;七、仿真分析编译仿真后的波形如下所示:待检测预置数为“00110011I The College of Ipforni-rtionEnqlneerina of XkintftMi UfiItet僧草 a皿】 际 U3 cu01DIVQ酒 网城 EMUI SBUJ 曲国 制qSMffl 施胤IdTLrLrLrLrLr

11、LrLrLrLrLrLTLrLrLrLrLrLrLrLrLnOOUW1L待检测预置数为“11010011丝色乌里丝史上里里ewffl-史£ 一 MMwwiaxattni题旧5#f«3sntJ53(STime工ibi7融囿R由仿真结果可以看到,只有当输入的序列数与由外部输入的预置数字相同,输出才由B变成A。5Th*Cjoliegeofluforni-rtJon|EngineerlngofXlmngtB«iUniTErvitf实验八用QuartusII设计正弦信号发生器、实验目的进一步熟悉QuartusII及其LPM_ROM<FPGA硬件资源的使用方法。、实验设

12、计原理正弦信号发生器的结构由4个部分组成:计数器或地址发生器(这里选择6位);正弦信号数据ROM6位地址线,8位数据线),含有64个8位数据(一个周期);VHDL®层设计、8位D/A(实验中用DAC0832代替)。顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM勺地址信号发生器,由6位计数器担任;正弦数据ROM由LPM-ROMI块组成。LPM-RO嘛层是FPGA中白EAB或M4K等模块。地址发生器的时钟CLK的输入频率fo三、实验内容要求:在QuartusII上完成正弦信号发生器设计,包括时序仿真和资源利用情况了解。最后在实验系统上进行硬件测试。程序设计如下:LIBR

13、ARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSINGTISPORT(CLK:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);END;ARCHITECTUREDACCOFSINGTISCOMPONENTdata_romPORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDCOMPONENT;SIGNALQ1:STD

14、_LOGIC_VECTOR(5DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;u1:data_romPORTMAP(address=>Q1,q=>DOUT,inclock=>CLK);END;四、实验过程定制初始化波形数据文件:建立.mif格式文件。Filenewotherfiles,选择MemoryInitializationFile选项,选才i64点8位的正弦数据,弹出表格后输入教材图4-38中的数据。然后以romd.mif的名

15、字保存至新建的文件夹中。定制LPM_RO流件:利用MegaWizardPlug-InManager定制正弦信号数据ROMg功能块,并将以上的波形数据加载于此ROMfr。并以data_rom.vhd名字将生成的用于例化的波形数据ROMt件保存至上述文件夹中。用VHD用言完成正弦信号发生器的顶层设计:此过程与实验七的步骤类似。五、仿真分析 EIB融电I L_,rTTTTT_rL_rL_rL_rL_rL_rL_rL_rL_rTJ_L_r_rT_r_T_L_r_rL_L_rT_rL 阿 h粕 f还¥言如西丫厂犬昨飞干女再飞M ¥近 ”4父君 ”!丫飞而丫育丫玩Eiii F而?

16、9; :£ g蟀 m 加毕 512因 6L5. 3产破 仃.窣生 20军电工 23.Q1 ns由仿真波形可以看到,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出。将这些数据与图4-38和图4-39所示的加载与LPM_ROMJ数据比较,可以看出,设计是正确的。编译仿真后的波形如下所示:年 H占蜘T M Bai. | 正西丁 一土 蚁 |29.9 nt IrMeiv-Bi. |13.63 M§4如上 |Ehd.五、硬件测试过程.选择电路模式No.5,时钟接实验箱上的CLOCK0将DOUT(0)、DOUT(1、DOUT(7汾别锁定于实验系统上与DAC0832t目接的I/

17、O口:PIO24、PIO25、PIO26、PIO27、PIO28、PIO29、PIO30、PIO31。编译下载后,打开+/-12V电压开关,选择CLOCK0勺频率为750KHz,再将示波器接于实验箱A/D、D/A板上的两个挂钩上观察正弦波形。.从示波器上可看到输出正弦波符合实验要求,由此证明设计是正确的。#僻大学信息工程学院TtwaCollegeofInfomiftlon|Enqlncerin口srfXhangftBfiUniTErprtT7本学期实验心得通过四次实验下来,我觉得对学EDA有了浓厚的兴趣。期间每一次的实验我都认真的对待了,收获颇多,慢慢引导了我改怎样去学好这门EDA课程。第一次

18、实验。实验做的是组合逻辑电路的VHDL设计和时序电路的VHDL设计,我记得我是比较早做完的。因为在上课的吴老师就要我们装好quartusII软件,所以我在很有准备的对quartusII软件有了一定熟悉。开始我还在网上搜索怎么使用quartusII软件,而且还下载了quartusII视频教程,然后一步一步慢慢的学会了使用quartusII软件。当我独自在设计组合逻辑电路的VHDL设计时,我翻阅了书籍全加器的那一节,仔细看了例题3-18,因为这里也利用到了怎么样使用例化语句。而且在我编好了程序的时候,自我感觉良好觉得程序没有什么错误。可是一当运行的时候,就出来了很多的错误,什么没有定义的,什么赋值

19、符号出错的,第一次修改自己的程序真的是伤透了脑经,毕竟是第一次编写VHDL程序,而且还有这么多的错误。然后设计时序电路的VHDL代码时,这个就简单的多了,因为我们只要将其中进程中添加D进去,在把其他剩下的残枝落叶添加好,D锁存器就设计好了。在仿真测试的时候,由于我事先做好了充分的准备,在几乎不到半个小时的样子我的实验就做完了。然后我就在帮助其他的同学调试出错什么的。但是我碰到最多的问题就是他们在做“双2选1多路选择器”的时候,都忘记将底层文件添加进去,所以导致后面的程序频繁出错。其他注意事项,比如实体名要和VHDL文本名一样,赋值符号别弄错了,程序包调用设置等等。第二次实验。使我印象最深刻的是

20、,我在编写10进制加减可控计数器的时候费了好大的心思。因为我记得老师布置给我们的作业里面有个设计“含有异步清零和计数使能的16位二进制加减可控计数器”,我想起了那个程序,然后我就努力的把那个程序改成10进制加减可控计数器。但是我在调试了N遍之后,老是显示什么“=”附近出错,我改了很久,仍»冽作女浮僻梏BSIT程券/月-yxIANGIANurjIVERSII'Y而赢罚育嬴;1-|EnqlmringofMkantftofiUnlTervrtT然没有改正确。然后我又找了我们班的同学,我把我设计此程序的意思讲解给他们听了,但是他们也费了很大的尽还是没有改出来。最后没有办法,只能求救吴

21、老师帮忙了,我把我设计此程序的意思和附加我设计的程序通过邮箱发给了吴老师。等看到吴老师回复给我的邮件时,我才恍然大悟,我把if各种语句的使用全部弄混淆了,最后把我自己也弄的稀里糊涂了,就这样经过老师的帮忙,我才得以设计出用CHOOSE高低电平来控制,高电平控制计数器的加法,低电平控制计数器的减法。然后在对应的将其他的地方编写好,费了我很大心思的10进制加减可控计数器就这样诞生了。第三次实验。我认真做好事先的预习准备,因为我感觉这里的实验和我们学单片机的实验有点相像,都是利用数码管扫描来显示数据。于是我就把我们学的单片机上的程序和VHDL的程序对应起来,只是单片机用的是汇编语言,VHD叫的硬件描述语言,虽然两者的语言不同,但是大体的思路还是相同的,只不过单片机要设置延时程序,而VHDL要设置延时程序,系统已经帮我们调好了,只要我们把程序编好,放到机器里面用就OK了。两者的对比之下,我学会了硬件扫描显示电路的设计思路。然后后面的程序还好做一些,经过吴老师实验前的讲解,使得我们在实验操作过程中少走了弯路,才得以使得我们有充分的时间在研究程序,不断的发现问题。第四次实验。由于听说老师考试的时候不考状态机,所以我这次的实验就没有充分的预习好。但是在得到同学们的程序后还是能迅速的将实验做出来。因为我认真做了前面三次的实验,也积累了不少的经验,拿着程

温馨提示

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

评论

0/150

提交评论