EDA实验报告--序列信号发生器
EDA课设序列信号发生器设计

绪论本次课程设计通过利用quartusII软件实现序列发生器。
从而对EDA进一步的熟悉,了解,和掌握。
通过本课程的学习,可以了解硬件描述语言编程方法 ,掌握VHDL编程方法,掌握序列发生器的形成。
EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。
EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。
典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。
综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。
综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。
也就是说,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD 相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。
HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。
设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
EDA课程设计(信号发生器)

课程设计报告2010 ~ 2011 学年第一学期设计题目:基于FPGA可调信号发生器学院:专业:课程名称: EDA原理与应用学生姓名:时间: 2011年1月指导教师:目录一、系统总体设计---------------------------------------------------------------------2二、系统功能模块设计---------------------------------------------------------------21、矩阵键盘模块------------------------------------------------------------32、频率显示模块-----------------------------------------------------------113、波形数据ROM初始化数据文件设计--------------------------------134、频率、幅度改变模块--------------------------------------------------145、DA转化模块-----------------------------------------------------------186、示波器检测-------------------------------------------------------------18三、结束语---------------------------------------------------------------------------191、矩阵键盘模块:矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键,这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高系统中I/O口的利用率。
EDA正弦波信号发生器实验报告

湖北文理学院 EDA课程实验报告题目:正弦信号发生器的设计院部物理与电子信息工程学院专业名称电子信息科学与技术班级 1111姓名杨庆月学号 **********指导教师王培元2013年12月25日湖北文理学院一、设计目的1、掌握 LPM_ROM与FPGA资源的使用方法2、.进一步掌握用硬件描述语言的设计思想;5.了解有关数字系统的设计。
二、设计项目的指标和内容:设计一个可以产生正弦波信号系统。
信号频率可调,相位可调。
根据情况自己确定频率范围。
在QUARTUSII上完成正弦波信号发生器的设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。
最后在实验系统上实测,包括FPGA中ROM的在系统数据读写测试和利用示波器测试。
三、实验步骤:(全为本人整理,如有雷同,纯属抄袭)第一步,新建任务第二步,输入程序,完全照着书中输入,程序在书P200-201。
第三步,保存(Save As)并建立工程,注意芯片不要选错。
(输完了不要仿真,仿真也是错的)第四步,选择Tools里面的Mega...(见图)。
第五步,出现下图对话框,直接点Next。
第六步,这一步很重要,照着图片搞成一样就行了,画圈圈的地方一定要注意。
记得要一样。
搞好后点Next。
第七步,第六步完事儿后出现下图,看画圈圈的地方,bits 设置为8,words设置为128(也可以设置其他数字,只要与mif文件相符合就OK了)第八步,第七步完Next后出现下面的图片,画圈圈的地方是只沟中间那个。
第九步,选mif文件。
选完后后面的全部点Next。
Mif文件在shiyan8那个文件夹里面。
第十步,把能沟的全勾上。
然后Finish第十一步,编译,我做的有11个警告,不管它,没错误就行。
第十二步,看搞好的电路图。
(Tools-NetlistViewers-RTL Viewer)图是这样的,跟书P201那个一样。
第十三步,建立波形文件第十四步,添加波形第十五步,添加完后,记得把EN和RST挪到最上面并加高电平(高电平有效),然后CLK 添加时钟信号(尽量小点,我搞得是1.0)第十六步,别忘了这个过程,你懂得。
南昌大学EDA实验报告实验六信号发生器

南昌⼤学EDA实验报告实验六信号发⽣器
南昌⼤学实验报告
学⽣姓名:xx 学号:xx 专业班级:xx
实验类型:□验证□综合□设计□创新实验⽇期:2016.11.04 实验成绩:
实验六LPM信号发⽣器
(⼀)实验要求
1、LPM定制⽅法实现。
2、信号数字值存储在ROM中,可以是64个或128个,位长8位。
3、产⽣的信号可以是正弦波或⽅波、三⾓波、锯齿波等,⾃选。
4、⽤SignalTap逻辑分析/或输出到DAC⽰波器观察
(⼆)实验原理
定制LPM-ROM模块,并利⽤其设计⼀个信号发⽣器,该信号发⽣器由以下三部分组成:
(1)计数器或地址信号发⽣器;
(2)信号数据存储器ROM(6位地址线,8位数据线)(3)VHDL顶层程序设计
本实验中待测信号ar和q。
时钟选择clk;使能信号为en,⾼电平触发。
(三)实验步骤
1、定制初始化波形数据⽂件:建⽴.mif格式⽂件。
2、定制LPM_ROM元件:利⽤定制信号数据ROM宏功能块,并将以上波形加载与ROM中。
3、⽤VHDL语⾔完成信号发⽣器的顶层设计。
(四)实验仿真波形
(五)管脚分配
(六)下载测试。
将FPGA板接⽰波器,可实现⽅波,正弦波,三⾓波的波形输出。
控制按键s1,s2,s3,s4可改变波形的频率幅度⼤⼩。
(七)实验⼩结
本次实验我⽤到了创建mif⽂件rom存储,以及嵌⼊式逻辑分析仪的使⽤。
信号发生器实验报告

