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

下载本文档

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

文档简介

1、实验七 序列检测器的VHDL设计1、 实验目的用状态机实现序列检测器的设计,了解一般状态机的设计与应用。二、实验设计原理 序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串 行二进制码后,如果这组码与检测器中预先设置的码相同,则输出 1,否则输出 0。由于这种检测的关键在于正确码的收 到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。书上P168例5-11 描述的电路完成对序列数“”的检测,当这一串序列数高位在前(左移)串行进入检

2、测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。3、 实验内容用VHDL状态机设计一个8位序列信号检测器。要求:利用QuartusII进行文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序,最后进行引脚锁定并完成硬件测试实验。程序设计及程序分析如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN, CLK, CLR : IN STD_LOGIC; AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END SCHK;ARCHITECTURE behav OF S

3、CHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN D = “” ; PROCESS( CLK, CLR ) BEGIN IF CLR = 1 THEN Q IF DIN = D(7) THEN Q = 1 ; ELSE Q IF DIN = D(6) THEN Q = 2 ; ELSE Q IF DIN = D(5) THEN Q = 3 ; ELSE Q IF DIN = D(4) THEN Q = 4 ; ELSE Q IF DIN = D(3) THEN Q =

4、5 ; ELSE Q IF DIN = D(2) THEN Q = 6 ; ELSE Q IF DIN = D(1) THEN Q = 7 ; ELSE Q IF DIN = D(0) THEN Q = 8 ; ELSE Q Q = 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) BEGIN IF Q = 8 THEN AB = “1010” ; ELSE AB = “1011” ; END IF ; END PROCESS ;END behav ;四、仿真分析编译仿真后的波形如下所示:由仿真结果可以看到,由于预置的密码数是“”,当输入的序

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

6、ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCHK2 ISPORT (DIN,CLK,CLR: IN STD_LOGIC;SHR: IN STD_LOGIC_VECTOR(7 DOWNTO 0); AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY SCHK2;ARCHITECTURE behav OF SCHK2 IS SIGNAL Q : INTEGER RANGE 0 TO 8; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIND=SHR; PROCESS

7、(CLK,CLR) BEGIN IF CLR=1 THEN Q IF DIN=D(7) THEN Q=1; ELSE Q IF DIN=D(6) THEN Q=2; ELSE Q IF DIN=D(5) THEN Q=3; ELSE Q IF DIN=D(4) THEN Q=4; ELSE Q IF DIN=D(3) THEN Q=5; ELSE Q IF DIN=D(2) THEN Q=6; ELSE Q IF DIN=D(1) THEN Q=7; ELSE Q IF DIN=D(0) THEN Q=8; ELSE Q Q=0; END CASE; END IF; END PROCESS;

8、PROCESS(Q) BEGIN IF Q=8 THEN AB=1010; ELSE AB=1011; END IF; END PROCESS;END ARCHITECTURE behav;七、仿真分析编译仿真后的波形如下所示:待检测预置数为“”待检测预置数为“”由仿真结果可以看到,只有当输入的序列数与由外部输入的预置数字相同,输出才由B变成A。实验八 用 QuartusII 设计正弦信号发生器一、实验目的 进一步熟悉 QuartusII 及其 LPM_ROM 与 FPGA 硬件资源的使用方法。二、实验设计原理正弦信号发生器的结构由4个部分组成:计数器或地址发生器(这里选择6位);正弦信号数据

9、ROM(6位地址线,8位数据线),含有64个8位数据(一个周期);VHDL顶层设计、8位D/A(实验中用DAC0832代替)。顶层文件singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由6位计数器担任;正弦数据ROM,由LPM-ROM模块组成。LPM-ROM底层是FPGA中的EAB或M4K等模块。地址发生器的时钟CLK的输入频率f。3、 实验内容要求:在 Quartus II 上完成正弦信号发生器设计,包括时序仿真和资源利用情况了解。最后在实验系统上进行硬件测试。程序设计如下:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE I

10、EEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SINGT ISPORT ( CLK : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0); inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END COMPONENT;SIGNAL Q1 :

11、 STD_LOGIC_VECTOR (5 DOWNTO 0); BEGINPROCESS(CLK ) BEGINIF CLKEVENT AND CLK = 1 THEN Q1Q1, q = DOUT,inclock=CLK);END;四、实验过程定制初始化波形数据文件:建立.mif格式文件。Filenewother files,选择 Memory Initialization File选项,选择64点8位的正弦数据,弹出表格后输入教材图4-38中的数据。然后以romd.mif的名字保存至新建的文件夹中。定制LPM_ROM元件:利用MegaWizard Plug-In Manager定制正弦信号

12、数据ROM宏功能块,并将以上的波形数据加载于此ROM中。并以data_rom.vhd名字将生成的用于例化的波形数据ROM文件保存至上述文件夹中。用VHDL语言完成正弦信号发生器的顶层设计:此过程与实验七的步骤类似。五、仿真分析编译仿真后的波形如下所示:由仿真波形可以看到,随着每一个时钟上升沿的到来,输出端口将正弦波数据依次输出。将这些数据与图4-38和图4-39所示的加载与LPM_ROM的数据比较,可以看出,设计是正确的。五、硬件测试过程选择电路模式No.5,时钟接实验箱上的CLOCK0;将DOUT(0)、DOUT(1)、DOUT(7)分别锁定于实验系统上与DAC0832相接的I/O口:PIO

