串行口数据传输的仿真及硬件实现.docx_第1页
串行口数据传输的仿真及硬件实现.docx_第2页
串行口数据传输的仿真及硬件实现.docx_第3页
串行口数据传输的仿真及硬件实现.docx_第4页
串行口数据传输的仿真及硬件实现.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串行口数据传输的仿真及硬件实现学院:信息与通信工程学院专业:通信工程班级:2008211110姓名:潘东阳、王澎涛序号:12一、 总体方案框图电路总体分为7个模块:时钟电路模块、字符发生器模块、串/并转换模块、字符检测电路模块、控制电路模块、锁存显示模块和显示电路模块。各模块间的输入输出数据流如图所示。二、 各部分电路的数字逻辑设计过程和结果1 时钟电路模块:实验室所提供的晶振的时钟频率为1MHz,若直接使用人眼将无法正常观测出实验结果。所以需要设计分频模块,将1MHz的时钟频率通过分频器降低到约2Hz,这样才可以正确显示结果。本次实验使用74LS163四位同步计数器级联实现分频功能。每个74

2、LS163最多为24=16分频。为了实现本实验分频的要求,分频系数应该达到:106÷2=5×105219。所以需要5块74LS163芯片级联实现分频,所得频率为1MHz/219=1.9Hz具体电路图如下:2 字符发生器模块:本次试验要求发送端产生信息码为111100010011010这个15位循环码。字符发生模块使用由D触发器构成移位寄存器的序列信号发生器。由于循环码为15位,23<15<24,故至少应该使用4位D触发器。经检查,此序列所构成的15个4位的序列不重复,刚好可以用4为D触发器来做次序列发生器,D触发器选用74LS175四D触发器。状态转移表:Q4Q

3、3Q2Q1D111101110011000100010001000100010011001100110011011101010101010111011101111卡诺图:由卡诺图得:D= Q4Q3,但经过检查,通过此反馈是无法自启动的。通过增加自由项,得D= Q4Q3+Q4Q2 Q1。经过检查,此此反馈可以自启动。电路图如下:3 串/并转换模块:串并转化的实现可以通过移位寄存器来实现,因为需要7位并行输出,所以需要两块移位寄存器74LS194级联构成。电路图如下:4 并行字符检测电路模块:相比于串行字符检测电路,并行字符检测电路相对容易。并行字符检测电路只需要15位数据比较器即可,而该比较器可

4、以由两个数据比较器74LS85级联得到。具体电路图如下:当检测到字符1111000时,输出一个高电平,作为控制电路的时钟信号。5 控制电路模块:控制电路完成的功能比较复杂。首先,控制电路要保证在检测到同步码之前,锁存器关闭,没有任何输出;其次,在检测到同步码之后,字符检测电路不能对后级有任何影响,而是由控制电路控制每个7位输出一次。对于第一个功能可以使用一块D触发器74LS74接受字符检测电路的信号,再通过组合逻辑电路使接收到同步码产生的高电平后此部分电路输出恒定,对锁存电路没有影响;对于第二个功能,可以由一个7进制计数器实现,这里选用同步置位的计数器74LS163。具体 如下:6 锁存显示模

5、块:锁存电路比较简单,只需要一块74LS273锁存芯片就可以。只要把数据的七个输入端分别连到串并转换的并行输出端,在把控制电路输出的控制电路接到时钟输入端即可。具体电路图如下:7 显示电路模块:只要把锁存器的七个输出端接到数码管相对应的ag管脚就可以。8 串行字符检测模块:串行字符检测需要一位一位检测,然后每位都符合才输出信号。若每位都检测,将会使用较多触发器,使电路复杂化。经过观察,同步码1111000中后四位1000在整个序列111100010011010中是唯一的,所以检测1000四位即可。当连续有4位与1000相应匹配时,则输出信号。状态转移图如下:对A、B、C、D分别编码为00、01

6、、11、10,则状态转移表为:D=0D=1000001011101111000100000输出为:ZD=0D=10000010011001010卡诺图分别如下:所以,由卡诺图可得:D2=Q2n+1=Q1DD1=Q1n+1=Q2 D+Q2 Q1Z=Q2Q1 D由此可得到电路图:9 纠错模块:纠错模块应该包含错码发生器、检错模块和纠错模块。实验中错码发生器产生的错码为:111100000011010,通过类似序列发生器设计中的方法可以设计出其电路,此处使用同步计数器与数据选择器构成的信号发生器。检错模块通过D触发器加逻辑门电路可以检测出是否有错码,若有,则输出1。纠错部分接收到检测部分输出的1后,

