设计序列信号发生器
数码电子学实验
设计序列信号发生器
报告人:XXX
一.具体要求
要求用D触发器和门电路设计一个产生1101001序列(序列左边先输出)的序列发生器。
二.实验目的
1.熟悉原理图输出法;
2.了解可编程器件的实际应用。
三.实验准备
1.详解D 触发器 ①电路组成
为了避免同步RS 触发器同时出现R 和S 都为1的情况,可在R 和S 之间接入非门G1,如图1所示,这种单输入的触发器称为D 触发器。
图2为其逻辑符号。
D 为信号输入端。
图1:D 触发器逻辑图 图2:D 触发器逻辑符号
②逻辑功能
在CP=0时,G2,G3被封锁,都输出1,触发器保持原状态不变,不受D 端输入信号的控制。
在CP=1时,G2,G3解除封锁,可接收D 端输入的信号。
如1=D 时,0=D ,触发器翻到1状态,即Q n+1=1,如0=D 时,1=D ,触发器翻到0状态,即Q n+1=0,由此可列出表1所示同步D 触发器的特性表。
表1:同步D 触发器特性表
D Q n Q n+1 说明
0 0 0 输出状态和D 相同 0 1 0 输出状态和D 相同 1 0 1 输出状态和D 相同 1
1
1
输出状态和D 相同
由上述分析可知,同步D 触发器的逻辑功能如下:
当CP 由0变为1后,触发器的状态翻到和D 的状态相同; 当CP 由1变为0后,触发器保持原状态不变。
③D 触发器的名词来源
D 触发器不会发生RS 触发器不确定的情形(S=1,R=1),也不会发生JK 触发器的追跑情况(J=1,K=1),那么为什么成为D 触发器呢?因为输出Q 等于输入D ,但是要经过一个CLOCK
触发之后才产生,在时间上意味着有延迟时间的作用,所以称为D 型(Delay )触发器。
2.确定移位寄存器的级数n (即需要用多少个寄存器来寄存状态)
我们知道,一个D 触发器可以寄存“0”和“1”两种状态,若序列周期为P ,则信号发生器的级数n 应满足2≤P n 。
在本例中,要产生1101001这个序列,3=n 。
3.确定状态转化表
如图3所示,列出所需产生的序列,图中右边的信号先输出,数码下面的水平线表示寄存器状态。
1 0 0 1 0
寄存器状态
图3:序列分析图
所以可得表2所示状态转换表:
表2:状态转换表
现在我们还要注意所涉及的线路是否能够自动启动,因为所要求产生的序列1101001并没有000这种情况,所以在用卡诺图化简时应将000这种情况都考虑在内,使电路能自动启动。
图4:F0的卡诺图化简以及方程式
以逻辑门来完成F0的逻辑表达式:
2
020210Q Q Q Q Q Q F ++=
四:实验内容
通过实验准备我们已经知道用D触发器和门电路设计一个产生1101001序列需要3个D触发器和F0的门电路。
所以我们设计如下电路来实现该功能,CLK为时钟脉冲。
D0 D1 D2 F0门电路
图4:产生1101001序列的信号发生器
触发器D0,D1,D2分别保存Q0,Q1,Q2的信号,初始时Q0,Q1,Q2都为0。
理论分析:
当CLK=1时,Q0,Q1,Q2进过F0门电路,产生信号1,D0,D1,D2储存1,0,0,F输出0;
当CLK=2时,Q0,Q1,Q2进过F0门电路,产生信号1,D0,D1,D2储存1,1,0,F输出0;
当CLK=3时,Q0,Q1,Q2进过F0门电路,产生信号0,D0,D1,D2储存1,1,1,F输出1;
当CLK=4时,Q0,Q1,Q2进过F0门电路,产生信号1,D0,D1,D2储存0,1,1,F输出1;.........
所以,在CLK=4到CLK=10里,产生信号“1101001”。
写入如下ABEL-HDL测试程序:
获得如下仿真结果:
测试结果和理论分析相同,从而验证了所涉及电路的正确。
设计的不足之处:因为D触发器有延迟时间的作用,所以我们产生“1101001”这个序列需要7s,而不能瞬间产生。
五.思考题
用另一种设计产生序号“1101001”。
解析:我们知道,D触发器是基于主从式JK触发器上开发的。
所以,产生序列“1101001”也可以用主从式JK触发器和门电路来实现。
设计电路如下:主从式JK触发器默认符号
写入如下ABEL-HDL测试程序:
获得如下仿真结果:
从结果,我们验证了此电路的正确性。
序列发生器设计.
序列发生器的功能仿真波形的建立
9
计数型序列信号发生器
• 以同步计数器为基础;
• 例:设计产生序列信号为1111000100的发生器; • 序列长度M=10,选用一个模10的同步计数器
10
计数型序列信号发生器
Q3 Q2 Q1 Q0 F
0
0 0 0
0
0 0 0
0
0 1 1
0
1 0 1
1
1 1 1
7
移存型序列信号发生器
entity shiftxuilie is port(clk:in bit; d: in bit; set: in bit; reset:in bit; q:out bit; nq:out bit ); end shiftxuilie;
architecture behavioral of shiftxuilie is component Dtrigger port(clk:in bit; d: in bit; set: in bit; reset: in bit; q: out bit; nq:out bit ); end component; signal t0,t00,t01,t1,t10,t11,t2,t20,t21,t3,t4,t5: bit:='0'; begin U1:Dtrigger port map(clk,t0,set,reset,t00,t01); U2:Dtrigger port map(clk,t00,set,reset,t10,t11); U3:Dtrigger port map(clk,t10,set,reset,t20,t21); t0<=t11 and t21; q<=t20; nq<=not t20; end behavioral;
数电课设 一序列信号发生器
目录1题目一序列信号发生器(000111) (2)1.1课程设计的目的 (2)1.2设计的总框图: (2)1.3设计过程 (2)1.4设计的逻辑电路: (6)1.5实验仪器: (7)1.6实验结论: (7)1.7参考文献: (7)2题目二七进制异步减法计数器(001) (7)2.1课程设计的目的 (7)2.2设计的总框图: (7)2.3设计过程 (8)1.4设计的逻辑电路 (10)1.5实验仪器: (10)1.6实验结论: (11)1.7参考文献: (11)1题目一序列信号发生器(000111)1.1课程设计的目的1了解序列信号发生器的工作原理2学习序列信号发生器的各种功能和设计方法1.2设计的总框图:CP 输入计数脉冲 输出信号1.3设计过程1状态图:/01000110011100001001101110/0/1/1/−−←−−←−→−−→−/12选择触发器,求时钟方程。
选择触发器:由于JK 触发器功能齐全,使用灵活,故选 用4个时钟下降触发的边沿JK 触发器采用同步方案,故取:CP CP CP CP CP ====01233求输出方程 :次态卡诺图:序列信号发生器n QnQ00 01 11 1032nn QQ100 xxxx 1000 0001 xxxx01 xxxx xxxx 0011 xxxx 11 1110 xxxx xxxx 0111 10 1100 xxxx xxxx xxxx输出卡诺图为:n QnQ00 01 11 1023nn QQ100 x 1 1 x01 x x 1 x11 0 x x 010 0 x x x输出方程为:n QY次态卡诺图的分解为:n QnQ00 01 11 1032nn QQ100 x 1 0 x01 x x 0 x11 1 x x 010 1 x x x13+n Q 的卡诺图n n Q Q 23 n n Q Q 0100 01 11 1000 x 0 0 x 01 x x 0 x 11 1 x x 1 101xxx12+n Q 的卡诺图 n n Q Q 23 n n Q Q 01 0001 11 1000 x 0 0 x 01 x x 1 x 11 1 x x 1 10xxx11+n Q 卡诺图n n Q Q 23 n n Q Q 0100 01 11 1000 x 0 1 x 01 x x 1 x 11 0 x x 1 10xxx1+n Q 的卡诺图根据各触发器次态卡诺图可得次态方程:nn n n n nn n n n n n n n n nn n n n Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q 010110212111232312131313+=+=+=+=++++4求驱动方程:JK 触发器的特征方程为:n n n Q K Q J Q +=+1直接对照现态系数,写出驱动:n n n n n nn n Q K Q K Q K Q K Q J Q J Q J Q J 1021321310213213,,,,,,========5检查电路能否自启动:将无效态0000,0010,0100,0101,0110,1101,1111,1001,1011,1010带入公式计算得:0000 1000(有效态),0010 0001(有效态) 0100 1010 0110 10110101 0101 1010 (无效态) ( 无效态) 1101 1110(有效态), 1111 0111(有效态) 1001 1100(有效态)可见所设计的时序电路不能自启动。
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内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。
1011序列发生器和检测器的设计实现
1011序列发生器和检测器的设计实现摘要序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号.能产生这种信号的逻辑器件就称为序列信号发生器.根据结构不同,它可分为反馈移位型和计数型两种.1.移位型序列信号发生器的组成移位型序列信号发生器是由移位寄存器和组合电路两部分构成,组合电路的输出,作为移位寄存器的串行输入。
由n位移位寄存器构成的序列信号发生器所产生的序列信号的最大长度为:P=2n2.计数型序列信号发生器组成与特点计数型序列信号发生器能产生多组序列信号,这是移位型发生器所没有的功能.计数型序列信号发生器是由计数器和组合电路构成的,序列的长度P就是计数器的模数。
3.D触发器构成的序列信号发生器序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。
由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,知道在连续的检测中所收到的每一位码都与预置数的对应码相同。
在检测过程中,任何一位不相等都将回到初始状态重新开始检测。
我们采用的是计数型序列信号发生器。
利用计数器与数据选择器构成1011序列发生器,1011序列检测器——上面的输出端,接入一个74LS194移位寄存器再接一个4输入与门,数字0那端输入前加一个非门,这样检测到1011时输出1,其余结果均输出0.然后并用MUX+plus2进行仿真。
关键字1011,序列发生器,检测器,74LS194,数据选择器,74LS163,74LS151一. 总设计序列检测器也称为串行数据检测器,它在数据通讯,雷达和遥测等领域中用于检测同步识别标志,是一种用来检测一组或多组序列信号的电路。
本文输入的序列信号由计数器和数据选择器组成的序列信号发生器提供。
74LS194 74LS163计数器是一种含有若干个触发器、并按预定顺序改变各触发器的状态,累计输入脉冲个数的数字电路。
波形及序列信号发生器设计
课题十四波形及序列信号发生器设计学习目标:设计由555、移位寄存器、D/A转换器、PLD等器件构成的多路序列信号输出和阶梯波输出的发生器电路,重点学习555、D/A转换器及可编程逻辑器件的原理及应用方法。
用Proteus软件仿真;实验测试技术指标及功能、绘制信号波形。
一、任务与要求四相步进电机有四相八拍和四相四拍两种工作方式。
其状态转换图为:四相八拍四相四拍用555、74194、2817、DA8032等IC设计一个四相步进电机控制电路和对应阶梯波输出的发生器电路,要求:1.CP频率2Hz~2kHz连续可调。
2.有四相八拍和四相四拍两种工作方式,能控制步进电机正转和反转。
3.调试时用(共阴)七段数码管(注意加限流电阻)的上四段或下四段模拟步进电机。
*验收用的步进电机的相电压为5V,相电流为0.2A。
4.将多路序列信号通过D/A转换成阶梯波输出。
要求输出电压V o=(数字量/10)V,误差<+5%。
例如对应数字量1001,V o应为0.900V~0.905V。
5.*步数(或圈数)显示。
(选作)6.**步数(或圈数)控制。
(较难的选作)二、课题分析及设计思路多路序列信号发生器在数字电路设计中应用较多,如彩灯循环,步进电机驱动等。
其设计方案较多。
下面以三相步进电机控制为例讲述多路序列信号发生器的设计思路。
本来任务与要求中已列出主要IC的型号,但考虑这是数字电路的最后一个课题,故下面将介绍几种不同的方案,使大家对数字电子技术有更深入的了解。
步进电机广泛应用于各种自动控制和计算机系统(如数控机床、机器人、打印机、光驱)中。
三相步进电机原理见图14.1。
其中转子有较强的磁性。
三相步进电机有三相三拍和三相六拍两种工作方式。
其状态转换图为:001→011→010 001→010 011 →↑↓↑↓↑↓101←100←110 ← 100 101←110三相六拍三相三拍a 三相三拍b一般不用三相三拍b。
图14.1三相步进电机控制器原理框图见图14.2:时钟电路用555构成,用电位器实现频率连续可调。
设计序列信号发生器
澳 門 科 技 大 學MACAU UNIVERSITY OF SCIENCE AND TECHNOLOGYAvenidaWai Long, Taipa, Macau Faculty of Information Technology数码电子学实验设计序列信号发生器报告人:XXX一.具体要求要求用D 触发器和门电路设计一个产生1101001序列(序列左边先输出)的序列发生器。
二.实验目的1.熟悉原理图输出法;2.了解可编程器件的实际应用。
三.实验准备1.详解D 触发器 ①电路组成为了避免同步RS 触发器同时出现R 和S 都为1的情况,可在R 和S 之间接入非门G1,如图1所示,这种单输入的触发器称为D 触发器。
图2为其逻辑符号。
D 为信号输入端。
G1 G2 G3图1:D 触发器逻辑图 图2:D 触发器逻辑符号②逻辑功能在CP=0时,G2,G3被封锁,都输出1,触发器保持原状态不变,不受D 端输入信号的控制。
在CP=1时,G2,G3解除封锁,可接收D 端输入的信号。
如1=D 时,0=D ,触发器翻到1状态,即Q n+1=1,如0=D 时,1=D ,触发器翻到0状态,即Q n+1=0,由此可列出表1所示同步D 触发器的特性表。
表1:同步D 触发器特性表由上述分析可知,同步D 触发器的逻辑功能如下:当CP 由0变为1后,触发器的状态翻到和D 的状态相同; 当CP 由1变为0后,触发器保持原状态不变。
③D 触发器的名词来源D 触发器不会发生RS 触发器不确定的情形(S=1,R=1),也不会发生JK 触发器的追跑情况(J=1,K=1),那么为什么成为D 触发器呢?因为输出Q 等于输入D ,但是要经过一个CLOCK 触发之后才产生,在时间上意味着有延迟时间的作用,所以称为D 型(Delay )触发器。
2.确定移位寄存器的级数n (即需要用多少个寄存器来寄存状态)我们知道,一个D 触发器可以寄存“0”和“1”两种状态,若序列周期为P ,则信号发生器的级数n 应满足2≤P n 。
12.3 序列信号发生器的设计
——Design Sequential Circuits with MSI blocks序列信号发生器:能循环产生一组特定的串行数字序列信号的电路。
序列的长度:序列信号的位数。
如:序列为00011,则序列长度为5。
☐ 使用环形计数器设计 ☐ 使用扭环计数器设计特殊类型1000 0100 001000011101 1110 01111011常用状态图0000 1000 001100011100 111011110111常用状态图序列状态之间很有规律☐ 使用D 触发器设计☐ 使用计数器 + 数据选择器设计; ☐ 用移位寄存器 + 反馈电路设计(逻辑门 or 译码器 or 数据选择器)☐ 用计数器 + PROM 设计任意类型例:用D 触发器设计一个 110100 序列信号发生器时序电路的不同状态对应输出序列中的各位。
S 0 /Y=1 S 1 /Y=1 S 2 /Y=0 S 3 /Y=1S 4 /Y=0S 5 /Y=01. 画状态转换图大体思路:1.实现序列信号一个周期之内的波形2.将此波形循环再现☐序列信号长度为 L ,则取 L 个不同的状态☐每个状态下时序电路的输出就是序列信号中的一位。
方法1:利用D 触发器2. 状态编码S 0 —— 000 , S 3 —— 011 S 1 —— 001 , S 4 —— 100 S 2 —— 010 , S 5 —— 1013. 状态转换真值0 0 00 0 1 0 1 0 0 1 1 1 0 0 1 0 10 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0Q 2Q 1Q 0 Q 2 n+1 Q 1 n+1Q 0n+1Y1 1 0 1 0 04.卡诺图化简D 0=Q 0’D 1=Q 2’Q 1’Q 0+Q 1Q 0’XX11 0 0 1 00 01 11 10 0 1Q 1Q 0 Q 2X1 0 1 0 00 01 11 10 0 1Q 1Q 0 Q 2XX10 1 0 0 00 01 11 10 0 1Q 1Q 0Q 2D 2=Q 2Q 0’+Q 1Q 0XX0 1 1 1 00 01 11 10 0 1Q 1Q 0 Q 2Y=Q 2’Q 1’+Q 1Q 05. 电路实现(略)6. 检查无关项000001010011100101110111时序电路可以自启动。
序列信号发生器的设计_计算机逻辑设计_[共4页]
1946.3.5 序列信号发生器的设计序列信号是把一组0、1数码按一定规则顺序排列的串行信号。
对于给定的序列信号,设计其发生器一般有两种结构形式:计数型序列信号发生器和移存型序列信号发生器。
计数型序列信号发生器的特点是,所产生的序列信号的长度等于计数器的模值,并可根据需要产生一个或多个序列信号。
先用计数器构成一个模P的计数器,然后辅以多路选择器、译码器或其他门的组合逻辑可以方便地构成各种序列发生器。
(1)选用多路选择器:把要产生的序列按规定的顺序加在多路选择器的输入端,把地址端与计数器的输出端适当地连接在一起,多路选择器的输出能得到所需的序列信号。
(2)选用译码器:把计数器的输出端和译码器的输入相连,将序列信号中为1的信号对应最小项用组合逻辑组合输出。
(3)选用其他门的组合逻辑:直接采用组合逻辑连接计数器的输出。
获得所需要的序列。
【例6.17】采用计数器74163和各种组合逻辑设计产生序列00010111。
解:序列为8位二进制代码,因此,首先构建模8的计数器。
对于同步置数的74163而言,当计数由0000计到0111,即Q A=1,Q B=1,Q C=1时,使用与非门反馈到置数端,使计数器模8计数。
(1)使用多路选择器输出。
如选用8选1多路选择器74151,则将需要产生的序列信号00010111分别接到输入端,将地址端与计数器的输出端低三位适当地连接在一起,如图6.63所示,随着时钟脉冲,多路选择器的输出Z即是所需的序列。
图6.63 使用多路选择器设计计数型序列信号发生器(2)使用译码器输出。
如选用低电平输出有效的译码器74138,则将8位序列00010111中为1的第3、5、6、7位通过与非门连接输出。
如图6.64所示。
图6.62 计数型序列信号发生器。
序列信号发生器的设计方法及应用实例
序列信号发生器的设计方法及应用实例在现代通信系统中,序列信号发生器是一个非常重要的设备,它能够产生各种类型的信号序列,如随机序列、伪随机序列、码片序列等。
这些信号序列在数字通信系统、脉冲调制系统以及其他通信系统中起着至关重要的作用。
在本文中,我将深入探讨序列信号发生器的设计方法及其应用实例,并共享一些个人观点和理解。
1. 序列信号发生器的基本原理序列信号发生器是一种能够产生特定类型的信号序列的设备。
其基本原理是利用特定的算法和逻辑电路来产生所需的信号序列。
在设计序列信号发生器时,首先需要确定所需的信号类型,如随机序列、伪随机序列或者其他类型的序列。
然后根据所选的信号类型,选择合适的算法和电路来实现信号的生成。
最常见的序列信号发生器包括线性反馈移位寄存器(LFSR)、差分方程序列发生器等。
2. 序列信号发生器的设计方法在设计序列信号发生器时,需要考虑信号的周期、自相关性、互相关性等性能指标。
一般来说,设计序列信号发生器的方法可以分为以下几个步骤:(1)确定信号类型:首先需要确定所需的信号类型,如随机序列、伪随机序列或者其他类型的序列。
(2)选择算法和电路:根据所选的信号类型,选择合适的算法和电路来实现信号的生成。
常用的算法包括线性反馈移位寄存器、差分方程序列发生器等。
(3)优化性能指标:优化信号的周期、自相关性、互相关性等性能指标,以确保生成的序列满足系统的要求。
(4)验证和测试:设计完成后,需要对信号发生器进行验证和测试,确保其生成的信号符合设计要求。
3. 序列信号发生器的应用实例序列信号发生器在数字通信系统、脉冲调制系统以及其他通信系统中有着广泛的应用。
以下是一些典型的应用实例:(1)伪随机噪声序列发生器:在数字通信系统中,伪随机噪声序列被广泛用于信道编码、扩频通信以及通信安全等领域。
(2)码片序列发生器:在脉冲调制系统中,码片序列被用于直序扩频通信系统中的扩频码生成。
(3)随机序列发生器:在通信加密领域,随机序列被用于数据加密和解密。
vhdl-eda-序列信号发生器与检测器设计
实验三序列信号发生器与检测器设计一、实验目的1.学习一般有限状态机的设计;2.利用状态机实现串行序列的输出与序列的检测。
3.继续学习优化设计。
二、内容与要求利用状态机设计实现实现串行序列的输出与序列的检测,具体要求:1.先设计序列发生器产生序列;2.再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并将检测到的11010数目显示出来;3.对所设计的电路进行波形仿真和硬件测试;4.整个工程采用顶层文件+底层模块的原理图或文本的设计思路。
三、设计思路/原理图“1”,没有检测到则输出“0”,并且将检测到的信号的显示出来。
为简化设计,整个工程采用顶层文件+底层模块的设计方法。
1.序列信号发生器序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。
利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。
REG s0 s1 s2 s3 s4 s5 s6 s7Q 0 1 1 1 0 1 0 0REG s8 s9 s10 s11 s12 s13 s14 s15Q 1 1 0 1 1 0 1 02、序列检测器序列检测器设计的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及序列,直到在连续的检测中收到的每一位码都与预置码相同。
在此,必须利用状态转移图。
定义预置信号D=“11010”,电路需要分别不间断记忆:初始状态、1、11、110、1101、11010共六种状态,状态转移图:3、计数模块利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数模块计数。
计数模块设计可采用前面的实验二设计。
4.顶层设计为简化设计,顶层设计采用原理图输入法设计,直接将模块进行连接。
四、实验程序(陈杰独立编写)序列信号发生器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY C_OUT ISPORT (CLK,RST :IN STD_LOGIC;CO :OUT STD_LOGIC );END C_OUT;ARCHITECTURE behav OF C_OUT ISTYPE FSM_ST IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15); SIGNAL REG:FSM_ST;SIGNAL Q:STD_LOGIC;BEGINPROCESS(CLK,RST)BEGINIF RST ='1' THEN REG<=s0;Q<='0';ELSIF CLK'EVENT AND CLK='1' THENCASE REG ISWHEN s0=> Q<='0'; REG<=s1;WHEN s1=> Q<='1';REG<=s2;WHEN s2=> Q<='1';REG<=s3;WHEN s3=> Q<='1';REG<=s4;WHEN s4=> Q<='0';REG<=s5;WHEN s5=> Q<='1';REG<=s6;WHEN s6=> Q<='0';REG<=s7;WHEN s7=> Q<='0';REG<=s8;WHEN s8=> Q<='1';REG<=s9;WHEN s9=> Q<='1';REG<=s10;WHEN s10=> Q<='0';REG<=s11;WHEN s11=> Q<='1';REG<=s12;WHEN s12=> Q<='1';REG<=s13;WHEN s13=> Q<='0';REG<=s14;WHEN s14=> Q<='1';REG<=s15;WHEN s15=> Q<='0';REG<=s0;WHEN OTHERS=>REG<=s0;Q<='0';END CASE;END IF;END PROCESS;CO<=Q;END behav;转化成可调用的元件:序列信号检测器:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK ISPORT(DIN, CLK, CLR : IN STD_LOGIC;SS : OUT STD_LOGIC);END SCHK;ARCHITECTURE behav OF SCHK ISSIGNAL Q : INTEGER RANGE 0 TO 5 ;SIGNAL D : STD_LOGIC_VECTOR(4 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 ;转化成可调用的元件:计数模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT ISPORT (CLK, EN,RST :IN STD_LOGIC;Q1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);Q2: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(7 DOWNTO 0);BEGINIF RST='1' THEN CQI:= (OTHERS=>'0');ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF CQI<153 THENIF CQI(3 DOWNTO 0)=9 THEN CQI:=CQI +7; --高位进位ELSE CQI := CQI+1;END IF;ELSE CQI:= (OTHERS=>'0');END IF;END IF;END IF;IF CQI=153 THEN COUT<='1';ELSE COUT<='0';END IF;Q1<=CQI(3 DOWNTO 0);Q2<=CQI(7 DOWNTO 4);END PROCESS COUNT;END ARCHITECTURE ONE;转化成可调用的元件:顶层文件(原理图法):第二种方法(任意序列,任意检测):实验程序如下:library ieee;use ieee.std_logic_1164.all;entity jiance11010 isport(datain,clk:in std_logic;t: in std_logic_vector (4 downto 0);q:out std_logic;cq: out std_logic_vector (4 downto 0)); end jiance11010;architecture rt1 of jiance11010 issignal reg:std_logic_vector(4 downto 0);beginprocess(clk)variable t1:std_logic_vector (4 downto 0);beginif clk'event and clk='1' thenreg(0)<=datain;reg(4 downto 1)<=reg(3 downto 0) ;end if;t1:=t;if reg=t1 then q<='1' ;else q<='0';cq<=reg;end if;end process;end rt1;基于实验发现序列一个一个输入比较麻烦所以设计如下任意十六位循环系列:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jc ISPORT(CLK,CLR,RESET:IN STD_LOGIC;B: in std_logic_vector (15 downto 0) ;q:out std_logic);END ENTITY;ARCHITECTURE ONE OF jc ISSIGNAL A:STD_LOGIC;BEGINPROCESS(CLK,CLR)V ARIABLE N:INTEGER RANGE 16 DOWNTO 1;BEGINIF RESET='1' THEN N:=1;ELSIF CLK'EVENT AND CLK='1'THEN CASE N ISWHEN 1=>A<=B(0);N:=N+1;WHEN 2=>A<=B(1);N:=N+1;WHEN 3=>A<=B(2);N:=N+1;WHEN 4=>A<=B(3);N:=N+1;WHEN 5=>A<=B(4);N:=N+1;WHEN 6=>A<=B(5);N:=N+1;WHEN 7=>A<=B(6);N:=N+1;WHEN 8=>A<=B(7);N:=N+1;WHEN 9=>A<=B(8);N:=N+1;WHEN 10=>A<=B(9);N:=N+1;WHEN 11=>A<=B(10);N:=N+1;WHEN 12=>A<=B(11);N:=N+1;WHEN 13=>A<=B(12);N:=N+1;WHEN 14=>A<=B(13);N:=N+1;WHEN 15=>A<=B(14);N:=N+1;WHEN 16=>A<=B(15);N:=1;WHEN OTHERS=>NULL;END CASE;END IF;Q<=A;END PROCESS;END ARCHITECTURE;五、实验步骤1.建立工作库文件夹和编辑模块设计文件(1)在D盘下建立一个文件夹保存工程文件;(2)打开QuartusII,建立新的VHDL文件,在设计有顶层和底层文件时,在打开的页面下输入模块设计程序。
