毕业设计(论文)基于VHDL语言的串行通信芯片的设计

上传人:仙*** 文档编号:28397379 上传时间:2021-08-27 格式:DOC 页数:64 大小:2.03MB
收藏 版权申诉 举报 下载
毕业设计(论文)基于VHDL语言的串行通信芯片的设计_第1页
第1页 / 共64页
毕业设计(论文)基于VHDL语言的串行通信芯片的设计_第2页
第2页 / 共64页
毕业设计(论文)基于VHDL语言的串行通信芯片的设计_第3页
第3页 / 共64页
资源描述:

《毕业设计(论文)基于VHDL语言的串行通信芯片的设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于VHDL语言的串行通信芯片的设计(64页珍藏版)》请在装配图网上搜索。

1、摘 要本文主要介绍基于VHDL语言的串行通信芯片的设计。在本次设计中,主要是对可编程逻辑器件进行程序编译,通过所编译的程序来实现串行通信芯片所具有的功能。总的来看,本设计具有许多优点,如结构简单,功能完善,使用方便,移植性强,成本低廉。关键字:可编程逻辑 串行ABSTRACT This design mainly introduces serial communication CMOS chip according to VHDL language. In this design, it is mainly to translate and edit for the programmble l

2、ogic device, which realizes the function of serial communication CMOS chip by procedure edition and translation. In a word, this design has many characteristic, such as construction simple, function integrity, usage convenient, transplant strong, cheap in cost. Keyword: programmble serial目 录1 绪论42 编

3、译程序及过程52.1硬件描述语言VHDL简介5 2.1.1 VHDL概述5 2.1.2 VHDL的结构5 2.1.3 VHDL的特点6 2.2可编程逻辑器件简介7 2.3 MAX+PLUSII简介72.4编译环境7 2.4.1 项目命名7 2.4.2 文件保存并检查错误8 2.4.3 默认一个仿真文件.SCF8 2.5编译输入结点波形92.6仿真设计项目9 2.6.1 打开仿真窗口9 2.6.2 设置仿真时间9 2.6.3 运行仿真时间9 2.6.4 分析仿真结果93 系统设计构想103.1基本概念10 3.1.1串行通信10 3.1.2 并行通信10 3.1.3异步传送方式10 3.2设计任

4、务及要求10 3.3设计方案114 主体设计134.1程序设计134.2 内部各进程描述134.3 仿真14 4.3.1图形中各部分的用途16 4.3.2波形分解16 4.3.3波形各个部分分析16 设计总结20 致谢21 参考文献22 附录123 附录2 开题报告36 附录3中期报告38 附录4 英文资料40 附录5 英文翻译541 绪 论人类建立在信息交流的基础上,通信是推动人类社会文明、进步与发展的巨大动力。现代通信系统是信息时代的生命。现代通信网已经不在是单一的电话网或电报文字通信网,而是一个综合性的为多种信息服务的通信网。为适应世界性的政治与经济活动的需要,人类已经建立起世界性的全球

5、通信网。而通信接口在整个通信系统中起这交通枢纽的作用,它决定着通信过程是否能够顺利有效的完成。目前串行通信应用十分广泛,串行接口已经成为计算机的必须部件和接口之一。常见的串行接口有符合IEEE国际电气化标准的RS-232、RS-422、RS-232C等等。在IBMPC系列计算机中使用的是符合RS-232C串行传输协议的RS-232C串行接口。这个串行接口协议可以用于选择远程和近程通信,也可以连接具有符合RS-232C串行协议的外部设备。IBMPC系列的计算机系统最多可以控制4个串行接口,但程序同时只能对其中一个串行接口进行存取,此外,Intel公司的8250及8251系列串行接口芯片应用也十分

6、广泛。串行接口的使用越来越广泛,除了PC机之间的通信和控制外部设备外,还可以通过调制解调器(MODEM)和电话线进行远程网络,例如:通过调制解调器和电话线,拨号实现PC机与互连网I nternet的互连。本次设计的异步串行通信接口芯片主要运用硬件描述语言VHDL对可编程逻辑器件进行程序编译,使其能够将并行输入的数据按照指定的格式串行输出,也可以将串行输入的数据按照指定的格式并行输出。通过编程确定发送、接收的数据格式:如长度、停止位、收发功能等。本设计具有结构简单、功能完善、使用方便、成本低廉、可移植性强等特点。2 硬件描述语言及编译环境由于本次设计的是传输系统,重复性比较强,采用文本输入比较方

