实验四序列发生器

合集下载

EDA实验报告实验三、序列检测器的设计

EDA实验报告实验三、序列检测器的设计

实验三、序列检测器的设计一、预习内容1、预习序列发生器和检测器的基本工作原理;2、画出实验原理草图;3、写出实验的基本步骤和源程序。

二、实验目的1、掌握序列检测器的工作原理;2、学会用状态机进行数字系统设计。

三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、检测连续4个‘1’的状态机,画出状态转移图,并写出VHD代码;(必做部分)2、了解试验箱,完成数据分配器的硬件实验。

(实验一的硬件操作,首次使用请谨慎使用试验箱!)3、检测“10001110”序列,当检测到该序列后输出为‘1’。

(此部分选作)五、实验原理和实验内容1、序列发生器原理(此部分选作)在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。

本实验要求产生一串序列“10001110”。

该电路可由计数器与数据选择器构成,其结构图如图6-1所示,其中的锁存输出的功能是为了消除序列产生时可能出现的毛刺现象:图6-1 序列发生器结构图2、序列检测器的基本工作过程:序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。

当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。

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

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

状态图如图6-2所示:图6-2 序列检测器状态图3、状态机的基本设计思想:在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。

同时,状态机的设计方法也是数字系统中一种最常用的设计方法。

一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。

实验四 RC一阶电路的响应测试

实验四 RC一阶电路的响应测试

实验四 RC一阶电路的响应测试实验四rc一阶电路的响应测试实验九 RC一阶电路的响应测试一、实验目的1.测量RC一阶电路的零输入响应和零状态响应。

2.学习电路时间常数的测量方法。

3.进一步学习使用示波器绘制图形。

2、原理描述1.动态网络的过渡过程是十分短暂的单次变化过程,对时间常数τ较大的电路,可用慢扫描长余辉示波器观察光点移动的轨迹。

然而能用一般的双踪示波器观察过渡过程和测量有关的参数,必须使这种单次变化的过程重复出现。

为此,我们利用信号发生器输出的方波来模拟阶跃激励信号,即令方波输出的上升沿作为零状态响应的正阶跃激励信号;方波下降沿作为零输入响应的负阶跃激励信号,只要选择方波的重复周期远大于电路的时间常数τ,电路在这样的方波序列脉冲信号的激励下,它的影响和直流电源接通与断开的过渡过程是基本相同的。

电路的响应时间分别按照零阶和慢阶RC的变化规律呈指数增长τ3。

时间常数τ的测定方法(b)零输入响应(a)rc一阶电路(c)零状态响应图9-1三、实验设备第12号IV.实验内容实验线路板的结构如图所示,认清r、c元件的布局及其标称值,各开关的通断位置等等。

名称函数信号发生器双道示波器型号和规格数量11备注1.选择动态线路板上r、c元件,令(1)r=120ω,c=2200pf如图所示的RC充放电电路由以下部分组成:。

E为直流稳压电源的输出,E=24V。

此时,在示波器屏幕上可以观察到激励和响应的变化规律,可以测量时间常数τ,并描述充电和放电uc波形。

少量改变电容值或电阻值,定性观察对响应的影响,并记录观察到的现象。

(2)令r=10kω,c=3300pf,观察并描绘响应波形,继续增大c之值,定性观察对响应的影响。

五、实验注意事项1.示波器的亮度不能太亮。

2.调整仪表旋钮时,不要用力过猛。

3.调节示波器时,要注意触发开关和电平调节旋钮的配合使用,以使显示的波形稳定。

4.作定量测定时,“t/div”和“v/div”的微调旋钮应旋至“校准”位置。

序列信号检测实验报告

序列信号检测实验报告

一、实验目的1. 理解序列信号检测的基本原理。

2. 掌握序列信号检测的方法和步骤。

3. 通过实验验证序列信号检测的准确性。

4. 分析实验结果,探讨影响序列信号检测准确性的因素。

二、实验原理序列信号检测是数字信号处理中的一个重要领域,主要研究如何从含有噪声的信号中检测出特定的序列信号。

本实验采用模拟信号检测的方法,通过设计序列信号发生器和检测器,实现对特定序列信号的检测。

三、实验器材1. 信号发生器2. 数据采集器3. 计算机及软件(如MATLAB等)4. 信号分析仪四、实验步骤1. 设计序列信号发生器:- 根据实验要求,设计特定的序列信号,如“1101”。

