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

合集下载

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课程设计(信号发生器)

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正弦波信号发生器实验报告

湖北文理学院 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实验报告实验六信号发生器

南昌⼤学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实验报告实验三:序列信号发生器与检测器设计++++

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)熟悉掌握EDA软件工具Multisim的仿真测试应用。

(2)熟悉序列信号发生器的工作原理。

(3)熟悉序列信号发生器的设计方法二、实验仪器设备与主要器件试验箱;双踪示波器;稳压电源;函数发生器;74LS160;74LS161;74LS251;74LS152和74LS151。

三、实验原理在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号。

通常把这种串行数字信号叫做序列信号,产生序列信号的电路称为序列发生器。

1、技术性序列信号发生器设计过程分为如下两步:(1)根据序列码的长度P设计模P计数器,状态可以任意。

(2)按计数器的状态转换关系和序列码的要求设计组合输出电路。

由于计数器的状态设置和输出序列没有直接关系,因此这种结构对输出序列的更改比较方便,而且还能够同时产生多组序列码。

2、移位型序列信号发生器移位型序列信号发生器是由移位寄存器和组合反馈电路组成。

组合电路的输出,作为移位寄存器的串行输入。

由n位移位寄存器构成的序列信号发生器所产生的序列信号的最大长度为:P=2n。

四、实验内容(1)用计数器74LS160设计一个7位巴克码(0100111)的产生电路,画出电路时序图。

用示波器观察电路输出波形。

仿真图:输出波形:(2)设计灯光控制逻辑电路。

要求红绿蓝三种颜色的灯在时钟信号作用下按如表规定的顺序转换状态。

表中,1表示亮,0表示灭。

CP顺序红绿黄0 0 0 01 1 0 02 0 1 03 0 0 14 1 1 15 0 0 16 0 1 07 1 0 08 0 0 0仿真图:(3)用移位寄存器74LS194设计产生移位序列信号为10110的序列信号发生器。

用发光管显示输出序列信号。

画出时序电路图并用示波器观察时序波形。

仿真图:波形图:。

EDA课程设计的信号发生器

EDA课程设计的信号发生器

重庆大学城市科技学院电气信息学院EDA课程设计报告课程题目函数信号发生器指导教师专业组员学号日期一摘要EDA技术作为现代电子设计的核心,它依赖于功能强大的计算机,在EDA 工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动的完成设计文件,自动的完成逻辑编译,逻辑化简,逻辑分割,逻辑综合,结构综合(布局布线),以及逻辑优化和仿真测试,直到完成既定的电子线路系统功能。

随着基于FPGA的EDA技术的发展和应用领域不断的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。

随着技术市场与人才市场对EDA技术的需求不断提高,产品的市场效率和技术要求也将会影响到教学与科研。

本设计是一个基于VHDL的采用自顶向下设计方法实现的多功能函数信号发生器,该设计方法具有外围电路简单,程序修改灵活和调试容易等特点,并通过计算机仿真和实验证明了设计的正确性。

关键词:FPGA 信号发生器 VHDL 自顶向下二题目分析1、设计目的设计一个信号发生器,用于产生正弦波、方波、三角波、锯齿波信号2、设计要求设计一个信号发生器(1).能产生正弦波、方波、三角波、锯齿波。

(2).能够选择输出不同的波形。

(3).能够调节输出波形的频率。