7、便,更改方便。固本次软件设计采用硬件描述语言VHDL(Very High Integrated Circuit Hardware Description Language ) 对可编程逻辑器件进行编程。并且使用Altera公司的软件MAX+PlusII来对程序编译、仿真。下面对其进行分别介绍:2.1、 硬件描述语言VHDL简介目前,电子系统正向着集成化、大规模和高密度的方向发展,所需要的集成电路的规模越来越大,复杂程度也越来越高。对于如此大规模和复杂电路的设计问题,传统的门及描述方法线的过于琐碎,因而难以理解和管理,这就迫使人们寻求更高抽象层次的描述方法和采用高层次的、自顶向下的设计方法。 硬

8、件描述语言(HDL)就是顺应人们的这一需要而产生和发展起来的。2.1.1、 VHDL概述 VHDL(Very High Speed Integrated Circuit Hardware Description Language) 是非常高速集成电路的硬件描述语言,是可以描述硬件电路的功能、信号连接关系及定时关系的语言,它能比电路原理图更有效的表示硬件电路的特性。模块化和自顶向下、逐层分解的结构化设计思想贯穿于整个VHDL设计文件中。使用VHDL语言,可以就系统的总体要求出发,自顶向下的将设计内容细化,最后完成系统硬件的整体设计。VHDL语言已作为一种IEEE的工业标准,涉及接过便于复用和交流

9、。目前,他还不能应用于模拟电路的设计,但已有人投入研究。2.1.2、VHDL的结构 一个完整的VHDL程序结构通常包括五个部分:实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包(Package)及库(Library)。图1表明了VHDL程序的基本结构。VHDL将所涉及的任意复杂电路系统看作一个设计单元,实体(Entity)和结构体(Architecture)是模块最基本的两个组成部分。其中,实体说明用于描述设计系统的外部接口信号,包括端口的数目、方向和类型等,其作用就相当于传统设计方法中使用的元件符号;结构体部分则描述该系统的行为、系统数据的

10、流程或系统组织结构形式。配置用于从库中选取所需的单元来组成系统设计的不同规格的不同版本,是被设计系统的功能发生变化。程序包存放设计模块能共享的数据类型、常数、子程序等。库用于存放以编译的实体、结构体、程序包及配置。一种是用户自己开发的工程软件,另一种是制造商提供的库。VHDL文件VHDL设计库(LIBRARY):用以存储预先完成的程序包和数据集合体。程序包(PACKAGE):声明在设计或实体中将用到的常数、数据类型、元件及子程序等。配置(CONFIGURATION):为实体选定某个特定的机构体。结构体(ARCHITECTURE):定义实体的实现,即电路的具体描述。实体(ENTITY):声明到其

11、他实体或其他设计的接口,即定义设计的输入/输出端口。图1在用VHDL语言描述系统硬件行为时,按语句执行顺序对其进行分类,可以分为顺序描述语句和并发描述语句。例如,进程语句是一个并发语句。在一个构造体内可以有几个进程语句同时存在,各进程语句是并发执行的。但是,在进程内部所有语句应是顺序描述语句,也就是说,是按书写的顺序自上而下,一个语句一个语句地执行的。顺序描述语句只能出现在进程或子程序中,由它定义进程或子程序所执行的算法。语句中所涉及到的系统行为有时序流、控制、条件和迭代等;语句的功能操作有算法、逻辑运算,信号和变量的赋值,子程序调用等。顺序描述语句像在一般高级语言中一样,其语句是按出现的次序

12、加以执行的。在VHDL语言中顺序描述语句有以下几种:WAIT语句、断言语句、信号代入语句、变量赋值语句、IF 语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、过程调用语句、NULL语句。在VHDL语言中能进行并发处理的语句有进程语句、并发信号代入语句、条件信号代入语句、选择信号代入语句、并发过程调用语句和块语句。 2.1.3、VHDL的特点(1)VHDL具有强大的功能,覆盖面广,描述能力强,可用于从门级、电路级直至系统级的描述、仿真和综合。VHDL支持层次化设计,可以在VHDL的环境下,完成从简练的设计原始描述,经过层层细化求精,最终获得可直接付诸生产的电路级或版图参数描述的全过

13、程。(2)VHDL具有良好的可读性。它可以被计算机接受,也容易被读者理解。用VHDL书写的源文件,既是程序又是文档,即使技术人员之间交换信息的文件,又可作为合同签约者之间的文件。(3)VHDL具有良好的可移植性。作为一种以被IEEE承认的工业标准,VHDL事实上已成为通用的硬件描述语言,可以在不同的设计环境和系统平台中使用。(4)使用VHDL可以延长设计的生命周期。因为VHDL硬件描述与工艺技术无关,不会因工艺化而使描述过时。VHDL支持对大规模设计的分解和已有设计的再利用。VHDL可以描述复杂的电路系统,支持对大规模设计进行分解,有多人、多项目组来共同承担和完成。标准化的规则和风格,为设计的