- 使用信号发生器产生该序列信号。

2. 设计序列信号检测器:- 设计一个检测器,用于检测序列信号。

- 检测器可以采用状态机或有限状态机(FSM)实现。

3. 实验设置:- 将信号发生器产生的序列信号输入到数据采集器。

- 将数据采集器采集到的信号输入到计算机进行后续处理。

4. 信号处理:- 使用MATLAB等软件对采集到的信号进行预处理,如滤波、去噪等。

- 对预处理后的信号进行序列信号检测。

5. 结果分析:- 分析实验结果,比较检测器检测到的序列信号与原始序列信号是否一致。

- 分析影响序列信号检测准确性的因素,如噪声水平、信号带宽等。

五、实验结果与分析1. 实验结果:- 通过实验,成功检测到了设计的序列信号“1101”。

- 检测到的序列信号与原始序列信号基本一致。

2. 结果分析:- 实验结果表明,所设计的序列信号检测器能够有效地检测出特定序列信号。

- 影响序列信号检测准确性的因素主要包括:- 噪声水平:噪声水平越高,检测难度越大。

- 信号带宽:信号带宽越窄,检测难度越大。

- 序列长度:序列长度越长,检测难度越大。

六、实验结论1. 序列信号检测实验验证了序列信号检测的基本原理和方法。

2. 通过实验,掌握了序列信号检测的步骤和技巧。

3. 实验结果表明,所设计的序列信号检测器能够有效地检测出特定序列信号。

EDA论文+序列信号发生器的设计

EDA论文+序列信号发生器的设计

序列信号发生器的设计吴书娜 物理系 2005级 电子信息工程(1+3)班摘要:在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器[1]。

本设计中选用目前应用较广泛的VHDL 硬件电路描述语言,实现对序列信号发生器的硬件电路描述,在ALTERA 公司的EDA 软件平台MAX+PLUS Ⅱ环境下通过了编译、仿真,并下载到CPLD 器件上进行编程制作,实现了序列信号的发生过程。

关键字:序列信号 VHDL EDA 仿真 MAX+PLUS Ⅱ一、前言:电子设计技术的核心就是EDA 技术,EDA 是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD 通用软件包,主要能辅助进行三方面的设计工作,即IC 设计、电子电路设 和PCB 设计[2]。

EDA 技术已有30年的发展历程,大致可分为三个阶段。

70年代为计算机辅助设计(CAD )阶段,人们开始用计算机辅助进行IC 版图编辑、PCB 布局布线,取代了手工操作。

80年代为计算机辅助工程(CAE )阶段。

与CAD 相比,CAE 除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。

CAE 的主要功能是:原理图输人,逻辑仿真,电路分析,自动布局布线,PCB 后分析[3]。

90年代为ESDA 阶段。

尽管CAD/CAE 技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。

在整个设计过程中,自动化和智能化程度还不高,各种EDA 软件界面千差万别,学习使用困难并且互不兼容,直接影响到设计环节间的衔接。

基于以上不足,人们开始追求贯彻整个设计过程的自动化,即电子系统设计自动化(ESDA )。

EDA 技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA 工具问世,广大电子工程人员应该尽早掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竟争与发展的需要。

实验7序列发生器和检测器的设计与实现

实验7序列发生器和检测器的设计与实现

实验7序列发生器和检测器的设计与实现序列发生器和检测器是数字电路中非常重要的组成部分,用于生成和检测特定的序列模式。

本实验将设计和实现一个简单的序列发生器和检测器。

1.实验目的:-了解序列发生器和检测器的基本原理和实现方法;-掌握用基本门电路实现序列发生器和检测器的设计方法;-熟悉数字电路的设计流程和实验操作。

2.实验仪器和器件:-逻辑门IC(与、或、非门);-数字电路实验箱;-电源。

3.实验原理:-序列发生器是一种能够按照预定规律生成特定序列的电路,通常由多个逻辑门组成。

常见的序列发生器包括计数器、移位寄存器等。

-序列检测器是一种能够检测给定输入序列是否符合预定规律的电路,通常也由多个逻辑门组成。

常见的序列检测器包括状态机、比较器等。

4.实验步骤:1.根据设计要求,确定需要生成和检测的序列类型和规律。

2.设计序列发生器的电路,选择适当的逻辑门进行组合,以实现所需的序列模式。

