ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:22.27KB ,
资源ID:4325818      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4325818.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(vhdleda序列信号发生器与检测器设计.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

vhdleda序列信号发生器与检测器设计.docx

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

2、简化设计,整个工程采用顶层文件+底层模块的设计方法。1.序列信号发生器序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号。利用状态机设计,首先定义一个数据类型FSM_ST它的取值为st0到st15的16个状态。REGs0s1s2s3s4s5s6s7Q01110100REGs8s9s10s11s12s13s14s15Q110110102、序列检测器序列检测器设计的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及序列,直到在连续的检测中收到的每一位码都与预置码相同。在此,必须利用状态转移图。定义预置信号D=“11010”,电路需要分别不间断记忆:初始状态、1、11

3、、110、1101、11010共六种状态,状态转移图:3、计数模块 利用序列检测器产生的信号(1和0)作为计数器模块的时钟信号,产生的信号0、1变化,形成类似的CLK信号,实现计数模块计数。计数模块设计可采用前面的实验二设计。4.顶层设计为简化设计,顶层设计采用原理图输入法设计,直接将模块进行连接。4、实验程序(陈杰独立编写)序列信号发生器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY C_OUT IS PORT (CLK,RST :IN STD_LOGIC; CO :OUT STD_LOGIC );END C_OUT;ARCHITECTURE

4、 behav OF C_OUT IS TYPE 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; BEGIN PROCESS(CLK,RST) BEGIN IF RST =1 THEN REG=s0;Q Q=0; REG Q=1;REG Q=1;REG Q=1;REG Q=0;REG Q=1;REG Q=0;REG Q=0;REG Q=1;REG Q=1;REG Q=0;REG Q=1;REG Q=1;REG Q=0;REG Q=1;

5、REG Q=0;REGREG=s0;Q=0; END CASE; END IF; END PROCESS; CO=Q; END behav;转化成可调用的元件:序列信号检测器:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN, CLK, CLR : IN STD_LOGIC; SS : OUT STD_LOGIC);END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 5 ; SIGNAL D : STD_LOGIC_VECTOR

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

7、BEGIN IF Q = 5 THEN SS = 1; ELSE SS 0); ELSIF CLKEVENT AND CLK=1 THEN IF EN=1 THEN IF CQI0); 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

8、;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_

9、vector (4 downto 0);beginif clkevent 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; cqAAAAAAAAAAAAAAAANULL; END CASE; END IF; QEnd Time 来设定仿真结束时间,点击save保存;(3)通过Tools下的Simulator Tools项进行仿真,然后观察和分析输出波形。六、实验仿真波形图如下: A程序I仿真波形:1.根据aq右移变化可以看出2.A点可

10、以看出,检测器检测串行信号11010,若检测到11010信号,ss则输出“1”;没有检测到,ss则输出“0”;程序II仿真波形: A B C D E 1、由cq输出和datain不难看出,datain输入就是序列的输入,从而实现了任意模的输入。2、由ABCDE五点可以发现当t为不同序列时,程序检测的的系列也不同。程序可以检测不同的输入序列t。从而实现了不同系列的检测。程序III仿真波形: (1) (2)从仿真图(1)可知,当B输入不同序列时,产生的序列也不同从仿真图(2)可知,当B输入一个序列时,输出q无限循环右移输出这个序列5.引脚锁定和下载测试 1、引脚锁定在Assigments菜单中选择

11、Pins,打开界面后,在Location栏空白处双击鼠标,依次加入端口,引脚设置参照实验书。 确定好引脚后,保存这些信息,然后再进行编译。 七、 硬件测试程序一、根据电路设计,。测试结果与电路设计功能符合,证明设计是正确的,稳定的。程序二:先设定一个检测序列,然后当给一个手动脉冲时,给一个信号。当连续输入的信号为检测序列时,接q的LED发亮,其他情况不发亮。改变检测序列,连续输入原来序列,LED等不亮。硬件测试和程序设计结果相同。八、 实验小结 通过本次实验我学会了利用状态机实现串行序列发生器和检测器的设计,关键是在画出状态图后设计时序进程和组合进程,例如在设计序列发生器时,源程序首先用一个进

12、程对CLK输入脉冲个数进行统计,统计结果存放信号CNT中。然后用另一个进程根据输入脉冲的统计结果,控制序列信号的输出,当第0个CLK脉冲到来时,输出ZOUT=“1”,当第1个CLK脉冲到来时,ZOUT=“1”,当第2个CLK脉冲到来时,ZOUT=“0”;以此类推,每十六个脉冲为一次循环使输出序列信号为“”。在设计任意输入任意序列检测时,充分利用软件的特性,只要思路方向正确,也不是什么很复杂的问题。EDA重在思考,发现,和不断的探索。九、 实验心得 本次实验的目的在于学习一般有限状态机的设计。状态机包括时序逻辑部分(存储部分)和组合逻辑部分(控制部分),其内部和输出经过一可预测的状态序列。因此设计状态机一般先根据具体问题明确控制输入、条件转换,再画出状态图,做出状态列表。 利用VHDL设计状态机一般包括时序进程和组合进程两个主要部分常常使用CASE语句,条件的转换则可用CASE中的IF语句。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2