三硬件电路设计由题目分析可知,要完成整体设计,可通过QuartusⅡ设计出以下各个模块的原理图:1)分频器的原理图2)地址发生器的原理图3)正弦波发生器的原理图4)方波信号发生器的原理图5)锯齿波信号发生器的原理图6)三角波信号发生器的原理图7)四选一选择器原理图其中各波形数据存储ROM的HEX数据文件分别如下各图所示:图3.9 正弦波数据图3.10 方波数据图3.11 锯齿波数据图3.12 三角波数据经过对设计要求的仔细分析与思考,把以上各模块根据其功能和设计思路设计出总的系统原理图如图3.13所示:图3.13 系统综合原理图对整个系统进行硬件测试的引脚设定锁定如图3.14所示,测试时采用的是GW48-EDA系统的电路模式6.图3.14 引脚锁定图四程序设计(1)数控分频器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT( DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);CLK: IN STD_LOGIC;FOUT:OUT STD_LOGIC);END DVF;ARCHITECTURE behav of DVF ISSIGNAL FULL: STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENIF CNT8="11111111" THENCNT8:=DIN;FULL<='1';ELSE CNT8:=CNT8+1;FULL<='0';END IF;END IF;END PROCESS P_REG;P_DIV:PROCESS(FULL)VARIABLE CNT2:STD_LOGIC;BEGINIF FULL'EVENT AND FULL='1' THENCNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1'; ELSE FOUT<='0'; END IF;END IF;END PROCESS P_DIV;END behav;(2)地址发生器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6B ISPORT (CLK,RST,EN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END CNT6B;ARCHITECTURE behav OF CNT6B ISSIGNAL CQI : STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINPROCESS(CLK, RST, EN)BEGINIF RST = '1' THEN CQI <= (OTHERS =>'0') ; --计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN = '1' THEN CQI <= CQI + 1;END IF;END IF;END PROCESS;DOUT<=CQI;END behav;(3)四选一选择器的程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUL41 ISPORT(A,B,C,D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);S1,S0:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY MUL41;ARCHITECTURE ONE OF MUL41 ISSIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINS<= S1 & S0;WITH S SELECTY<= A WHEN "00" ,B WHEN "01" ,C WHEN "10" ,D WHEN "11" ,"ZZZZZZZZ" WHEN OTHERS;END;(4)其余各波形数据存储ROM的设计可以利用MegaWizard Plug-In Manager定制信号数据ROM宏功能块,并将其相应的波形数据加载与定制的ROM中。

eda-信号发生器三角波正弦波方波

eda-信号发生器三角波正弦波方波

1 引言简易多功能信号发生器是信号发生器的一种,在生产实践和科研领域中有着广泛的应用。

信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。

可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。

信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。

它可以产生多种波形信号,如正弦波,三角波和方波等,因而广泛用于通信、雷达、导航、宇航等领域。

在本设计中它能够产生多种波形,如正弦波,三角波和方波等,并能实现对各种波频率和幅度的改变.正因为其在生活中应用的重要性,人们它做了大量的研究,总结出了许多实现方式。

可以基于FPGA 、VHDL、单片机、DOS技能、数字电路等多种方法实现.本设计是采用VHDL来实现的简易多功能信号发生器。

它能产生正弦波,三角波和方波.且对各种波形的要求如下:(1)设计任意信号发生器,使之能够生成正弦波、三角波和方波;(2)电路的外部频率为40MHz,要求信号发生器可产生0—1KHz、1KHz~10KHz、10KHz~1MHz 三档频率的信号;(3)要求具有波形选择和频率选择的功能;(4)在同一频率档内,可实现频率的加减;(5)要求显示波形的同时能够进行频率的调节;(6)要求能够显示波形:A--正弦波;B—-三角波;C——方波;(7)要求能够显示频率值;(8)可用示波器进行波形的观测.2 设计流程2。

1设计思想及流程图本次课程设计按模块式实现,据任务书要求,设计总共分三大步骤完成:(1)产生波形(三种波形:方波、三角波、正弦波)信号;(2)频率控制;(3)显示频率值。

利用VHDL编程,依据基本数字电路模块原理进行整合。

系统各部分所需工作时钟信号由输入系统时钟信号经分频得到,系统时钟输入端应满足输入脉冲信号的要求。

频率控制模块有多个可选频率,最终送至脉冲发生模块输出脉冲信号,同时将信号的频率输出至数码管显示当前信号的频率值,达到设计课题所要求的输出波形频率可调功能。

vhdl eda 序列信号发生器与检测器设计

vhdl eda 序列信号发生器与检测器设计

实验三序列信号发生器与检测器设计一、实验目的1.学习一般有限状态机的设计;2.利用状态机实现串行序列的输出与序列的检测。

3.继续学习优化设计。

二、内容与要求利用状态机设计实现实现串行序列的输出与序列的检测,具体要求:1.先设计序列发生器产生序列0111010011011010;2.再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并将检测到的11010数目显示出来;3.对所设计的电路进行波形仿真和硬件测试;4.整个工程采用顶层文件+底层模块的原理图或文本的设计思路。

三、设计思路/原理图根据实验要求,先设计序列发生器产生序列:0111010011011010;再设计检测器,检测串行信号:11010,若检测到11010信号,则输出“1”,没有检测到则输出“0”,并且将检测到的信号的显示出来。

为简化设计,整个工程采用顶层文件+底层模块的设计方法。

1.序列信号发生器序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。

利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。

REG s0 s1 s2 s3 s4 s5 s6 s7 Q 0 1 1 1 0 1 0 0 REG s8 s9 s10 s11 s12 s13 s14 s15 Q 1 1 0 1 1 0 1 0 2、序列检测器序列检测器设计的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及序列,直到在连续的检测中收到的每一位码都与预置码相同。

在此,必须利用状态转移图。

定义预置信号D=“11010”,电路需要分别不间断记忆:初始状态、1、11、110、1101、11010共六种状态,状态转移图:3、计数模块利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数模块计数。

计数模块设计可采用前面的实验二设计。

EDA实验七八实验报告(1)

EDA实验七八实验报告(1)

实验七序列检测器的VHDL设计(1)实验目的:用状态机实现序列检测器的设计,了解一般状态机的设计与应用。

(2)实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出 1,否则输出 0。

由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。

在检测过程中,任何一位不相等都将回到初始状态重新开始检测。

书上P168例5-11 描述的电路完成对序列数”11100101”的检测,当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出”A”,否则仍然输出”B”。

(3)实验内容 1:用VHDL状态机设计一个8位序列信号检测器。

实验程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCHK ISPORT (DIN,CLK,CLR: IN STD_LOGIC;AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY SCHK;ARCHITECTURE ONE OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 8;SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIND<="11100101";PROCESS(CLK,CLR)BEGINIF CLR='1' THEN Q<=0;ELSIF CLK'EVENT AND CLK='1' THENCASE Q ISWHEN 0=> IF DIN=D(7) THEN Q<=1; ELSE Q<=0; END IF;WHEN 1=> IF DIN=D(6) THEN Q<=2; ELSE Q<=0; END IF;WHEN 2=> IF DIN=D(5) THEN Q<=3; ELSE Q<=0; END IF;WHEN 3=> IF DIN=D(4) THEN Q<=4; ELSE Q<=0; END IF;WHEN 4=> IF DIN=D(3) THEN Q<=5; ELSE Q<=0; END IF;WHEN 5=> IF DIN=D(2) THEN Q<=6; ELSE Q<=0; END IF;WHEN 6=> IF DIN=D(1) THEN Q<=7; ELSE Q<=0; END IF;WHEN 7=> IF DIN=D(0) THEN Q<=8; ELSE Q<=0; END IF;WHEN OTHERS=> Q<=0;END CASE;END IF;END PROCESS;PROCESS(Q)BEGINIF Q=8 THEN AB<="1010";ELSE AB<="1011";END IF;END PROCESS;END ARCHITECTURE ONE;实验步骤如下:1 将源程序以SCHK.vhd的形式存入D盘名为liulin的文件夹中2 全程编译3 时序仿真4 引脚锁定和下载引脚锁定如下:CLR-PIN34;CLK-PIN32;DIN- PIN33;AB[0]- PIN77、 AB[1]- PIN78、AB[2]- PIN83、 AB[3]- PIN84;5 实际测试时序仿真波形如下图:实验分析:选择电路模式 No.8 。

EDA实训函数信号发生器

EDA实训函数信号发生器

《EDA技术与应用》实训报告学号姓名指导教师:实训题目:1.系统设计1.1 设计要求1.1.1 设计任务设计一个多功能信号发生器1.1.2 技术要求①能够产生两种或以上种输出波形(正弦波、三角波、锯齿波等)。

②输出的波形的频率允许有多种选择。

③输出波形的幅度在1V~5V范围内。

④输出的波形能够用示波器测量。

1.2 方案比较运用了我们所学的Vverilog VHDL 语言及Quartus II 7.0软件,来完成并实现这一次实训。

1.3 方案论证1.3.1 总体思路多功能信号发生器的原理框图如图所示。

其中,fpq是分频器,用于对EDA实训仪主板上提供的20MHz的主频率进行分频,以得到满足多功能信号发生器设计需要的时钟频率,clk 是20MHz的主频率输入端,step是步长控制端,当step为0或1时,分别控制分频器的分频比,并由clk_out端输出到Lpm_counter0中,Lpm_counter0是参数可设置的计数器,用于产生lpm_rom4 ,lpm_rom2和lpm_rom3的8位位置,并从q[7..0]端输出到数据选择器abcd 中,并通过s1和s2的组合进行选择。

lpm_rom4, lpm_rom2和lpm_rom3是参数可设置的只读存储器,用于存放多功能信号发生器的波形数据信号,其中lpm_rom3存放的是正弦波,lpm_rom2中存放的是锯齿波,lpm_rom4中存放的是方波。

而波形的产生还需要一份Mif文件。

Mif是将波形分成N个点并将各点输入只读存储器中,这样只读存储器就可以输出相应的波形数据。

只读存储器的位置输出端接于s数据选择器的输入端abcd,而数据选择器便可通过改变从存储器中接受的数据进行区分选择,逐步地取出波形数据,经D/A转换后产生模拟波形输出。

1.3.2 设计方案2.各个模块程序的设计1分频器:module fpq(clk, newclk,step);input clk,step;output newclk;reg newclk;reg[24:0] cnter,sc;reg[1:0] stepcnt;always @(posedge step)beginstepcnt=stepcnt+1;beginif (stepcnt == 0) sc = 2000;else if (stepcnt == 1) sc = 200;else if (stepcnt == 2) sc = 20;else if (stepcnt == 3) sc = 2;else sc = 2000;endendalways @(posedge clk)beginif (cnter < sc) cnter = cnter+1;else cnter = 0;if (cnter < sc/2) newclk = 'b1;else newclk = 'b0;endendmodule2 数据选择器:module jsq(q,a,b,c,d,k1,k2);input k1,k2;input [7:0]a,b,c,d;output reg [7:0]q;always @(k1 or k2)begincase ({k1,k2})'b00: q=a;'b01: q=b;'b10: q=c;'b11: q=d;endcaseendendmodule3.整理与调试过程将示波器的探头与试验箱上DAOUT及GND进行连接,将试验箱接通电源,此时便产生了20MHz的时钟信号,由拨码开关s14和s15分别控制正弦波,方波,锯齿波与三角波的输出,可以在示波器上看到波形成,但是还需要在示波器上调整波的幅度等参数使之形成清晰稳定的波形。

EDA实训之多功能信号发生器

EDA实训之多功能信号发生器

桂林电子科技大学信息科技学院《EDA技术及应用》实训报告学号1251100113姓名王子琪指导教师:杨艺敏2014年4 月29 日多功能信号发生器1 系统设计多功能信号发生器的原理如图所示。

其中,fenpinqi是分频器,用于对EDA实训箱提供的20MHz的主频率进行分频,以得到满足多功能信号发生器设计需要的时钟频率,clk是20MHz的主频率输入端,k1,k2是控制端,当k1,k2改变时,分频器的分频比也随之改变,分频结果由cout端输出。

Lpm_counter1是参数可设置的计数器,用于产生lpm_rom0,lpm_rom1,lpm_rom2的8位地址,并从q[7..0]端输出。

lpm_rom0,lpm_rom1,lpm_rom2是参数可设置的只读存储器,用于存放多功能信号发生器的波形数据信号,mux4_1是数据选择器通过调节s来改变输出波形,经D/A转换后产生模拟波形输出。

1.1 设计要求能够产生两种或以上种输出波形(正弦波、三角波、锯齿波等)。

1.1.1 设计任务输出的波形的频率允许有多种选择。

输出的波形能够用示波器测量。

1.1.2 性能指标要求输出波形的幅度在1V ~5V 范围内。

1.2 设计思路及设计框图 1.2.1设计思路若设计的多功能信号发生器要实现将频率20Mhz 的验箱输出不同的频率则需要一个分频器,分频器的代码如附录中所示,分频器的输出端输出的频率再经过计数器后进入到各个波形的信号数据只读存储器中,之后经过信号数据选择器选择输出的波形。

1.2.2总体设计框图2 各个模块程序的设计数据选择器,分频器程序见下表计数器模块:计数器的元件生成时,首先在执行File 然后New ,打开一个 分频器 计数器 锯齿波正弦波 三角波 输出波形 选择器 新的模块或者原理图文件编辑窗口,双击窗口并选择libraries 栏中的选着arithemtic 的lpm_couter(计数器)lpm 元件,之后点击ok 并在弹出窗口中完成对参数的设置之后就可得到一个计数器元件。

EDA课设报告--信号发生器的设计

EDA课设报告--信号发生器的设计

《集成电路VHDL设计》课程设计报告设计题目专业班级:电信0901设计者:___03 庄威___________06 邓智超_______42 郭乐安______指导教师:蔡剑华设计时间: 2012-06-23目录摘要 (2)Abstract (3)绪论 (4)1.V H D L简介 (5)1.1 VHDL的特点 (5)1.2 VHDL发展史 (5)2.设计的方案确定 (6)2.1.AD558工作原理 (6)2.2设计方案 (7)3.设计流程 (8)4.结束语 (14)5.参考文献 (15)附录 (16)摘要本说明书首先介绍了VHDL语言的特点及发展史;接着简要说明了D/A接口(函数发生器)的工作原理及设计思想和设计方案的确定;然后着重解释了使用VHDL语言设计D/A接口(函数发生器)的具体操作步骤及主要流程。

为了更加详细的解释清楚主要流程在本课程设计说明书中还附加了相应的图片。

最后还附加了实现设计的VHDL源程序。

关键词:VHDL D/A接口设计AbstractThis manual introduces the VHDL language features and development history; followed by a brief description of the D/A interface and the working principle and design ideas and the way that the design program was confirmed; and then I explain the emphasis on the use of VHDL language to design D/A interface and the specific steps and the main process. In order to explain in more details of the main process I also attached the corresponding pictures. Finally I added the VHDL design source codes in the addendum.Keywords: VHDL D/A Interface Design绪论EDA是电子设计自动化(Electronic Design Automation)的缩写。

序列发生器和序列检测器——选作实验EDA

序列发生器和序列检测器——选作实验EDA

UESTCEDA技术及应用实验选作实验——序列发生和序列检测器的设计姓名:孙纪川学号:20110791200222013选作实验序列发生器和检测器的设计一、预习内容1)预习序列发生器和检测器的基本工作原理。

2)画出实验原理草图。