3.搭建序列发生器电路,将所选逻辑门按照设计连接方式进行布线。

4.进行测试和调试,检查序列发生器是否按照设计要求生成所需的序列。

5.设计序列检测器的电路,选择适当的逻辑门进行组合,以实现对所需的序列模式的检测。

6.搭建序列检测器电路,将所选逻辑门按照设计连接方式进行布线。

可使用开关或其它电源来模拟序列输入。

7.进行测试和调试,检查序列检测器是否能够准确检测给定的输入序列是否符合预期。

5.实验注意事项:-严格按照设计要求进行电路设计和布线,确保连接正确。

-进行测试和调试时,先验证序列发生器的输出是否符合预期,再测试序列检测器的正确性。

-如遇到问题,请仔细检查电路连接是否正确,或寻求助教或教师的帮助。

6.实验结果分析:-比较生成的序列和检测的结果,验证电路的正确性和稳定性。

-如有误差或异常情况,分析可能原因,进行修正和改进。

7.实验总结:-通过本实验,我们了解了序列发生器和检测器的基本原理和实现方法。

-掌握了用基本门电路实现序列发生器和检测器的设计方法。

数字序列发生器实训报告

数字序列发生器实训报告

一、引言数字序列发生器是一种能够产生周期性数字序列的电路,广泛应用于数字通信、数字信号处理等领域。

本次实训旨在通过设计和实现一个数字序列发生器,加深对数字电路设计原理和移位寄存器应用的理解,提高动手实践能力。

二、实训目的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. 实际电路测试结果搭建实际电路,进行功能测试,输出序列符合预期,验证了电路设计的正确性。

序列信号发生器

序列信号发生器

Q2* Q1Q0 Q2 00 01 11 10
0
1
11
dd
D2=Q2Q0'+Q1Q0
Y Q1Q0 Q2 00 01 11 10
01 1 1
1
dd
Y=Q2'Q1'+Q1Q0
11
3.1 利用D 触发器设计一个 110100序列信号发生器
5、检查电路的自启动能力
000
001
010
101 电路是自启动的.
100
011
111
6、得到电路图 (略)
110
12
3.2 用计数器和多路复用器器构成序列信号发生器
方法: 1)如果序列长度为 L ,则将计数器接成 L 进制的计数
器:“n1— n1+L”( 置数法或清零法) 2)将多路复用器的数据输入“ D n1— D n1+L ”接成要
产生序列的信号。 3)将计数器的输出端接到多路复用器的地址输入端。
0100 0010
有效状态
CLOCK
74x194的任何一位Q 输出(如Q0) 都可以实现“100ห้องสมุดไป่ตู้”序列。
Q0 Q1 Q2 Q3
4
2. 用扭环计数器设计“11110000” 序列发生器
CLK Q0
Q1 Q2
Q3
0000
0001
0011
0111 有效圈
1000 1100 1110 1111
5
? 利用扭环计数器构成“11110000”序列发生器
3)再根据状态图画出状态转换表,求出左移时最低位输入的卡 诺图,并求出其表达式。如果有无关项,还要求检察电路的自
启动能力。
4)根据最低位输入表达式,用分立门电路,或者译码器,或者 多路复用器实现反馈输入的组合电路。

实验四信号的矩形脉冲抽样与恢复实验报告

实验四信号的矩形脉冲抽样与恢复实验报告

实验四信号的矩形脉冲抽样与恢复实验报告一、实验目的:1.了解信号的采样过程;2.理解采样定理的意义及实际应用;3.掌握信号的抽样与恢复方法。

二、实验原理:在模拟信号中抽取有限个点称为采样,得到的离散信号称为样值序列。

如果编码的信号本身是模拟信号,就要用到编码器。

在信息传输的过程中,需要用到解码器。

实践证明,恢复出的信号要与原来的信号一致。

三、实验设备:1.示波器:DSO-2090;2.功能发生器:DS345四、实验步骤:1.将示波器和功能发生器连接;2. 设置矩形波信号:频率为10KHz,幅度为5Vpp;3.设置功能发生器为矩形波输出;4. 通过示波器调节观测时间为20ms;5.通过观察示波器的波形,记录采样率增大时信号的样值序列变化;6.记录各种情况下信号恢复后的波形及与原信号的比较。