信号发生器实验报告信号发生器实验报告引言信号发生器是电子实验室中常见的一种仪器,用于产生各种类型的电信号。
本次实验旨在探究信号发生器的原理和应用,以及对其进行一系列的测试和测量。
一、信号发生器的原理信号发生器是一种能够产生不同频率、幅度和波形的电信号的设备。
其主要由振荡电路、放大电路和输出电路组成。
振荡电路负责产生稳定的基准信号,放大电路将基准信号放大到合适的幅度,输出电路将信号输出到外部设备。
二、信号发生器的应用1. 电子器件测试:信号发生器可以用于测试电子器件的频率响应、幅度响应等特性。
通过改变信号发生器的频率和幅度,可以模拟不同工作条件下的电子器件性能。
2. 通信系统调试:在通信系统的调试过程中,信号发生器可以用于模拟各种信号,如语音信号、数据信号等。
通过调整信号发生器的参数,可以测试通信系统的传输质量和容量。
3. 音频设备测试:信号发生器可以用于测试音频设备的频率响应、失真等特性。
通过产生不同频率和幅度的信号,可以对音频设备进行全面的测试和评估。
三、实验过程1. 测试频率响应:将信号发生器连接到待测设备的输入端,逐渐改变信号发生器的频率,并记录待测设备的输出结果。
通过绘制频率响应曲线,可以了解待测设备在不同频率下的响应情况。
2. 测试幅度响应:将信号发生器连接到待测设备的输入端,逐渐改变信号发生器的输出幅度,并记录待测设备的输出结果。
通过绘制幅度响应曲线,可以了解待测设备对不同幅度信号的响应情况。
3. 测试波形输出:将信号发生器连接到示波器,通过改变信号发生器的波形设置,观察示波器上的波形变化。
通过比较不同波形的特征,可以了解信号发生器的波形生成能力。
四、实验结果与分析1. 频率响应:根据实验数据绘制的频率响应曲线显示,待测设备在低频段具有较好的响应能力,而在高频段则逐渐衰减。
这可能是由于待测设备的电路结构和元件特性导致的。
2. 幅度响应:根据实验数据绘制的幅度响应曲线显示,待测设备对于低幅度信号的响应较差,而对于高幅度信号的响应较好。
实验二 序列信号发生及检测器

南昌大学实验报告学生姓名:柳宇航学号:6102113025专业班级:通信工程中兴131班实验类型:□验证□综合□设计□创新实验日期:2015.10.29实验成绩:二序列信号发生和检测器设计(一)实验要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:1、先用设计0111010011011010序列信号发生器,其最后6BIT数据用LED显示出来;2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11011”则输出为“1”,否则输出为“0”。
(二)实验步骤1.建立工作库文件夹,输入计数器的Verilog代码并存盘。
2.选目标器件CycloneII中的EP2C35F672C8并编译。
3.建立仿真波形文件,设置仿真结束时间和输入条件,进行波形仿真。
复位图1仿真波形的建立检测到序列11011,亮灯图2检测11011序列波形分析:当RST为低电平时,复位。
当RST为高电平,开始输入并检测序列。
当检测到序列11011时,z输出高电平,led灯亮。
4.管脚分配led[0]PIN_G13led[1]PIN_G15led[2]PIN_G14led[3]PIN_H12led[4]PIN_H11Q PIN_L9z PIN_H10clk PIN_C13rst PIN_A65.下载测试。
下载到实验箱上测试,上推K8,LED1至LED5移动显示输入序列信号0111010011011010的连续5位,当显示为11011时,LED8亮,可知测试结果符合序列信号发生检测器要求。
(三)实验小结本实验主要主要由以下两部分组成:1:序列信号发生器设置q<=16'b0111010011011010;q[0]<=q[15];Q<=q[15];q[15:1]<=q[14:0];通过循环移位串行输出,并在LED2:序列信号检测器检测11011序列,一共有六个状态,分别为:S=5'd00000,A=5'd00001,B=5'd00011,C=5'd00110,D=5'd01101,E=5'd11011;状态转移图为:。
数字序列发生器实训报告