3)写出实验的基本步骤和源程序。

二、实验目的1)掌握序列发生器和检测器的工作原理。

2)学会用状态机进行数字系统设计。

三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干。

四、实验要求1)连续完成一个“10001110”序列和九个非“10001110”序列的发生;2)检测“10001110”序列,当检测到该序列后点亮EDA实验箱的LED灯;3)注意为了点亮LED灯,时钟频率不要选择太高,可以选择几十赫兹的频率。

五、实验报告及仿真结果1)序列发生器和序列检测器的VHDL源程序状态机的状态图:用摩尔型状态机设计的序列检测器的源程序:我修改了报告中的状态图,因为在st8到st0的过程中也需判断输入序列发生器的源程序:用图形输入法表示的序列发生并检测电路的顶层实体:名称关联法在block图中连线2)六、实验结果分析通过实验箱上的实际显示可以看到,序列检测器成功检测到序列发生器的序列点亮LED指示灯。

序列发生器和序列检测器设计成功。

七、心得体会通过此次实验使我了解了状态机的设计过程及用VHDL语言编写状态机,我还学到了摩尔型状态机与米粒型状态机的不同(延迟输出),以及可以用数组左移位的方法并行检测序列。

此次实验的成功之处在于程序编写正确,状态机逻辑明确,程序在实验箱上运行正确。