7、与原信号同一位进行异或运算,可以将其改为正确码。此部分电路的难点是同步问题。由于各部分之间的延时不一定相同,所以最终修改的码的位置不一定就是错码的位置。这种问题只能在具体连接电路时通过加门电路来不断尝试来取得同步。具体电路原理图如下:三、 总体电路原理图四、 用坐标纸画出下列波形(见坐标纸)五、 VHDL程序代码及注释串行检测:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chuan isport( vcc,clk:in std_logic; output:out std_logi

8、c_vector(6 downto 0);end chuan;architecture tao of chuan is signal signalout: std_logic; signal signalcomposer :integer range 0 to 14; signal signalaccept :std_logic_vector(6 downto 0); signal tmp:integer range 0 to 4999999; signal signaltest: std_logic; signal os: std_logic; signal testout:std_logi

9、c; signal controlcout:std_logic; signal finalout :std_logic_vector(6 downto 0); type state_type is (s0,s1,s2,s3,s4); signal state: state_type; - signal test: std_logic_vector(6 downto 0);beginp0:process(clk) begin if clk'event and clk='1' then if tmp=4999999 then tmp<=0; else tmp<=

10、tmp+1; end if; end if;end process p0;p7:process(tmp)begin if tmp=4999999 then os<='1' else os<='0' end if;end process p7;-p0 and p7 shi fenpin mokuai p1:process(os)begin if os'event and os='1' then if signalcomposer=14 then signalcomposer<=0; else signalcomposer&

11、lt;=signalcomposer+1; end if; end if; case signalcomposer is when 4|5|6|8|9|12|14=>signalout<='0' when others=>signalout<='1' end case;end process p1;-you jishiqi shixian de xulie fashengqip2:process(signalout) begin if os'event and os='1' then signalaccept(6)

12、<=signalaccept(5); signalaccept(5)<=signalaccept(4); signalaccept(4)<=signalaccept(3); signalaccept(3)<=signalaccept(2); signalaccept(2)<=signalaccept(1); signalaccept(1)<=signalaccept(0); signalaccept(0)<=signalout; end if;end process p2;-yicunqi shixian chuanbing zhuanhuanp3:p

13、rocess(signalaccept) begin -if clk'event and clk='1' then finalout<=signalaccept; -end if;end process p3;-shuchup4:process(signalaccept)begin if testout='1' then signaltest<=vcc; controlcout<=vcc; end if;end process p4;-kongzhi shuchup6 :process(os) begin if (os'even

14、t and os='1' )then case state is when s0=>if(signalout='1') then state<=s1; else state<=s0; end if; testout<='0' when s1=>if(signalout='1') then state<=s2; else state<=s0; end if; testout<='0' when s2=>if(signalout='0') then

15、state<=s3; else state<=s2; end if; testout<='0' when s3=>if(signalout='0') then state<=s4; else state<=s2; end if; testout<='0' when s4=>if(signalout='0') then state<=s0; else state<=s2; end if; testout<='1' end case; end if; e

16、nd process p6;-chuanxin jiance 11000p5 :process(signaltest,signalaccept)begin if(signaltest='1') then output<=not signalaccept; end if; end process p5;-jiucuo-p6:process(signalaccept)-begin - case signalaccept is - when "1111000"=>testout<='1' - when others =>te

17、stout<='0' - end case;-end process p6; end tao;并行检测:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bing isport( vcc,clk:in std_logic; -clear:in std_logic; - signalout: out std_logic; -testout: out std_logic; - signaltest: out std_logic; - testout,controlco

18、ut :out std_logic; -finalout:out std_logic_vector(6 downto 0); output:out std_logic_vector(6 downto 0);end bing;architecture pan of bing is signal signalout: std_logic; signal signalcomposer :integer range 0 to 14; signal signalaccept :std_logic_vector(6 downto 0); signal tmp:integer range 0 to 5499

19、999; signal signaltest: std_logic; signal os: std_logic; signal testout:std_logic; signal controlcout:std_logic; signal finalout :std_logic_vector(6 downto 0); type state_type is (s0,s1,s2,s3,s4); signal state: state_type; - signal test: std_logic_vector(6 downto 0);begin p0:process(clk) begin if cl

20、k'event and clk='1' then if tmp=5499999 then tmp<=0; else tmp<=tmp+1; end if; end if;end process p0;p7:process(tmp)begin if tmp=5499999 then os<='1' else os<='0' end if;end process p7;-fenpin mokuai p1:process(os)begin if os'event and os='1' then i

21、f signalcomposer=14 then signalcomposer<=0; else signalcomposer<=signalcomposer+1; end if; end if; case signalcomposer is when 4|5|6|8|9|12|14=>signalout<='0' when others=>signalout<='1' end case;end process p1;-xulie fashengqip2:process(signalout) begin if os'e

22、vent and os='1' then signalaccept(6)<=signalaccept(5); signalaccept(5)<=signalaccept(4); signalaccept(4)<=signalaccept(3); signalaccept(3)<=signalaccept(2); signalaccept(2)<=signalaccept(1); signalaccept(1)<=signalaccept(0); signalaccept(0)<=signalout; end if;end process

23、 p2;-yicunqi shixian chuanbing zhuanhuanp3:process(signalaccept) begin -if clk'event and clk='1' then finalout<=signalaccept; -end if;end process p3;-outputp5:process(signalaccept)begin case signalaccept is when "1111000"=>testout<='1' when others =>testout<='0' end case;end process p5;-bingxinjiancetongbuma p4:process(testout)begin if testout='

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论