五、实验结果:1.示例波信号的参数设置如下:频率:10KHz幅度:5Vpp2.采样率增大时信号的样值序列变化如下:观测时间:20ms采样频率:10kHz采样点数:200采样频率(kHz),采样点数,样值序列---------------,----------,----------20,400,图表150,1000,图表2100,2000,图表3200,4000,图表43.信号恢复后的波形及与原信号的比较如下:示波器观测信号恢复效果:观测时间:20ms采样频率:10kHz波形1:图表7波形2:图表8六、实验分析:1.从样值序列的变化可见,随着采样点数的增加,样值序列逼近了原始信号,但较高的采样率并不能保证完全恢复原始信号。

2.样值序列的质量取决于采样频率,较高的采样频率有助于更准确地恢复原始信号。

3.从示波器观测信号恢复效果图中可看出,采样点数较多时,恢复出的信号与原始信号几乎一致。

七、实验总结:通过本次实验,我们了解了信号的采样过程,理解了采样定理的意义及实际应用,并掌握了信号的抽样与恢复方法。

实验结果表明,较高的采样频率有助于更准确地恢复原始信号,而较高的采样率并不能完全保证信号的完全恢复。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学实验报告学生姓名:学号:专业班级:中兴101班实验类型:□验证□综合■设计□创新实验日期:2012、11、16成绩:实验四序列信号发生器与检测器设计一、实验目的1、学习VHDL文本输入法2、学习有限状态机的设计3、利用状态机实现串行序列的输出与序列的检测4、继续学习优化设计二.实验内容与要求1. 设计序列发生器,完成序列为0111010011011010的序列生成器2.用有限状态机设计序列检测器,实现串行序列11010的检测器3. 若检测到符合要求的序列,则输出显示位为“1”,否则为“0”4. 对检测到的次数计数5.整个工程采用顶层文件+底层模块的原理图或文本的设计思路三、实验仪器PC机、Quartus II软件、EDA实验箱四、实验思路1.设计序列发生器基本思想为一个信号CQ1计数,给另一个信号CO(代表序列的每一位)赋值的方法:先设定端口CQ1用于产生序列时计数,因为序列共16位,因此端口CQ1为标准逻辑矢量,位宽为4,设另一个端口M代表序列的每一位,CQ1每计一个数,就给M赋一个值,这样产生一个16位的序列。

由于端口不能参与相关运算,因此在结构体中我分别定义了信号CQ1(标准逻辑矢量,位宽4),信号Q与相应的端口CQ1 CO对应,在进程中参与相应的运算,在程序的最后再用端口接收信号: CO<=Q;在进程中我采用case –when 语句,如当CQ1为“0000”的时候,给另一信号Q赋‘0’,当CQ1为“0001”2.序列检测器序列检测器设计的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及序列,直到在连续的检测中收到的每一位码都与实验要求相同。

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

电路需要分别不间断记忆:初始状态、1、11、110、1101、11010共六种状态,状态转移如图:若检测到“11010”序列,则输出信号N为1,定义VARIABLE X:STD_LOGIC_VECTOR (3 DOWNTO 0)进行计数,最后把变量X赋给输出SS,在数码管上显示检测到序列“11010”的次数。

3.时钟脉冲的选择数码管显示的扫描时钟需要很快的速度,因此采用1KHz频率的时钟;而序列发生器,为了能够人眼识别亮灭,则我选择采用2000分频之后得到的0.5Hz频率五.原理图输入法设计(程序来源:基本上独立完成)1. 建立文件夹建立自己的文件夹(目录),如c:\myeda,进入Windows操作系统Quartus II不能识别中文,文件及文件夹名不能用中文。

2. 原理图设计输入打开Quartus II,选菜单File→New,选择“Device Design File->Block Diagram->Schematic File”项。

点击“OK”,在主界面中将打开“Block Editor”窗口。

(1)分频器模块:(实体名为DIV)本设计使用的FPGA开发板中使用的芯片是Cyclone II EP2C35F672C8,使用的是10kHz的时钟脉冲输入,根据电路的具体设计需要,对其进行分频设计。

如图1所示为系统的分频模块,其中模块Clockout管脚输出为0.5hz的时钟脉冲,得出序列发生器和序列检测器模块正常工作的时钟信号,在Clockin管脚输出为一个1khz的时钟脉冲,作用与动态扫描模块的正常工作。