14、再利用提供了有利的支持。2.2、可编程逻辑器件简介:可编程逻辑器件(PLD)是一种半定制专用集成电路,其功能可由设计者根据自己的需要来加以定义。与中、小规模的标准逻辑器件(如74系列、4000系列等)相比,PLD的工作速度快,集成度高,功耗低,适应性强。利用高密度可编程逻辑器件(HDPLD),甚至可以将一个较大规模的高性能数字系统集成于单片器件中,可大大减小数字设备的体积、重量和功耗,并显著提高其可靠性。2.3、MAX+PLUSII简介MAX+PLUSII提供了与结构无关的设计环境,确保了易于输入设计、快速编译及完成器件编程。设计者无需精通器件内部结构,只需要自己熟悉的设计输入工具,如高级行为

15、语言、原理图或波形图进行设计。它还提供了丰富的逻辑功能库(包括74系列逻辑器件等效宏功能库、特殊宏功能(Macro Function)模块库以及参数化的兆功能(Mage Function)模块库)供设计者使用。、MAX+PLUSII还具有开放核的特点,允许设计人员添加自己的宏功能模块。充分利用这些逻辑功能模块,可以大大减轻设计工作量。2.4、编译过程2.4.1、指定项目名并建立一个新文件(1)选择菜单命令File/Project/Name或点击快捷键,在Project对话框中写入自己的项目名称如sci。(2)选择菜单命令File/New或点击快捷键,在New对话框选择Text Editor f

16、ile,再选择OK即出现一个无标题的文本编译器(Text Editor)窗口,将文本编辑窗口最大化。(3)选择菜单命令File/Save as,在File Name框内写入sci。2.4.2、保存文件并检查语法错误(1)将程序编译完成后,选择菜单命令File/Project/Save&Check,或点击快捷键(2)选择菜单命令Windows/项目文件,或者选择菜单MAX+PLUSII/ Text Editor或者点击快捷键,把操作切换回原来的文件编译窗口。2.4.3一个默认的仿真通道文件. SCF(1) 指定设计项目。点击快捷键打开设计文件max2woketimesci.vhd文件,然后点击快

17、捷键,将设计项目名指向sci.(2) 打开波形编辑窗口。选择菜单命令File/New或点击快捷键,在出现的对话框中选择Waveform Editor File,并从下来的列表中选择.scf扩展名,然后点击OK,出现一个无标题的波形编辑器文件窗口。(3) 创建仿真器通道文件。点击快捷键,在出现的对话框中选择OK,则建立仿真器通道文件sci.scf.(4) 设定时间轴网格大小,显示网格。选择菜单命令Option/Grid Size,键入271.2ns,并按下OK。通常用网格大小来表示信号状态的基本维持时间。如有必要,选择菜单项Option/Show Grid,竖直网线就会以271.2ns的间隔显示

18、在波形编辑窗口中。(5) 设定时间轴长度。选择菜单命令File/Size并键入结束时间值,它决定在仿真过程中仿真器如何终止施加输出向量。网格大小和时间轴长度共同确定了仿真通道文件的大小。(6) 选择菜单命令Node/Enter Nodes from SNF,(7) 关闭Type框中的All选项,打开Input,Output和Groups选项。然后选择List,列出所需要的结点。(8) 选择OK,即用所选的结点和组刷新波形编辑器。这里所未编辑的输入结点的波形都默认为低逻辑电平,而所输出和隐含结点波形默认为未定义(X)逻辑电平。(9) 为了便于观察和管理波形文件可以按任意顺序对结点组进行排序.例如

19、:选定一结点,拖动鼠标,一条虚线将出现,并且将随着光标的移动而移动,把结点放在指定的地方。2.5、编辑输入结点的信号波形 通过编辑输入激励波形为仿真器提供输入向量。在对某一项目进行仿真时,仿真器根据输入结点的逻辑电平算出并重写未定义的隐含结点和输出结点的逻辑电平。编辑结点波形的方法是:使用菜单命令Edit/Overwrite,或在待编辑处右击菜单选中Overwrite命令来编辑波形。2.6、仿真设计项目2.6.1、打开仿真器窗口选择菜单命令MAX+PLUSII/Simulator,即打开仿真器,并自动装载sci的仿真网表文件和前面创建的与当前项目同名的仿真器通道文件sci。2.6.2、设置仿真

