{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验

上传人:蜀歌 文档编号:145485541 上传时间:2020-09-20 格式:PDF 页数:18 大小:576.61KB
返回 下载 相关 举报
{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验_第1页
第1页 / 共18页
{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验_第2页
第2页 / 共18页
{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验_第3页
第3页 / 共18页
{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验_第4页
第4页 / 共18页
{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验》由会员分享,可在线阅读,更多相关《{管理信息化信息化知识}串行口数据传输的仿真和硬件实现实验(18页珍藏版)》请在金锄头文库上搜索。

1、管理信息化信息化知识 串行口数据传输的仿真和 硬件实现实验 管理信息化信息化知识 串行口数据传输的仿真和 硬件实现实验 串行口数据传输的仿真串行口数据传输的仿真 及硬件实现及硬件实现 第*组 班级:* 姓名:* 指导老师:* 一、 实验目的:一、 实验目的: 串行口数据传输是数字系统中常用的一种数据传输方式。本次课程设计要求学生综合数字逻 辑电路和串行口通信的有关知识,用硬件独立设计完成一个简单的串行口数据传输系统,并 用 FPGA 可编程逻辑器件进行仿真。 二、 实验仪器二、 实验仪器 1 双踪示波器 1 台 2 直流稳压电源 1 台 3 频率计 1 台 4 数字万用表 1 台 5 面包板

2、1 台 三、 实验内容与设计:三、 实验内容与设计: 1、实验内容:一个简单的串行口数据传输系统的系统框图如下: 由图可见,系统分为发送端,接收端两部分。发送端主要是同步字符、结束字符、时钟电路 和信息码发生器。 接收端包括串/并转换电路、字符检测电路、控制电路、锁存接收和显示电路。 2、各部分功能的端口设置: (1)时钟电路:晶振的时钟输入信号、通过分频后提供系统使用的输出信号。 (2)信号发生电路:时钟电路发出的时钟信号输入端、生成的序列输出端。 (3)串并转换电路:时钟信号输入、串行序列输入端、并行序列输出端。 (4)字符检测电路:若采用并行检测,有并行数据输入端、检测信号输出端; 若采

3、用串行检测,有串行数据接入端、时钟信号输入端、 检测信号输出端。 (5)控制电路:时钟信号输如端、检测信号输入端、控制信号输出端。 (6)锁存电路:控制信号输入端、并行数据输入端、并行数据输出端。 (7)显示电路:并行数据输入端。 3、各部分的逻辑设计: (1)时钟电路设计: 由于晶振产生的时钟频率为 1MHz,而为了显示稳定,需要的时钟频率为 2Hz 以下,所以需要 分频。本次设计采用的是同步计数器来进行分频,输出端为 QaQd,分频系数为 2N(N 为端 口数) 。每个 74LS163 最多为 24=16 分频,而需要的分频系数 : 1062=5105219。所以需要 5 块 74LS16

4、3 芯片用作分频。具体电路图如下: 所得的输出频率约为 2Hz. (2)序列信号发生器设计: 本次实验需要产生的序列为 15 位循环码“” ,通过检验可知,此序列产生的 15 个 4 位 序列不互相重复,因此可以用 4 个 D 触发器来构造序列发生器。此序列信号发生器的反馈电 路可以通过“与” 、 “或” 、 “非”逻辑门或数据选择器实现。本次实验中,我们使用了数据选 择器。 状态表及卡诺图如下所示: Q4Q3Q2Q1D 11110 11100 11000 10001 00010 00100 01001 10011 00110 01101 11010 10101 01011 10111 011

5、11 为使系统能够自启动,令=1。 使用 Q4Q3作为数据选择器的输入,有 C0=,C1=1,C2=1,C3=0 故序列信号发生器的电路图设计如下所 (3)串并转换电路的设计 因为系统需要 7 位并行输出,所以串并转换电路可由两块移位寄存器 74LS194 级 联构成。电路图如下: (4)串行字符检测电路的设计: 串行字符检测实际就是依次对字符进行检测,符合同步码的输出 1,否则输出 0。但若对 7 位同步码都进行检测,需要的触发器较多,电路将非常复杂。通过观 察发现同步码后 4 位 1000 在整个序列中是唯一的,因此实验中通过检测 1000 来达 到检测同步码的效果。检测电路可通过状态机来

6、实现。 状态转移图如下所示: 1/0 0/11/01/00/0 0/0 对 A、B、C、D 进行编码:A00,B01,C11,D10 X=0X=1 000001 A D 0/ 0 011101 111001 100001 卡诺图如下: Q2Q1 D00011110 00110 10000 Q2n+1 Q2Q1 D00011110 00001 10000 Z 由卡诺图可得: D2=Q2n+1=Q1 D1=Q1n+1=Q1+D Z=Q2 可用 D 触发器实现,电路图如下所示: (5)并行字符检测电路的设计: 并行字符检测,即将原序列经串并转换电路后产生的并行信号与同步码相比较,当与同步码 相同时,

7、即产生一个高电平。此检测电路可通过两个比较器实现,比较时应由低位到高位依 次进行。本实验采用了两个数据比较器 74LS85 级联的方式。 电路图如下所示: (6)控制电路的设计: 字符检测电路若检测到同步码就会对控制电路输出一个信号,控制电路对此信号做出反 应,以此来控制锁存电路的开关。检测信号通过控制电路使锁存器开启,此后检测信号 Q2Q1 D00011110 00100 11111 Q1n+1 对锁存器的影响就不存在了。 电路图如下所示: (7)锁存电路的设计: 锁存电路比较简单,只需要一块 74LS273 锁存芯片就可以。只要把 7 个数据输入端分别 连接到串并转换电路的并行输出端,再将

8、控制电路的输出端接到锁存器的时钟输入端即可。 电路如下所示: (8)显示电路的设计: 将锁存器的 7 个输出端接到数码显示管的 7 个管脚即可实现显示电路。要注意的是,数 码管的 abcdefg 七个管脚分别对应数据的高位到低位。 3、总电路图: (1)串行: (2)并行: 四、 波形仿真结果四、 波形仿真结果 1、 串行: 2、 并行: 手绘示波器波形见坐标纸 五、 VHDL 程序代码及注释五、 VHDL 程序代码及注释 1、串行代码1、串行代码: libraryieee; use_logic_1164.all; use_logic_; entitycxingis-定义实体名为 cxing

9、原序列信号 串并转换输出 检测信号 控制信号 锁存器输入 锁存器输出 port( clk_in:instd_logic; clk_out:bufferstd_logic; c_out:outstd_logic_vector(6downto0); endcxing; architectureaofcxingis-定义结构体名为 a signaltmp1:integerrange0to999999; signaltmp2:integerrange0to14; signalclk,f,q_out,q,cp_control,control:std_logic; typestate_typeis(s0,

10、s1,s2,s3,s4); signalcurrent_state,next_state:state_type; signaltmp:std_logic_vector(6downto0); begin p1:process(clk_in)-分频器 1MHz 分为 2Hz begin ifclk_ineventandclk_in=1then iftmp1=999999then tmp1=0; else tmp1=tmp1+1; endif; iftmp1=500000then clk=1; else clk=0; endif; endif; endprocessp1; clk_out=clk;

11、p2:process(clk)-函数信号发生器 begin ifclkeventandclk=1then iftmp2=14then tmp2=0; else tmp2q_outq_outif(q_out=1)thennext_state=s1; elsenext_stateif(q_out=1)thennext_state=s2; elsenext_stateif(q_out=0)thennext_state=s3; elsenext_stateif(q_out=0)thennext_state=s4; elsenext_stateif(q_out=0)thennext_state=s0;

12、elsenext_state=s1;endif; endcase; endprocess; p5:process(clk) begin if(clkeventandclk=1)then current_statefffff=1; endcase; endprocess; cp_control=clkorq; p7:process-控制信号 begin waituntilcp_control=1; q=f; endprocess; control=qandclk; p8:process(clk)-串并转换 begin ifclkeventandclk=1then tmp(6)=tmp(5); t

13、mp(5)=tmp(4); tmp(4)=tmp(3); tmp(3)=tmp(2); tmp(2)=tmp(1); tmp(1)=tmp(0); tmp(0)=q_out; endif; endprocess; p9:process(control)-锁存器输出 begin ifcontroleventandcontrol=1then c_out(6)=nottmp(6); c_out(5)=nottmp(5); c_out(4)=nottmp(4); c_out(3)=nottmp(3); c_out(2)=nottmp(2); c_out(1)=nottmp(1); c_out(0)=n

14、ottmp(0); endif; endprocess; enda; 2、并行代码2、并行代码 libraryieee; use_logic_1164.all; use_logic_; entitybxingis-定义实体名为 bxing port( clk_in:instd_logic; clk_out:bufferstd_logic; c_out:outstd_logic_vector(6downto0); endbxing; architecturebofbxingis-定义结构体名为 b signaltmp1:integerrange0to999999; signaltmp2:inte

15、gerrange0to14; signalclk,f,q_out,q,cp_control,control,a,b,c,d:std_logic; signaltmp:std_logic_vector(7downto0); begin p1:process(clk_in)-分频器 1MHz 分为 2Hz begin ifclk_ineventandclk_in=1then iftmp1=999999then tmp1=0; else tmp1=tmp1+1; endif; iftmp1=500000then clk=1; else clk=0; endif; endif; endprocessp

16、1; clk_out=clk; p2:process(clk)-函数信号发生器 begin ifclkeventandclk=1then iftmp2=14then tmp2=0; else tmp2q_outq_out=1; endcase; endprocessp3; p4:process(clk)-串并转换 begin ifclkeventandclk=1then tmp(7)=tmp(6); tmp(6)=tmp(5); tmp(5)=tmp(4); tmp(4)=tmp(3); tmp(3)=tmp(2); tmp(2)=tmp(1); tmp(1)=tmp(0); tmp(0)=q_out; endif; endprocess; p5:process(tmp(0),tmp(1),tmp(2),tmp(3)-并行检测 begin if(tmp(0)=0)then a=1; elsea=0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号