输入管脚:Clockin为1khz脉冲输入;输出管脚:Clockout为0.5hz脉冲输出;--时间:2012年11月10号--版本:7.2--功能:分频器(2000分频)分频模块DIV源代码div.vhd如下:-------分频程序,从1KHZ中得到0.5HZ的计数频率,2000分频----------LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; --这3个程序包足发应付大部分的VHDL程序设计USE IEEE.STD_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY DIV ISGENERIC(N:Integer:=20000);--此处定义了一个默认值N=10000,即电路为10000分频电路; Port(Clockin:IN STD_LOGIC;ClockOut:OUT STD_LOGIC);END;ARCHITECTURE Devider OF DIV ISSIGNAL Counter:Integer RANGE 0 TO N-1;SIGNAL Temp1:STD_LOGIC; --信号的声明在结构体内,进程外部BEGINPROCESS(Clockin)BEGINIF RISING_EDGE(Clockin) THENIF Counter=N-1 THENcounter<=0;Temp1<=Not Temp1;ELSECounter<=Counter+1;IF Counter=(N/2-1) THENTemp1<=NOT Temp1;END IF;END IF;END IF;END PROCESS;ClockOut<=Temp1;END;(2)序列发生器模块:(实体名为C_OUT)序列发生器模块如图2所示,其中:输入管脚: CLK为0.5hz的时钟脉冲;RST为复位信号;输出管脚:CO序列发生器设计时用于计数,实现模16计数,以产生16位的序列图2--时间:2012年11月10号--版本:7.2--功能:产生一个十六位的指定序列-----------------C_OUT------------------------------------------------------------------LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;--为了重载ENTITY C_OUT ISPORT (CLK,RST:IN STD_LOGIC;--定义时钟和复位信号CO :OUT STD_LOGIC );--序列发生器设计时用于计数,实现模16计数,以产生16位的序列END C_OUT;----------------------------------------------------------------------------------------ARCHITECTURE behav OF C_OUT ISSIGNAL CQ1:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义信号进行计数.实现模16计数,对应依次产生序列的位0到位15;SIGNAL Q: STD_LOGIC;BEGINPROCESS(CLK,RST,Q)BEGINIF RST='1' THEN CQ1<="0000"; Q<='0'; --如果复位,则计数器清0,M也清0 ELSIF CLK'EVENT AND CLK='1' THENCQ1<=CQ1+1; --时钟上升沿到来,Q开始计数,产生序列CASE CQ1 ISWHEN "0000" =>Q<='0';WHEN "0001" =>Q<='1';WHEN "0010" =>Q<='1';WHEN "0011" =>Q<='1';WHEN "0100" =>Q<='0';WHEN "0101" =>Q<='1';WHEN "0110" =>Q<='0';WHEN "0111" =>Q<='0';WHEN "1000" =>Q<='1';WHEN "1001" =>Q<='1';WHEN "1010" =>Q<='0';WHEN "1011" =>Q<='1';WHEN "1100" =>Q<='1';WHEN "1101" =>Q<='0';WHEN "1110" =>Q<='1';WHEN "1111" =>Q<='0';END CASE;END IF;END PROCESS;--序列发生器到此结束CO<=Q;END behav;(3)序列检测模块:(实体名为SCHK)序列检测模块如图3所示,其中:输入管脚: CLK为0.5hz的时钟脉冲;EN为使能端,为1才正常工作;M为显示当前产生的位;输出管脚:N为显示满足序列要求时,产生‘1’,即为标志位。