20、时间(1) 在Start Time对话框输入仿真起始时间。起始时间应处于. scf文件的时间轴范围内,若超出这个范围,则默认为0。(2) 在End Time对话框中输入仿真终止时间,终止时间应处于. scf文件的时间轴范围内同时还应大于起始时间,否则会出错。2.6.3、运行仿真器(3) 按下Start按钮,即开始仿真sci项目。在仿真sci过程中,进度指示条将朝着100%的方向移动,仿真时间域将动态更新,输出逻辑电平将记录到sci. scf中。(4) 在仿真过程中,可以根据情况点击Pause暂停仿真,或者点击Stop终止仿真。(5) 在仿真结束消息框中选择OK2.6.4、分析仿真结果 (1)使

21、用波形编辑器窗口周围的图形缩、放、全景钮及滚动条来查看整体波形和局部波形。 (2)动参考线,查看参考线所在位置的逻辑状态。 (3)移动菜单项Option/Snap to Grid,以便使参考线可以移动到非网络格的位置。通过观察光标的偏移时间,可以分析设计项目在所选定器件中的信号延迟关系。3 系统设计的构想3.1、基本概念3.1.1、串行通信:串行通信就是计算机在接收数据时,由串行接口一位一位地收发数据,当一帧数据完全传送完后,由串行接口一次把数据送给处理器(CPU);当计算机发送数据时,由处理器(CPU)把数据传送给串行接口,再由串行接口通过一条线路,一位一位地把数据传送出去。3.1.2、并行

22、通信:并行通信是将要发送的数据按照一定的数据格式各个位同时传送。在并行通信中,数据有多少位,就需要多少根通信线,因此与串行通信相比传送速度快,但当距离比较远时成本比较高。3.1.3、异步传送方式:异步传送的数据以字符为单,传送时,各个字符可以连续传送,也可以断续传送,由发送方根据需要来决定。数据传输的速率(波特率)是双方事先约定好的帧。异步传送的另一个特点是,双方各自用自己的时钟信号来控制发送和接收。异步通信以帧为传送单位,其中包含了一个字符信息.一个帧由其起始位开始,终止位结束。两个帧之间为空闲位,一帧信息由7-12位二进制组成。3.2、设计任务及要求:在MAX+PLUSII环境下,采用VH

23、DL语言对目标器件进行程序编写,使其具有异步串行通信芯片的大部分功能。将并行输入的数据按指定的格式串行输出,也可以将串行输入的数据并行输出。通过编写程序确定发送、接收的不同数据格式。3.2.1、数据位长度可以为5位、6位、7位、8位3.2.2、停止位长度可以为1位、2位、1.5位3.2.3、可进行任意分频,如可为2分频、4分频、8分频、16分频3.2.4、通过编写程序给出仿真波形,并分析结果3.3、设计方案:本次设计主要是软件设计,即通过运用硬件描述语言VHDL来进行程序编译,用以实现串行通信芯片所具有的功能。在进行程序编译时,要将程序划分成三个不同的部分,即控制部分、接收部分和发送部分,在这

24、三个部分中又包含不同的进程,如图2所示。其中还用到了一些内部寄存器,如:发送缓冲器(写)、接收缓冲器(读)、通信线控制寄存器、通信线状态寄存器、除数寄存器(低字节)、除数寄存器(高字节)。通过程序编写来确定数据传输,工作方式,通信参数设置。对接收移位寄存器空满状态进行操作,并将接收移位寄存器的值放入接收数据寄存器 数据接收控制对通信状态寄存器进行操作 控制部分对发送移位寄存器空满标志进行操作对发送数据寄存器空满标志进行操作,并将发送数据寄存器的值传入发送移位寄存器写进程 发送部分发送停止位移位发送进程发送数据进程读进程移位接收进程接收数据进程 接收部分4 主体设计4.1 程序设计见附录14.2

25、 内部各进程描述4.2.1 、第一个进程是对移位寄存器空满状态进行操作,并将接收移位寄存器中的值放入接收数据寄存器。当rd、cs、ccreg(7)、a2、a1、a0、为0时,接收移位寄存器空;当shrecregFULL置1时,表示接收移位寄存器满,向计算机表示数据已经准备好,可以转入接收数据寄存器。当通信控制寄存器低四位为1100 、1101、1110、1111时分别表示数据位为5位、6位、7位、8位。4.2.2、 二个进程是写进程。当写信号为低电平时,将数据值写入内总线。若复位键置0,则接收数据寄存器赋00000000;当写信号为高电平,将数据写入通信控制寄存器,当地址线a2、a1为0时,若