一、引言数字序列发生器是一种能够产生周期性数字序列的电路,广泛应用于数字通信、数字信号处理等领域。
本次实训旨在通过设计和实现一个数字序列发生器,加深对数字电路设计原理和移位寄存器应用的理解,提高动手实践能力。
二、实训目的1. 理解数字序列发生器的工作原理;2. 掌握移位寄存器的应用方法;3. 提高数字电路设计能力;4. 培养团队合作精神。
三、实训内容1. 数字序列发生器原理分析;2. 电路设计;3. 电路仿真与测试;4. 电路板制作与调试。
四、实训过程1. 数字序列发生器原理分析数字序列发生器由移位寄存器、计数器、逻辑门电路等组成。
其基本原理是:通过移位寄存器存储一个数字序列,在移位脉冲的作用下,将序列逐位右移或左移,从而产生周期性数字序列。
2. 电路设计本次实训设计一个序列循环长度为16的数字序列发生器。
设计步骤如下:(1)确定输入序列:根据实际需求,自定义输入序列,如1010101010101010。
(2)选择移位寄存器:选用4个74LS194移位寄存器,实现并行输入、串行输出。
(3)设计计数器:使用一个74LS161计数器,实现计数功能。
(4)设计逻辑门电路:利用逻辑门电路实现序列的顺序与逆序输出。
(5)绘制电路原理图:根据以上设计,绘制数字序列发生器的电路原理图。
3. 电路仿真与测试(1)电路仿真:使用Multisim软件对电路原理图进行仿真,验证电路功能是否正常。
(2)电路测试:搭建实际电路,进行功能测试,观察输出序列是否符合预期。
4. 电路板制作与调试(1)制作电路板:根据电路原理图,制作电路板。
(2)焊接元件:将74LS194、74LS161、逻辑门电路等元件焊接在电路板上。
(3)调试电路:检查电路连接是否正确,进行功能调试,确保电路工作正常。
五、实训结果与分析1. 仿真结果通过Multisim软件仿真,验证了电路原理的正确性。
在移位脉冲的作用下,输出序列符合预期。
2. 实际电路测试结果搭建实际电路,进行功能测试,输出序列符合预期,验证了电路设计的正确性。
EDA实验报告实验三:序列信号发生器与检测器设计++++