13、24、PIO25、PIO26、PIO27、PIO28、PIO29、PIO30、PIO31。编译下载后,打开+/-12V电压开关,选择CLOCK0的频率为750KHz,再将示波器接于实验箱A/D、D/A板上的两个挂钩上观察正弦波形。从示波器上可看到输出正弦波符合实验要求,由此证明设计是正确的。本学期实验心得通过四次实验下来,我觉得对学EDA有了浓厚的兴趣。期间每一次的实验我都认真的对待了,收获颇多,慢慢引导了我改怎样去学好这门EDA课程。第一次实验。实验做的是组合逻辑电路的VHDL设计和时序电路的VHDL设计,我记得我是比较早做完的。因为在上课的吴老师就要我们装好quartusII软件,所以我在

14、很有准备的对quartusII软件有了一定熟悉。开始我还在网上搜索怎么使用quartusII软件,而且还下载了quartusII视频教程,然后一步一步慢慢的学会了使用quartusII软件。当我独自在设计组合逻辑电路的VHDL设计时,我翻阅了书籍全加器的那一节,仔细看了例题3-18,因为这里也利用到了怎么样使用例化语句。而且在我编好了程序的时候,自我感觉良好觉得程序没有什么错误。可是一当运行的时候,就出来了很多的错误,什么没有定义的,什么赋值符号出错的,第一次修改自己的程序真的是伤透了脑经,毕竟是第一次编写VHDL程序,而且还有这么多的错误。然后设计时序电路的VHDL代码时,这个就简单的多了,

15、因为我们只要将其中进程中添加D进去,在把其他剩下的残枝落叶添加好,D锁存器就设计好了。在仿真测试的时候,由于我事先做好了充分的准备,在几乎不到半个小时的样子我的实验就做完了。然后我就在帮助其他的同学调试出错什么的。但是我碰到最多的问题就是他们在做“双2选1多路选择器”的时候,都忘记将底层文件添加进去,所以导致后面的程序频繁出错。其他注意事项,比如实体名要和VHDL文本名一样,赋值符号别弄错了,程序包调用设置等等。第二次实验。使我印象最深刻的是,我在编写10进制加减可控计数器的时候费了好大的心思。因为我记得老师布置给我们的作业里面有个设计“含有异步清零和计数使能的16位二进制加减可控计数器”,我

16、想起了那个程序,然后我就努力的把那个程序改成10进制加减可控计数器。但是我在调试了N遍之后,老是显示什么“=”附近出错,我改了很久,仍然没有改正确。然后我又找了我们班的同学,我把我设计此程序的意思讲解给他们听了,但是他们也费了很大的尽还是没有改出来。最后没有办法,只能求救吴老师帮忙了,我把我设计此程序的意思和附加我设计的程序通过邮箱发给了吴老师。等看到吴老师回复给我的邮件时,我才恍然大悟,我把if各种语句的使用全部弄混淆了,最后把我自己也弄的稀里糊涂了,就这样经过老师的帮忙,我才得以设计出用CHOOSE的高低电平来控制,高电平控制计数器的加法,低电平控制计数器的减法。然后在对应的将其他的地方编

17、写好,费了我很大心思的10进制加减可控计数器就这样诞生了。第三次实验。我认真做好事先的预习准备,因为我感觉这里的实验和我们学单片机的实验有点相像,都是利用数码管扫描来显示数据。于是我就把我们学的单片机上的程序和VHDL的程序对应起来,只是单片机用的是汇编语言,VHDL用的硬件描述语言,虽然两者的语言不同,但是大体的思路还是相同的,只不过单片机要设置延时程序,而VHDL不要设置延时程序,系统已经帮我们调好了,只要我们把程序编好,放到机器里面用就OK了。两者的对比之下,我学会了硬件扫描显示电路的设计思路。然后后面的程序还好做一些,经过吴老师实验前的讲解,使得我们在实验操作过程中少走了弯路,才得以使

18、得我们有充分的时间在研究程序,不断的发现问题。第四次实验。由于听说老师考试的时候不考状态机,所以我这次的实验就没有充分的预习好。但是在得到同学们的程序后还是能迅速的将实验做出来。因为我认真做了前面三次的实验,也积累了不少的经验,拿着程序迅速的将指示显示出来了,当按CLK八下时,如果敲进去的8位二进制序列码与预置码相同,则在数码管上显示出A字样。但是我并没有马上叫老师来检查我的结果,而是坐下来慢慢把程序看完,不懂的地方问了同学才得以了解了此程序的用意。但是此次实验让我最痛苦的实验是“用QuartusII设计正弦信号发生器”,老师说只要我们仿真出来就可以了。然后我就按照书上图4-38到图4-45的步骤一个一个的来弄,在经过曲折漫长的过程中,我弄出来了。但是我觉得有几点是非常重要的,因为这是同学们经常出现的错误,我告诉他们之后,他们就一下出来了,最后比我的还在早出来。首先是定制初始化数据文件,两种方法只能用一种,因为有的人用的建立.mif格式文件,但是取名却为sdata.hex。其次是波形数据敲错,有的人看的眼睛花了,敲错了一个数据还不知道,还在那里一个尽的往下敲。最后就是完成顶层文件时,要把将生成的.hex文件和两个.vhd文件都添加进去,

温馨提示

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

最新文档

评论

0/150

提交评论