26、a0为0,将数据写入除数寄存器低8位;若a0为1,将数据写入除数寄存器高8位。当地址线全为0时,将数据写入发送寄存器。4.2.3、第三个进程是发送接收过程。当时钟信号为高电平时,若串行输入置0,表示数据开始接收;若sinF置1且接收计数器低四位为1111时表示数据接收完成;除数寄存器高四位为通信控制寄存器低四位。4.2.4、四个进程是对发送过程的各标志操作。当soutF置0时,表示开始发送数据;soutF置1时表示发送完毕。当shsendregEMPTY置0时,表示 发送移位寄存器满;当shsendregEMPTY置1时,表示发送移位寄存器空。4.2.5、第五个进程是读进程。当通信控制寄存器最

27、高位置0,表示要访问接收数据寄存器;若通信控制寄存器最高位置1,表示访问除数寄存器。当a2、a1、a0置0时,访问除数寄存器低8位;a2、a1置0,a0置1,访问除数寄存器高8位。当a2置0,a1、a0置1,访问通信控制寄存器;当a2、a0置1,a1置0,访问通信控制寄存器。4.2.6、 六个进程是接收控制进程。当时钟信号为高电平,串行信号赋1,启动位到来,scir_v开始计数;sin赋1时,scir_v赋0。当接收到所设定的数据长度是scir_v置0。4.2.7、 七个进程是产生停止位和BOUDOUT信号的进程。通信控制寄存器中的第二位为0(ccreg(2)=0)时,表示发送1位停止位;当c

28、creg(2)=1、ccreg(1)=0、ccreg(0)=时,表示发送1.5位停止位;当ccreg(2)=1时、stop_counter=64,表示发送2位停止位。4.2.8、 八个进程是发送控制进程。当通信控制寄存器低四位为1100 、1101、1110、1111时分别表示数据位为5位、6位、7位、8位。当发送移位寄存器空时,发送状态寄存器将数据传送给发送移位寄存器,然后按照规定的数据格式和波特率,加入起始位奇偶校验位和停止位进行数据发送。4.2.9、 九个进程是接收移位寄存器的接收进程。接收移位寄存器对数据线输入端SIN输入的串行数据进行移位接收。4.2.10、第十个进程是数据的移位发送

29、进程。发送状态寄存器将微处理器送来的并行数据发送给移位寄存器,发送移位寄存器在发送时钟的作用下,把并行数据转换成串行数据;在上述的转换过程中,按照程序设定的数据格式自动添加起始位奇偶校验位和停止位。4.2.11、第十一个进程是对发送数据寄存器空满标志进行操作的进程。当通信线状态寄存器第五位为1时(sendregF=1),表示发送数据寄存器空,然后发送状态寄存器将数据传送给发送移位寄存器。当ccreg(7)、 a2、 a1、a0 cs都置0时,表示发送状态寄存器满。4.2.12、第十二个进程是对通信状态寄存器进行操作的进程。当发送数据寄存器满时通信状态寄存器第5位清0 ;当发送数据寄存器空时 ,

30、通信状态寄存器第5位置1 ;当接收数据寄存器空时,通信状态寄存器第0位清0 ;当接收数据寄存器满时,通信状态寄存器第0位置1 ;当发送移位寄存器满时,通信状态寄存器第6位清0;当发送移位寄存器空时 ,通信状态寄存器第6位置1。4.3、仿真 4.3.1:图中各信号的用途: wr: 写信号 (低有效) reset: 复位信号 (低有效) cs: 片选信号 (低有效) a2、a1、a0: 8250内部寄存器选择信号 d: 数据线(输入) sout: 串行输出信号 dsr: 数据装置准备好信号 (低有效) dtr: 数据终端准备好信号 (低有效) rclk: 接收时钟信号 rd: 读信号 (低有效)

31、sin: 串行信号输入端 d: 数据线(输入) recreg: 接收数据寄存器 baudout: 波特率输出4.3.2:整个波形图分为四个部分: 第一部分:0-1ms 数据位长度8位,停止位1位, 2分频。发送数据36H、12H、5AH,接收数据E3H、F5H. 第二部分:1-2ms 数据位长度7位,停止位2位, 4分频。发送数据36H、12H, 接收数据63H、75H. 第三部分:2-3.4ms 数据位长度6位,停止位1位, 8分频。发送数据36H、12H, 接收数据23H、35H. 第四部分:3.4-5.5ms 数据位长度5位,停止位1.5位, 16分频。发送数据16H、12H, 接收数据