不足之处在于虽然我编写了米粒型状态机(运行结果也正确但是我没有截图)但是在quartus2软件上仿真并没有体会到延迟输出的现象,下次实验还需加深对米粒型状态机的理解重新改写米粒型状态机。

八、问题及思考问题:如果改变待检测的二进制码(如1011001),状态转换图应如何变化。

答:。

EDA(FPGA)DDS信号发生器课程设计实验报告

EDA(FPGA)DDS信号发生器课程设计实验报告

《电子系统实验报告》课程设计总结报告题目:DDS信号发生器设计人员:学号:同组人员:班级:指导老师:日期:2010.06.12DDS信号发生器一主要功能要求:本课程系统DDS信号发生器设计我们组利用FPGA生成DDS函数信号发生器内核和利用89S52单片机最小系统实现频率字输出和波形选择。

DDS模块与单片机的通信采用SPI串口协议。

系统的16位频率字输出采用单片机的SPI串口协议输出,在DDS模块内部采用16位移位寄存器和16位锁存器进行串行数据到并行数据的转换。

从而实现单片机到DDS模块的通信。

DDS模块由频率累加器、相位累加器、波形查找表、D/A模块组成。

且系统时钟频率工作于75MHZ。

频率和相位累加器采用32位累加器。

波形查找表由三个ROM表组成,分别存储正弦波、方波、三角波的量化数据。