Nb大学实验报告学生姓名:EDA教父学号:6100xxxx99 专业班级:通信实验类型:□验证□综合□设计□创新实验日期:2012-10-15 实验成绩:实验三序列信号发生器与检测器设计一、实验目的1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;2、学习有限状态机法进行数字系统设计;3、学习使用原理图输入法进行设计二、设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:1、先用原理图输入法设计0111010011011010序列信号发生器,其最后6BIT数据用LED显示出来;2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则输出为“1”,否则输出为“0”;三、主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置1套四、实验原理1、序列信号发生器复位信号CLRN。
当CLRN=0时,使CNT=0000,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一。
2、序列信号检测器状态转移图:五、实验步骤1、信号发生器1)建立工作库文件夹,输入设计项目VHDL代码,如下:L I B R A R Y I E E E;U S E I E E E.S T D_L O G I C_1164.A L L;U S E I E E E.S T D_L O G I C_A R I T H.A L L;U S E I E E E.S T D_L O G I C_U N S I G N E D.A L L;E N T I T Y X L S I G N A L16_1I SP O R T(C L K,C L R N:I N S T D_L O G I C;L E D:B U F F E R S T D_L O G I C_V E C T O R(5D O W N T O0);L E D O U T:O U T S T D_L O G I C_V E C T O R(5D O W N T O0);Z O U T:O U T S T D_L O G I C);E N D X L S I G N A L16_1;A R C H I T E C T U R E o n e O F X L S I G N A L16_1I SS I G N A L C N T:S T D_L O G I C_V E C T O R(3D O W N T O0);S I G N A L Z R E G:S T D_L O G I C;--S I G N A L C N T8:S T D_L O G I C_V E C T O R(2D O W N T O0);B E G I Np r o c e s s(c l K)b e g i nc a s e c n t i sW H E N"1000"=>L E D<="101001";W H E N"1001"=>L E D<="010011";W H E N"1010"=>L E D<="100110";W H E N"1011"=>L E D<="001101";W H E N"1100"=>L E D<="011011";W H E N"1101"=>L E D<="110110";W H E N"1110"=>L E D<="101101";W H E N"1111"=>L E D<="011010";W H E N"0000"=>L E D<="110100";W H E N"0001"=>L E D<="101001";W H E N"0010"=>L E D<="010011";W H E N"0011"=>L E D<="100111";W H E N"0100"=>L E D<="001110";W H E N"0101"=>L E D<="011101";W H E N"0110"=>L E D<="111010";W H E N"0111"=>L E D<="110100";W H E N O T H E R S=>L E D<=N U L L;E N D C A S E;E N D P R O C E S S;P R O C E S S(C L K,C L R N)B E G I NI F(C L R N='0')T H E N C N T<="0000";E L S EI F(C L K'E V E N T A N D C L K='1')T H E NC N T<=C N T+'1';E N D I F;E N D I F;E N D P R O C E S S;P R O C E S S(C N T)B E G I NW H E N"0000"=>Z R E G<='0';W H E N"0001"=>Z R E G<='1';W H E N"0010"=>Z R E G<='1';W H E N"0011"=>Z R E G<='1';W H E N"0100"=>Z R E G<='0';W H E N"0101"=>Z R E G<='1';W H E N"0110"=>Z R E G<='0';W H E N"0111"=>Z R E G<='0';W H E N"1000"=>Z R E G<='1';W H E N"1001"=>Z R E G<='1';W H E N"1010"=>Z R E G<='0';W H E N"1011"=>Z R E G<='1';W H E N"1100"=>Z R E G<='1';W H E N"1101"=>Z R E G<='0';W H E N"1110"=>Z R E G<='1';W H E N"1111"=>Z R E G<='0';W H E N O T H E R S=>Z R E G<='0';E N D C A S E;E N D P R O C E S S;Z O U T<=Z R E G;L E D O U T<=L E D;e n d o n e;2)对其进行波形仿真,如下图:2、信号检测器1)建立工作库文件夹,输入设计项目VHDL代码,如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK ISPORT(DIN, CLK, CLR : IN STD_LOGIC;ss : OUT STD_LOGIC_VECTOREND SCHK;ARCHITECTURE behav OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 5 ;SIGNAL D : STD_LOGIC_VECTOR(5 DOWNTO 0);BEGIND <= "11010" ;PROCESS( CLK, CLR )BEGINIF CLR = '1' THEN Q <= 0 ;ELSIF CLK'EVENT AND CLK='1' THENCASE Q ISWHEN 0=> IF DIN = D(4) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ;WHEN 1=> IF DIN = D(3) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ;WHEN 2=> IF DIN = D(2) THEN Q <= 3 ; ELSE Q <= 2 ; END IF ;WHEN 3=> IF DIN = D(1) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ;WHEN 4=> IF DIN = D(0) THEN Q <= 5 ; ELSE Q <= 2 ; END IF ;WHEN OTHERS => Q <= 0 ;END CASE ;END IF ;END PROCESS ;PROCESS( Q )BEGINIF Q = 5 THEN ss <= "1" ;ELSE ss <= "0" ;END IF ;END PROCESS ;END behav ;3)将其转换成可调用元件如图:3.序列信号检测器顶层文件1)调用序列信号发生器和序列信号检测器元件,建立工作库文件夹,输入设计项目原理图如下图:2)对总体进行波形仿真,如下图:4.管脚邦定六、实验心得只能copy到这,后面的自己写吧!DSFKLSD;GKJLSJDFG;LKSD;LG。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告
学生姓名:林聪学号:5801209051 专业班级:中兴091班
实验类型:□验证□综合□设计□创新实验日期:2011/10/19实验成绩:
实验三序列信号发生和检测器
一、实验目的
1、进一步熟悉EDA实验装置和QuartusⅡ软件的使用方法;
2、学习有限状态机法进行数字系统设计;
二、设计要求
完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:
1、先设计0111 0100 1101 1010序列信号发生器,其最后8BIT数据用LED显示出来;
2、再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“11010”则输出为“1”,
否则输出为“0”;
三、主要仪器设备
1、微机1台
2、QuartusII集成开发软件1套
3、EDA实验装置1套
四、实验步骤
1、分析实验,由于实验需要产生具备序列发生器和序列检测器的功能,根据分模块处理的
思想,可以把实验分为两个模块,通过顶层元件建立输入输出的连接。
2、建立模块使用VHDL编程,首先,建立序列发生器的模块,名为xlfsq,VHDL代码如下:
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityxlfsq is
port(clk,rst:instd_logic;
cout,e1,e2,e3,e4,e5,e6,e7,e8:out std_logic);
endxlfsq;
architecture one of xlfsq is
signalcq:std_logic;
signal f1,f2,f3,f4,f5,f6,f7:std_logic;
begin
P1:process(clk,rst)
variablecount:std_logic_vector(3 downto 0);
begin
if(rst='0')then count:="0000";
elsif(clk'event and clk='1')then
count:=count+1;
end if;
case count is
when"0000"=>cq<='0';
when"0001"=>cq<='1';
when"0010"=>cq<='1';
when"0011"=>cq<='1';
when"0100"=>cq<='0';
when"0101"=>cq<='1';
when"0110"=>cq<='0';
when"0111"=>cq<='0';
when"1000"=>cq<='1';
when"1001"=>cq<='1';
when"1010"=>cq<='0';
when"1011"=>cq<='1';
when"1100"=>cq<='1';
when"1101"=>cq<='0';
when"1110"=>cq<='1';
when"1111"=>cq<='0';
when others=>cq<='0';
end case;
ifclk'event and clk='1' then
if count>"0111" then
f1<=cq;f2<=f1;f3<=f2;f4<=f3;f5<=f4;f6<=f5;f7<=f6;
else f1<='0';f2<='0';f3<='0';f4<='0';f5<='0';f6<='0';f7<='0';
end if;
end if;
end process;
cout<=cq;
e1<=cq;e2<=f1;e3<=f2;e4<=f3;e5<=f4;e6<=f5;e7<=f6;e8<=f7;
end architecture one;
再将该文件建立名为xlfsq的工程,对代码例化为元件:
图1 序列发生器
建立名为xlfsq的工程文件,编译后对该功能进行时序仿真,得到仿真图如下:
图2 序列发生器的仿真图
当rst=0无效时,不产生序列,当rst=1有效时,正常产生系列0111 0100 1101 1010。
3、同理,建立序列检测器的模块,注意需要使用状态机来判断是否有与待检测序列相同的
序列出现,建立名为xljcq的VHDL文件,代码如下:
libraryieee;
use ieee.std_logic_1164.all;
entityxljcq is
port(cin,clk,rst:instd_logic;
c:out std_logic);
endxljcq;
architecturebhv of xljcq is
type state is (s0,s1,s2,s3,s4,s5);
signal s:state;
signal D:std_logic_vector(4 downto 0);
begin
D<="11010";
P1:process(clk,rst)
begin
ifrst='0' then s<=s0;
elsifclk'event and clk='1' then
case s is
when s0=>if cin=D(4) then s<=s1;else s<=s0;end if;
when s1=>if cin=D(3) then s<=s2;else s<=s0;end if;
when s2=>if cin=D(2) then s<=s3;else s<=s2;end if;
when s3=>if cin=D(1) then s<=s4;else s<=s0;end if;
when s4=>if cin=D(0) then s<=s5;else s<=s2;end if;
when others=>s<=s0;
end case;
end if;
end process;
P2:process(s)
begin
if s=s5 then c<='1';
else c<='0';
end if;
end process;
end architecture bhv;
对该段代码例化为元件,例化元件如下:
图3
序列检测器
建立名为xljcq的工程文件,编译后对该模块进行仿真,仿真结果如下:
图4 序列检测器的仿真图
只要检测到序列“11010”,则在下一个脉冲的上升沿时产生为时一个时钟周期的高电平。
4、建立顶层模块,运用上面例化好的元件绘制原理图,保存为名为xlfsjcq的文件:
图5 顶层文件原理图(已经绑定好引脚)
再建立名为xlfsjcq的工程文件,编译后进行时序仿真,波形如下:
图6 序列发生检测器的仿真图
当rst=0无效时,不产生序列,输出恒为0,即使产生了序列“11010”之后,如果rst无效仍然检测输出为0;当rst=1有效时,正常产生系列0111 0100 1101 1010,当检测到序列11010时,则输出为1。
5、引脚绑定如下:
图7 引脚绑定图
6、编译后下载到试验箱上观察实验现象。
五、实验现象
把试验箱上的clk接到1HZ,高低电平通过LED等的亮灭来显示,则现象:
垂直方向的交通灯绿灯每个1s亮一次,水平方向的交通灯黄灯产生序列0111 0100 1101 1010;
产生的序列后八位显示在8个用户LED上,当出现11010时,水平方向的交通灯绿灯亮1s,如此循环工作。
六、实验总结
该实验的主要思想是实现序列发生器和序列检测器,前者的实现可以使用case语句来实现,后者的实现需要状态机来检测序列。
该实验主要是让我们体会到了分模块编程的思想,这是一个化简为易的方法,条理清晰,思路明朗,而且便于查错,可以很快的缩小出错的范围找到产生错误的根源。
倘若一股脑的把所有功能写到一个VHDL文件下,则很容易混淆,不便于理解。
所以,今后的编程中,借鉴该种方法来编程,可以达到事半功倍的效果。