32、03H、15H.4.3.3:各部分分析: 第一部分:0-1ms 数据位长度8位,停止位1位, 2分频。发送数据36H、12H、5AH, 接收数据E3H、F5H. 1、初始化在4us时,将80写入通信控制寄存器。(通信控制寄存器D7)在11us时,将02写入除数寄存器低8位。(2分频)在18us时,将00写入除数寄存器高8位。在25us时,将03写入通信控制寄存器。(通信控制寄存器D70,D20,D11,D01。即数据位长度8位,停止位1位) 2、发送在32us时,将待发送数据36H写入发送数据寄存器,输出dtr数据终端准备好信号(负脉冲)。在得到dsr数据装置准备好信号(负脉冲)后开始发送数据

33、36H.在39us时,cpu以查询方式工作,读出通信状态寄存器内数据20H(D50,即发送数据寄存器空)后,在47us时,将待发送数据12H写入发送数据寄存器。在56us时,cpu以查询方式读出通信状态寄存器内数据00H(D51,即发送数据寄存器满)后,不断查询,直到222us时读出通信状态寄存器内数据20H(D50,即发送数据寄存器空)后,在234us时,将待发送数据5AH写入发送数据寄存器 。在sout端口发送出正确数据。3、接收在317us时,cpu以查询方式读出通信状态寄存器内数据00H(D00,即接收数据寄存器空)后,不断查询,直到420us时读出通信状态寄存器内数据21H(D00,

34、即接收数据寄存器满)后,在452us时,将接收到的数据E3H读入到数据线上。数据F5H的接收过程与上述过程类似。注:(recreg 为接收数据寄存器) 4、baudout输出clk的二分频波形。第二部分:1-2ms 数据位长度7位,停止位2位, 4分频。发送数据36H、12H, 接收数据63H、75H. 将04写入除数寄存器低8位,将00写入除数寄存器高八位(四分频)。 通信控制寄存器D7=0,D2=1,D1=1,D0=0,即7位数据长度,停止位2位。 将待发送数据36H写入发送数据寄存器,输出dtr数据终端准备好信号(负脉冲)。在得到dsr数据装置准备好信号(负脉冲)后开始发送数据36H.

35、cpu以查询方式工作,读出通信状态寄存器内数据40H(D50,即发送数据寄存器空)后,将待发送数据12H写入发送数据寄存器。在sout端口发送出正确数据。cpu以查询方式读出通信状态寄存器内数据00H(D00,即接收数据寄存器空)后,不断查询,读出通信状态寄存器内数据41H(D00,即接收数据寄存器满)后,接收到的数据63H读入到数据线上;用同样的方法接收75H并读入到数据线上。baudout输出clk的四分频波形。第三部分:2-3.4ms 数据位长度6位,停止位1位, 8分频。发送数据36H、12H, 接收数据23H、35H. 将08写入除数寄存器低8位,将00写入除数寄存器高八位(八分频)

36、。 通信控制寄存器D7=0,D2=0,D1=0,D0=1,即6位数据长度,停止位1位。 将待发送数据36H写入发送数据寄存器,输出dtr数据终端准备好信号(负脉冲)。在得到dsr数据装置准备好信号(负脉冲)后开始发送数据36H. cpu以查询方式工作,读出通信状态寄存器内数据80H(D50,即发送数据寄存器空)后,将待发送数据12H写入发送数据寄存器。在sout端口发送出正确数据。 cpu以查询方式读出通信状态寄存器内数据00H(D00,即接收数据寄存器空)后,不断查询,读出通信状态寄存器内数据81H(D00,即接收数据寄存器满)后,接收到的数据23H读入到数据线上;用同样的方法接收35H并读

37、入到数据线上。baudout输出clk的八分频波形。第四部分:3.4-5.5ms 数据位长度5位,停止位1.5位, 16分频。发送数据16H、12H, 接收数据03H、15H. 将0B写入除数寄存器低8位,将00写入除数寄存器高八位(十六分频)。 通信控制寄存器D7=0,D2=1,D1=0,D0=0,即5位数据长度,停止位1.5位。 将待发送数据36H写入发送数据寄存器,输出dtr数据终端准备好信号(负脉冲)。在得到dsr数据装置准备好信号(负脉冲)后开始发送数据36H. cpu以查询方式工作,读出通信状态寄存器内数据B0H(D50,即发送数据寄存器空)后,将待发送数据12H写入发送数据寄存器