图3--时间:2012年11月10号--版本:7.2--功能:检测指定的序列---------- SCHK ------------------------------------------------------------------------------LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;--为了重载ENTITY SCHK ISPORT(CLK,EN,M : IN STD_LOGIC; --EN为使能端,为1才正常工作;M为显示当前产生的位N : OUT STD_LOGIC); -N为显示满足序列要求时,产生‘1’,即为标志位END SCHK;----------------------------------------------------------------------------------------ARCHITECTURE behav OF SCHK ISTYPE STATE IS(S0,S1,S2,S3,S4,S5);---状态机的定义,5个状态SIGNAL S:STATE;SIGNAL A1,A2,A3,A4,A5:STD_LOGIC;--SIGNAL Q : INTEGER RANGE 0 TO 5 ;--SIGNAL D : STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL N1:STD_LOGIC;BEGINPROCESS(CLK,S,N1,EN) ---序列检测器进程BEGINIF EN='0' THENS<=S0; N1<='0';A5<='0';A4<='0';A3<='0';A2<='0';A1<='0';ELSIF CLK'EVENT AND CLK='0' THENN1<='0';CASE S ISWHEN S0 => if M='1' then S<=S1;else S<=S0;end if;WHEN S1 => if M='1' then S<=S2;else S<=S0;end if;WHEN S2 => if M='0' then S<=S3;else S<=S2;end if;WHEN S3 => if M='1' then S<=S4;else S<=S0;end if;WHEN S4 => if M='0' then S<=S5; ----生成一个11010序列N1<='1';else S<=S2;end if;--11011010里有一个,同时计数WHEN others=> S<=S0;END CASE;A5<=A4;---移位输出显示在led上以便观看A4<=A3;A3<=A2;A2<=A1;A1<=M;--将最近生产的序列赋给最前端的A1位end if;N<=N1;--显示检测到11010,检测到时它为高电平,它所对应二极管亮,否则二极管灭END PROCESS;END behav ;(4)16进制计数模块(实体名:COUNT)16进制计数模块如图4所示,其中:输入管脚: CLK为检测到一个序列产生一个脉冲;RST为计数复位信号;EN为使能端;输出管脚:Q [3..0]为计数的个位;COUNT计数达到15时,产生标志信号图4--时间:2012年11月10号--版本:7.2--功能:16进制计数模块------------- COUNT -----------------------------------------------LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT ISPORT (CLK,RST,EN :IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT: OUT STD_LOGIC );END ENTITY COUNT;---------------------------------------------------------------------------------------- ARCHITECTURE ONE OF COUNT ISBEGINPROCESS(CLK,EN,RST)V ARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST='1' THEN CQI:= (OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF CQI<15 THENCQI:=CQI+1;ELSE CQI:="0000";END IF;END IF;END IF;IF CQI=15 THEN COUT<='1';ELSE COUT<='0';END IF;Q<=CQI;END PROCESS COUNT;END ARCHITECTURE ONE;(5)数码管显示模块(实体名:scan_led)数码管显示模块如图5所示,其中:输入管脚: CLK为1khz的时钟脉冲;data1[3..0]为要显示的数的个位;data2[3..0] 为要显示的数的十位;输出管脚:scan数码管显示码choose数码管位选信号图5--时间:2012年11月10号--版本:7.2--功能:将计数结果在数码管显示--------------- scan_led ---------------------------------LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan_led ISPORT(clk : IN STD_LOGIC;data1,data2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);scan : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--scan数码管显示码choose: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));--choose数码管位选信号END ENTITY;ARCHITECTURE one OF scan_led ISSIGNAL cout8:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A :STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP1:PROCESS(cout8)—片选BEGINCASE cout8 ISWHEN "000" => choose <= "000"; A <= data1;WHEN "001" => choose <= "001"; A <= data2;WHEN "010" => choose <= "010"; A <= "0000";WHEN "011" => choose <= "011"; A <= "0000";WHEN "100" => choose <= "100"; A <= "0000";WHEN "101" => choose <= "101"; A <= "0000";WHEN "110" => choose <= "110"; A <= "0000" ;WHEN "111" => choose <= "111"; A <= "0000";WHEN OTHERS => NULL;END CASE;END PROCESS P1;P2:PROCESS(clk)BEGINIF clk'EVENT AND clk ='1' THEN cout8 <= cout8+1;END IF;END PROCESS P2;P3:PROCESS(A)—译码BEGINCASE A ISWHEN "0000"=> scan <="0111111"; --0WHEN "0001"=> scan <="0000110"; --1WHEN "0010"=> scan <="1011011"; --2WHEN "0011"=> scan <="1001111"; --3WHEN "0100"=> scan <="1100110"; --4WHEN "0101"=> scan <="1101101"; --5WHEN "0110"=> scan <="1111101"; --6WHEN "0111"=> scan <="0000111"; --7WHEN "1000"=> scan <="1111111"; --8WHEN "1001"=> scan <="1101111"; --9WHEN "1010"=> scan <="1110111"; --AWHEN "1011"=> scan <="1111100"; --BWHEN "1100"=> scan <="0111001"; --CWHEN "1101"=> scan <="1011110"; --DWHEN "1110"=> scan <="1111001"; --EWHEN "1111"=> scan <="1110001"; --FWHEN OTHERS=> NULL;END CASE;END PROCESS P3;END;2.包装元件入库。

相关文档
最新文档