再用一个三选一选择器作为波形输出的控制器件,控制信号由单片机输出。

二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。

正弦波信号由正弦波表输出。

二者再进过一个乘法器,再到D/A模块。

由此完成2ASK模块的设计。

二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。

进过二选一模块选择移位全零或者全一,查ROM表,选择移位180度或者0度,再到D/A。

由此完成2PSK模块设计。

(注:正弦波进行1024次量化采用公式512+511*sin(6.18/1024*k)------k值为1到1024对方波进行1024次量化采用前512位量化数值全为1023 后512位量化数值全为0三角波进行1024次量化采用1.3.5.7…..1023.1021.1019………7.5.3.1的方式进行量化)二整体设计框图及整机概述三系统实现的功能(1)可显示信号发生器输出波形与频率。

(2)正弦波、方波、三角波输出频率范围为35HZ ~ 1.17MHZ。

(3)具有频率设置功能。

(4)输出信号频率稳定度优于0.1。

南昌大学EDA实验报告完整版

南昌大学EDA实验报告完整版

EDA实验报告姓名:曾维鋆学号:6102213863老师:杨鼎成班级:通信工程132班目录实验一半加器及全加器的设计 (3)实验二模可变计数器的设计 (6)实验三序列信号检测器的设计 (11)实验四交通灯控制器设计 (15)实验五多功能数字钟设计 (22)实验六出租车计费器的设计 (34)实验七16*16 点阵显示实验 (40)南昌大学实验报告学生姓名:曾维鋆学号:61002213863 专业班级:通信132班实验类型:□验证□综合█设计□创新实验日期:2015.10.19 实验成绩:实验一半加器及全加器的设计(一)实验目的1、熟悉实验装置和QuartusⅡ软件的使用;2、熟悉和掌握EDA设计流程;3、学习简单组合、时序电路的EDA设计;4、熟悉例化语句的应用。

(二)实验内容设计一个一位全加器。

先设计一个半加器h_adder.v作为预存文件。

然后设计顶层文件对h_adder.v文件进行调用,实现全加器的功能。

(三)实验原理由3个逻辑模块组成,其中两个为半加器,一个是或门。

真值表(四)实验步骤1.建立工作库文件夹,输入半加器和全加器的Verilog HDL代码并分别存盘。

a.半加器module h_adder(A,B,SO,CO);input A,B;3output SO,CO;assign SO=A^B;assign CO=A&B;endmoduleb.全加器module f_adder(ain,bin,cin,cout,sum);output cout,sum;input ain,bin,cin;wire net1,net2,net3;h_adder U1(ain,bin,net1,net2);h_adder U2(.A(net1),.SO(sum),.B(cin),.CO(net3));or U3(cout,net2,net3);endmodule2.选目标器件CycloneII中的EP2C35F672C8并编译。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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文件下,则很容易混淆,不便于理解。

所以,今后的编程中,借鉴该种方法来编程,可以达到事半功倍的效果。

相关文档
最新文档