38、。在sout端口发送出正确数据。 cpu以查询方式读出通信状态寄存器内数据00H(D00,即接收数据寄存器空)后,不断查询,读出通信状态寄存器内数据C0H(D00,即接收数据寄存器满)后,接收到的数据03H读入到数据线上;用同样的方法接收15H并读入到数据线上。baudout输出clk的十六分频波形。 设计总结在储妮晟老师的指导下,毕业设计到此已经完全结束。在按照设计的任务书进行设计的过程中,我对通信系统有了全面的认识和理解。在此过程中,我遇到了许多问题,通过询问老师和同学以及自己查阅资料等多种途径,解决了许多问题,也提高了自己独立思考问题、分析问题、解决问题的能力,同时也提高了动手能力。此次

39、设计,我不仅巩固了大学四年来学习的基本知识,而且学会了写一般论文,用自己已有的知识来分析问题、解决问题,并学到了许多课本以外的知识,提高了自己的综合分析能力。同时也培养了细心、严谨的学习态度,在撰写论文的过程中,掌握了一般论文的写作格式,提高了语言组织能力和文字驾驭能力。次次设计使我受益非浅,这是大学四年来的理论和综合能力的考察。在本次设计中我有如下心得体会:(1) 设计中尽量使设计结构简单,清晰,让人一目了然。(2) 要对每个细节仔细设计,考虑周全,否则一个小的失误都会导致设计的失败。 致谢感谢储妮晟老师的关心、指导和教诲。储老师追求真理,严以律己,宽以待人的崇高品质对我将是永远的鞭策。在此

40、次设计中,储老师敏锐的思维、民主而严谨的作风,给我留下了深刻的印象,尤其是她那认真负责的态度、一丝不苟的精神、细致入微的指导使我深受感动。最后,我还要感谢大学四年所有帮助过我的老师、同学和朋友,是你们让我的大学生活充满了生机和活力,给我留下了美好的回忆。参考文献1.VHDL数字系统设计 林敏、方颖立 北京电子工业出版社 2002.2.可编程逻辑器件原理、开发与应用 赵曙光、郭万有、杨颂华 西安电子科技大学出版社 2002. 3.现代微型计算机与接口技术 杨文显 清华大学出版社 2003.4.微型计算机系统原理及应用 周明德 清华大学出版社 1999.5CDMA蜂窝移动通信与网络安全 袁伟超 北

