




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
串行口数据传输的仿真及硬件实现学院:信息与通信工程学院专业:通信工程班级:姓名:序号:一、 实验目的 综合数字逻辑电路和串行口通信的有关知识,用硬件独立设计完成一个简单的串行口数据传输系统,并用FPGA 可编程逻辑器件进行仿真。二、 实验要求1) 发送信息码:111100010011010;2) 用同步检测电路检测同步码:1111000,并使电路板加电后 首先显示同步码;3) 同步码及其他各组串行码要求在数码管上逐个显示;4) 字符检测电路中先用串行检测方法设计实现,再用并行检测方法设计实现。三、总体方案框图字符检测电路控制电路串并转换锁存接收显示电路时钟电路信息码发生器电路总体分为7个模块:时钟电路模块、字符发生器模块、串/并转换模块、字符检测电路模块、控制电路模块、锁存显示模块和显示电路模块。各模块间的输入输出数据流如图所示。四、 各部分电路的数字逻辑设计过程和结果1、时钟电路模块:实验室所提供的晶振的时钟频率为1MHz,若直接使用人眼将无法正常观测出实验结果。所以需要设计分频模块,将1MHz的时钟频率通过分频器降低到约2Hz,这样才可以正确显示结果。本次实验使用74LS163四位同步计数器级联实现分频功能。每个74LS163最多为24=16分频。为了实现本实验分频的要求,分频系数应该达到:1062=5105219。所以需要5块74LS163芯片级联实现分频,所得频率为1MHz/219=1.9Hz具体电路图如下:2、 字符发生器模块:本次试验要求发送端产生信息码为111100010011010这个15位循环码。字符发生模块使用由D触发器构成移位寄存器的序列信号发生器。由于循环码为15位,231524,故至少应该使用4位D触发器。经检查,此序列所构成的15个4位的序列不重复,刚好可以用4为D触发器来做次序列发生器,D触发器选用74LS175四D触发器。状态转移表:Q4Q3Q2Q1D111101110011000100010001000100010011001100110011011101010101010111011101111 卡诺图:由卡诺图得: 0000项为任意项,为了确保电路可以自启动,将其当1项圈入,得D= 。电路图如下:3、 串/并转换模块:串并转化的实现可以通过移位寄存器来实现,因为需要7位并行输出,所以需要两块移位寄存器74LS194级联构成。电路图如下:4、 串行字符检测模块:串行字符检测需要一位一位检测,然后每位都符合才输出信号。若每位都检测,将会使用较多触发器,使电路复杂化。经过观察,同步码1111000中后四位1000在整个序列111100010011010中是唯一的,所以检测1000四位即可。当连续有4位与1000相应匹配时,则输出信号。状态转移图如下:对A、B、C、D分别编码为00、01、11、10,则状态转移表为:D=0D=1000001011101111000100000输出为: ZD=0 D=10000010011001010卡诺图分别如下:所以,由卡诺图可得:D1=D2=Z=由此可得到电路图:5、 并行字符检测模块:由两个数据比较器74LS85级联可得7位数据比较器,当并行输入为1111000时输出高电平作为控制电路输入,实现并行字符检测。具体电路图如下:6、 控制电路模块:控制电路完成的功能比较复杂。首先,控制电路要保证在检测到同步码之前,锁存器关闭,没有任何输出;其次,在检测到同步码之后,字符检测电路不能对后级有任何影响,而是由控制电路控制每个7位输出一次。对于第一个功能可以使用一块D触发器74LS74接受字符检测电路的信号,再通过反馈电路使接收到同步码产生的高电平后D触发器的时钟信号恒为1,无触发沿,电路输出维持原状态,即恒为1,对锁存电路没有影响。对于第二个功能,可以由一个7进制计数器实现,这里选用同步置位的计数器74LS161。 用进位信号的非作为预置信号,计数器的状态循环为:1001 1010 1011 1100 1101 1110 1111 1001 。并用D触发器的输出和主时钟信号的与作为计数器的时钟,确保计数器从检测电路输出第一个高电平,即同步码1111000第一次出现的时刻起计数。并行检测控制电路:由于信息码经过串并转换电路时延迟了一个CP,所以并行检测的输出比同步码1111000的输出晚了一个CP,而计数器74LS161在时钟信号未到达时默认起始状态为0000,故须在15个CP之后才产生第一个预置信号,从而才开始7进制计数。故7进制计数器输出的第一个高电平脉冲正好比第一个同步码1111000的输出迟了16个CP,从而正好对上了第二个同步码1111000的输出,从而达到使电路首先输出同步码1111000,再逐个显示其他各组串行码的目的。具体见坐标纸所画波形图。串行检测控制电路:由于串行检测电路的信号输入直接由信号发生器接入,不需经过串并转换电路,故其输出比并行检测早一个时钟,为了共用控制电路,用一个D触发器将串行检测的输出延迟一个时钟再接入控制电路。具体见坐标纸所画波形图。7、锁存显示模块:锁存电路只需一块74LS273锁存芯片,将串并转换的并行输出作为74LS273的数据输入,七进制计数器的输出作为74LS273的时钟信号,控制电路D触发器输出作为74LS273的清零端,实现试验要求。电路如下:五:总体硬件电路原理图1) 硬件串行检测原理图: 2)硬件并行检测原理图:六、软件仿真1) 原理图仿真由于软件仿真的计数器74LS161在时钟信号未到之前的默认起始状态为预置状态,时钟信号一到即开始7进制计数,与硬件的默认起始状态为0000不同。故软件仿真的原理图与硬件的不同,而是根据信号沿的出现时刻作了相应调整。 串行检测仿真原理图:在硬件串行检测原理图的基础上,将D触发器的输出延迟7个CP后再作为控制电路的一个输出,使计数器的第一个输出脉冲不起作用,从而使锁存显示电路从计数器的第二个输出脉冲开始输出,从而使电路首先输出同步码1111000,再逐个显示其他各组串行码。串行检测仿真波形图:a:主时钟信号; b c d e f g h :锁存显示电路输出;sx: 分频器输入输出; clk:7进制计数器输出(锁存器273的clk);clr:延迟了7个CP的D触发器输出(锁存器273的clr); signal: 信息码输出; cxjc: 串行检测信号输出;q: D触发器输出; dclk:D触发器的时钟信号。并行检测仿真原理图:将检测电路的检测码从1111000改为0011010,从而将各输出信号提前7个CP,从而使得7进制计数器的第一个输出脉冲即对准1111000的输出。并行检测仿真波形:a: 主时钟信号; b: 信息码波形; c: 7进制计数器进位输出d: 并行检测输出; e: D触发器输出; f g h i j k l: 锁存器输出;2) VHDL仿真1、分频器模块程序: P0:PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF tmp=65535 THEN tmp=0; ELSE tmp=tmp+1; END IF; IF tmp32768 THEN clk_out=0; ELSE clk_out=1; END IF; END IF; END PROCESS p0; 2、串行检测程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY chuan is PORT( clk:IN STD_LOGIC; /主时钟信号输入 ss:OUT STD_LOGIC; /序列信号发生器输出 ss=s; testout:OUT STD_LOGIC; /串行检测模块输出 jc1:OUT STD_LOGIC; /控制模块输出 jc1=jc bs1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); / 串并转换模块输出 bs1=bs finalout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); /所存显示模块输出END chuan;ARCHITECTURE a OF chuan IS SIGNAL tmp: INTEGER RANGE 0 TO 14; SIGNAL s: STD_LOGIC; /序列信号发生器输出 ss=s; TYPE state_type IS (s0,s1,s2,s3,s4,s5,s6); SIGNAL state:state_type; SIGNAL j_tmp: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL jc: STD_LOGIC; /控制模块输出 jc1=jc SIGNAL bs: STD_LOGIC_VECTOR(6 DOWNTO 0); / 串并转换模块输出 bs1=bsBEGIN p1:PROCESS (clk) /p1:序列信号发生器模块 BEGIN IF (clkevent AND clk=1) THEN IF tmp=14 THEN tmp=0; ELSE tmpss=1; END CASE; ssIF(s=1) THEN state=s1; ELSE state=s0; END IF; testoutIF(s=1) THEN state=s2; ELSE state=s0; END IF; testoutIF(s=1) THEN state=s3; ELSE state=s0; END IF; testoutIF(s=1) THEN state=s4; ELSE state=s0; END IF; testoutIF(s=0) THEN state=s5; ELSE state=s4; END IF; testoutIF(s=0) THEN state=s6; ELSE state=s1; END IF; testoutIF(s=1) THEN state=s0; ELSE state=s1; END IF; testout=1; END CASE; END IF; END PROCESS p2; p3:PROCESS (clk,jc) /p3控制模块 BEGIN IF(clkEVENT AND clk=1)THEN IF j_tmp=0111 THEN j_tmp=0001; ELSE j_tmp=j_tmp+1; END IF; jc=j_tmp(1) and j_tmp(2) and j_tmp(0); END IF; jc1=jc; END PROCESS p3; p4:PROCESS (clk,s,bs) /p4 串并转换模块 BEGIN IF(clkEVENT AND clk=1)THEN bs(6)=bs(5); bs(5)=bs(4); bs(4)=bs(3); bs(3)=bs(2); bs(2)=bs(1); bs(1)=bs(0); bs(0)=s; END IF; bs1=bs; END PROCESS p4; p5:PROCESS (jc,bs) /p5所存显示模块 BEGIN IF(jcEVENT AND jc=1)THEN finalout=bs; END IF; END PROCESS p5; END a;串行检测VHDL仿真波形图: 3 并行检测程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY bing ISPORT( clk:IN STD_LOGIC; /时钟信号 B:OUT STD_LOGIC; /并行检测模块输出 qc:OUT STD_LOGIC; /七进制计数器输出 XL:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); /串并转换模块输出 XS:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); /锁存器输出END bing;ARCHITECTURE pan OF bing IS SIGNAL tmp:INTEGER RANGE 0 TO 14; SIGNAL q_out:STD_LOGIC; /串并转换 模块输出 XL=q;SIGNAL di:STD_LOGIC; SIGNAL temp:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL q:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL qc_out:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL qc_tmp:STD_LOGIC;BEGINP1:PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF tmp=14 THEN tmp=0; ELSE tmpq_outq_out=1; END CASE; END PROCESS p2; /输出所需序列信号P3:PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN di=q_out; temp(6)=temp(5); temp(5)=temp(4); temp(4)=temp(3); temp(3)=temp(2); temp(2)=temp(1); temp(1)=temp(0); temp(0)=di; q=temp; XL=q; END IF; END PROCESS p3; /串并转换P4: PROCESS(q,clk) BEGIN IF clkevent AND clk=1 THEN IF (q=1111000) THEN B=1; ELSE B=0; END IF; END IF; END PROCESS p4; /并行检测,当并行输出为 1111000时出1P5: PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF qc_out=1000 THEN qc_out=0010; qc_tmp=1; ELSE qc_out=qc_out+1; qc_tmp=0; END IF; qc=qc_tmp; END IF; END PROCESS p5; / 控制模块:七进制计数器输出, 每七个时钟输出一个高电平P6:PROCESS(qc_tmp) BEGIN IF qc_tmpevent AND qc_tmp=1 THEN XS=q; END IF; END PROCESS p6; / 以七进制计数器为时钟,将并 行输出输入锁存器(锁存显示)END pan;并行检测VHDL仿真输出波形:五、 实验总结本次实验的内容为串行口数据传输,即产生一组周期序列111100010011010,并检测其中一组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 先来先服务调度算法课件
- 先富带后富道路课件
- 17小猴子下山 公开课一等奖创新教学设计(2课时)
- 化学企业安全培训总结课件
- 创伤性休克课件教学
- 25 王戎不取道旁李(公开课一等奖创新教案++备课素材)
- 客服工作数据汇报
- 活动流程介绍
- 创业应急安全培训课件
- 景观小品方案汇报
- 学习提高阅读速度的方法 课件
- 自主移动机器人教学课件第4章 导航规划 2 避障规划和轨迹规划
- GB 31628-2014食品安全国家标准食品添加剂高岭土
- GA/T 1312-2016法庭科学添改文件检验技术规程
- 大学物理实验长测量
- 卫生政策学之政策问题根源分析
- 步进电机及其工作原理-电机的工作原理及特性课件
- 基于CAN通讯的储能变流器并机方案及应用分析报告-培训课件
- 腹直肌分离康复(产后康复课件PPT)
- 聚合物成型的理论基础课件
- 慢性中耳炎的并发症课件
评论
0/150
提交评论