41、京电子工业出版社 2002.6. 单片机基础 李广弟、朱月秀、王秀山 北京航空航天大学出版社 2001.附录1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY s8250 ISPORT(clk, rclk, reset, sin, rd, wr, cs, a2, a1, a0, dsr: IN STD_ULOGIC; baudout, sout, dtr, rts: OUT STD_ULOGIC; d: INOUT STD_U

42、LOGIC_VECTOR(7 DOWNTO 0);END s8250;ARCHITECTURE rtl OF s8250 ISSIGNAL scir: STD_ULOGIC_VECTOR(7 DOWNTO 0); SIGNAL scit: STD_ULOGIC_VECTOR(7 DOWNTO 0);SIGNAL sh_r: STD_ULOGIC_VECTOR(3 DOWNTO 0);SIGNAL sl_r: STD_ULOGIC_VECTOR(3 DOWNTO 0);SIGNAL sh_t: STD_ULOGIC_VECTOR(3 DOWNTO 0);SIGNAL sl_t: STD_ULOG

43、IC_VECTOR(3 DOWNTO 0);SIGNAL shrecreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -接收移位寄存器 SIGNAL shsendreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -发送移位寄存器 SIGNAL recreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -接收数据寄存器 SIGNAL soutF, sinF: STD_ULOGIC;SIGNAL shsendregEMPTY: STD_ULOGIC:=1;SIGNAL shrecregFULL: STD_ULOGIC:=0;SIGNA

44、L ad: STD_ULOGIC_VECTOR(2 DOWNTO 0); SIGNAL internal_bus_out: STD_ULOGIC_VECTOR(7 DOWNTO 0); -内总线 SIGNAL internal_bus_in: STD_ULOGIC_VECTOR(7 DOWNTO 0); -内总线 SIGNAL ccreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -通信控制寄存器 SIGNAL divl: STD_ULOGIC_VECTOR(7 DOWNTO 0); -除数寄存器低8位 SIGNAL divh: STD_ULOGIC_VECTOR(7 D

45、OWNTO 0); -除数寄存器高8位 SIGNAL sendreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -发送数据寄存器 SIGNAL sendregF: STD_ULOGIC;SIGNAL csreg: STD_ULOGIC_VECTOR(7 DOWNTO 0); -通信状态寄存器 SIGNAL divF: STD_ULOGIC;SIGNAL sendover: STD_ULOGIC:=1;-发送结束标志 SIGNAL dlength: STD_ULOGIC_VECTOR(3 DOWNTO 0); SIGNAL dtrF: STD_ULOGIC; BEGINdt

46、r=dtrF; rts=dtrF;dlength = 11&ccreg(1)&ccreg(0); -通信控制寄存器低四位,用于控制数据位长度 sh_r = scir(7 DOWNTO 4);sl_r = scir(3 DOWNTO 0);sh_t = scit(7 DOWNTO 4);sl_t = scit(3 DOWNTO 0);-p1:对接收移位寄存器空满标志进行操作,将 -并将接收移位寄存器中的值放入接收数据寄存器中 PROCESS(rclk, rd, cs)VARIABLE shrecreg_v:STD_ULOGIC_VECTOR(7 DOWNTO 0); BEGIN IF(rd=0

47、AND cs=0 AND ccreg(7)=0 AND a2=0 AND a1=0 AND a0=0) THENshrecregFULL=0; -接收移位寄存器空 ELSIF(rclkEVENT AND rclk=1) THENIF(sinF=1) AND (sh_r=dlength) AND(sl_r=1111) THEN shrecregFULL FOR i IN 0 TO 4 LOOP -数据位数为5位 shrecreg_v(i):=shrecreg_v(i+3); END LOOP; shrecreg_v:=shrecreg_v AND 00011111; WHEN 1101 = FO

48、R i IN 0 TO 5 LOOP -数据位数为6位 shrecreg_v(i):=shrecreg_v(i+2); END LOOP; shrecreg_v:=shrecreg_v AND 00111111; WHEN 1110 = FOR i IN 0 TO 6 LOOP -数据位数为7位 shrecreg_v(i):=shrecreg_v(i+1); END LOOP; shrecreg_v:=shrecreg_v AND 01111111; WHEN 1111 = shrecreg_v:=shrecreg_v; -数据位数为8位 WHEN OTHERS = shrecreg_v:=s

49、hrecreg_v;END CASE; recreg=shrecreg_v; -将接收移位寄存器中的值放入接收数据寄存器中 END IF;END IF;END PROCESS;-p2 写进程 PROCESS(cs,wr,reset)BEGINIF(wrEVENT AND wr=0) THENad = a2 & a1 & a0;internal_bus_out = d; -将数据值写入内总线 END IF;IF(reset = 0) THENccreg = 00000000; ELSIF(wrEVENT AND wr=1) THENIF(ad=011 AND cs=0) THEN ccreg =

50、 internal_bus_out; -写入通信控制寄存器 ELSIF(ccreg(7) = 1 AND ad = 000 AND cs = 0) THENdivl = internal_bus_out; -写入除数寄存器低8位 ELSIF(ccreg(7) = 1 AND ad = 001 AND cs = 0) THEN divh = internal_bus_out; -写入除数寄存器高8位 divF = 1; -表示除数值已写入 ELSIF(ccreg(7) = 0 AND ad = 000 AND cs = 0) THENsendreg = internal_bus_out; -写入

51、发送数据寄存器 END IF;END IF;END PROCESS;-p3 PROCESS(rclk)BEGINIF(rclkEVENT AND rclk=1) THENIF(sin=0) THENsinF=1; -表示数据开始接收 ELSIF(sinF=1) AND (sh_r=dlength) AND(sl_r=1111) THENsinF=0; -表示数据接收完毕 END IF;END IF;END PROCESS;-p4 对发送过程的各标志操作 PROCESS(clk)BEGINIF(reset=0 OR dsr=0) THENdtrF=1;END IF; IF(sendover= 1

52、 AND sendregF = 0) THENsoutF=0; -表示开始发送数据 shsendregEMPTY=0; -表示发送移位寄存器满 dtrF=0;ELSIF(clkEVENT AND clk=1) THENIF(soutF=0) AND (sh_t=dlength) AND (sl_t=1111) OR reset=0) THENsoutF=1; -表示数据位发送完毕 shsendregEMPTY=1; -表示发送移位寄存器空 END IF; END IF;END PROCESS;-p5 读进程 PROCESS(rd, cs)BEGINIF(rd=0) THENIF(cs=0) THENIF(ccreg(7) = 0 AND a2=0 AND a1=0 AND a0=0) THENinternal_bus_in=recreg; -读接收数据寄存器 ELSIF(ccreg(7) = 1 AND a2=0 AND a1=0 AND a0=0) THENinternal_bus_in=divl; -读除数寄存器低8位 ELSIF(ccreg(7) = 1 AND a2=0 AND a1=0 AND a0=1) THENinternal_bus_in=divh; -读除数寄存器高8位

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!