




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章数字系统设计与实现
9.1时钟电路的设计与实现
9.2UART数据接收发送电路设计与实现
9.3人机接口电路的设计与实现
9.48255并行接口电路的设计与实现9.1时钟电路的设计与实现
9.1.1模24计数器的VHDL设计
9.1.2模60计数器的原理图设计
9.1.3顶层文件设计9.1时钟电路的设计与实现
数字系统设计一般采用自顶向下的层次化设计方法,在MAX+plusⅡ环境下可利用层次化设计方法实现自顶向下的设计。电路设计时,分析设计要求,划分模块,进行低层设计,然后进行顶层设计的连接。下面以图形和文本混合输入为例,设计一个时钟电路,时钟电路由模60计数器构成秒、分电路,模24计数器构成小时电路,生产各模块的符号文件,最后用时、分、秒模块构成顶层时钟电路。9.1.1模24计数器的VHDL设计
1.实体端口定义模24的计数器的实体端口定义如下:ENTITYcntm24vIS
PORT(en:INstd_logic;
clr:in
std_logic;
clk:in
std_logic;
cont:out
std_logic;
qh:bufferstd_logic_vector(3downto0);
ql:bufferstd_logic_vector(3downto0));END;输入端口为计数使能en、清零clear和时钟clk,其数据类型为std_logic标准逻辑类型;输出端口cont的数据类型为std_logic标准逻辑类型;小时信号qh、ql的数据类型为std_logic_vector(3downto0)向量标准逻辑类型。2.模24计数器VHDL设计LIBRARYieee; --调用程序包USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;--------------------ENTITYcntm24vIS --定义实体端口
PORT(en:INstd_logic;
clr:in
std_logic;
clk:in
std_logic;
cont:out
std_logic;
qh:bufferstd_logic_vector(3downto0);
ql:bufferstd_logic_vector(3downto0));END;-----------------------------ARCHITECTUREbehOFcntm24vIS --结构体设计
BEGINcont<='1'when(qh="0010"andql="0011"anden='1')else'0';
PROCESS(CLK,clr)BEGIN
IF(clr='0')THEN
qh<="0000";
ql<="0000";
elsif(clk'eventandclk='1')then
IF(en='1')THEN
if(ql=3)then
ql<="0000";
if(qh=2)then
qh<="0000";else
qh<=qh+1;endif;else
ql<=ql+1;endif;endif;endif;endprocess;endbeh;完成模24计数器的设计,且仿真通过之后,执行菜单File下的CreateDefaultSymbol命令,生成符号cntm24v,该符号将成为当前项目库中的一个元件。9.1.2模60计数器的原理图设计这里采用原理图输入方式设计模60计数器,输入信号有计数使能en、清零clear、时钟clk;输出信号有ql0、ql1、ql2、ql3、qh0、qh1、qh2以及进位输出。调用库中已有的元件符号74161、三输入与非门nand3、非门not等,构成符合要求的计数器,图9.1是模60计数器的原理图。
图9.1模60计数器原理图
9.1.3顶层文件设计
执行菜单File下的建立新文件,文件名为clock.gdf。在clock.gdf空白处双击鼠标左键,打开Entersymbol对话框选择调用的元件,在元件列表区可看到已经生成的两个元件cntm24和cntm60,调用cntm24和cntm60,连接构成时钟电路的顶层设计文件,clock.gdf文件如图9.2所示。
图9.2顶层clock.gdf文件对顶层设计文件clock.gdf进行编译和仿真,调整仿真时间和栅格尺寸,观察仿真波形。在Option菜单下选择GridSize调整显示栅格的大小。在File菜单下选择EndTime设置仿真时间。利用左侧工具栏上的波形绘制图标,可以方便地对波形文件进行编辑,如输入时钟信号clk,en和clr设置为高电平等。波形文件保存为clock.scf,接下来对该文件进行仿真。打开仿真器窗口,单击Start按钮,开始仿真,得到如图9.3所示的仿真波形,观察时、分、秒之间的进位关系。选择芯片,分配引脚,再次进行编译,正确后将设计配置到芯片。图9.3clock.gdf仿真波形完成全部设计后,在菜单MAX+plusⅡ下选择HierarchyDisplay命令,显示clock文件层次结构如图9.4所示。图9.4clock.gdf的层次结构
由图9.4可见,顶层clock.gdf调用cntm24v符号和cuntm60符号,cntm24v符号是文本编辑生成的符号文件;cuntm60符号是图形编辑生成的符号文件。符号cntm24v和cuntm60又各自调用了LPM库中的宏单元LMP-ADD-SUB:120和74160符号。9.2UART数据接收发送电路设计与实现9.2.1UART程序设计9.2.2UART程序仿真9.2UART数据接收发送电路设计与实现
通用异步数据接收发送方式UART(UniversalAsynchronousReceiverTransmitter)不仅能实现接收发送方相互之间通讯,同时还能满足PC机、微处理器等设备之间的数据通信。串行外设都会用到RS232串行接口,传统上采用专用的集成电路即UART专用芯片实现,如TI、EXAR、EPIC的550、452等系列芯片。有时,人们不需要使用完整的UART的功能,而对于多串口的设备或需要加密通讯的场合使用UART也不是最佳选择。如果采用FPGA/CPLD器件,那么就可以将所需要的UART功能集成到FPGA内部,使用VHDL集成UADT的核心功能,从而使整个设计更加紧凑,更小巧、稳定、可靠。
分析UART结构,可以看出UART主要由数据总线接口和控制逻辑、波特率发生器、发送和接受等部分组成,各部分间关系如图9.5所示。图9.5UART结构框图了解UART的基本组成结构后,需要对各部分的功能进行详细的分析。假定所要设计的UART功能为:数据位7位、8位可选,波特率可选,校验方式有奇、偶、无等多种方式。1.波特率的设定UART的接收和发送可以采用相同的波特率进行,当然也可以实现不同波特率的收发,这里采用相同波特率的收发,波特率可以通过CPU的总线接口进行设置。假设UART收发的每一个数据宽度都是波特率发生器输出时钟周期的16倍,假定按照9600bps的波特率进行收发,那么波特率发生器输出的时钟频率应为9600×16Hz。假定系统提供的时钟为1.8432MHz,那么可以用CPU写入不同的数值到波特率保持寄存器,然后用计数器方式生成所需要的各种波特率,该数值计算原则是1843200/(16×所期望的波特率)。如果希望获得9600Hz的波特率,计算数值为1843200/(16×9600)=12(0CH)。
2.数据发送数据发送过程中,需要解决几个关键问题:CPU要判断何时可以向发送保持寄存器(THR)写入数据?也就是说CPU要写入数据到THR之前必须判断当前是否可写?很明显如果不判断,发送的数据会出错,除非CPU写入THR的频率低于当前数据传输的波特率,这种情况是极少出现的。CPU写入数据到THR后,何时THR的数据传送到发送移位寄存器(TSR)进行移位?即处理THR和TSR的关系。数据位有7、8位两种,校验位有三种,因此发送的数据可能有9、10、11位三种长度,所以需要按照所设置的传输情况分别进行处理。可以通过CPU写一个端口数据设置数据位、校验方式,发送和接受根据该数据设置进行处理。根据以上分析,UART的数据发送定义如下信号:txhold:数据发送保持信号,标准逻辑向量型:std_logic_vector(0TO7);txreg
:数据发送存储器,标准逻辑向量型:std_logic_vector(0TO7);txtag2:查找数据标志位,标准逻辑型:std_logic;txtag1:清空寄存器,标准逻辑型:std_logic;txparity:存储器产生奇偶校验,标准逻辑型:std_logic;txclk:数据发送时钟信号,标准逻辑型:std_logic;txdone:数据发送结束,标准逻辑型:std_logic;paritycycle:数据发送位校验,标准逻辑型:std_logic;txdatardy:数据发送读操作,标准逻辑型:std_logic;图9.6给出了一个奇校验8bit数据的发送时序图。
图9.6UART数据发送时序图3.数据接收数据接收同样存在9、10、11位三种串行数据长度的问题,必须根据设置的不同情况将数据完整地取下来。接收数据时还有一个特殊情况,移位时钟不是始终存在,移位时钟在接受到起始位的中间开始产生,到停止位的中间时结束。接受到停止位后,给出中断信号,并提供相应的校验出错、帧出错以及溢出等。数据接收时,需引入hunt和idle两个信号,hunt为高电平时表示捕捉到起始位,idle为高电平时表示不在移位状态,利用这两个信号就可以产生接收所需要的移位时钟。根据上述分析,UART的数据接收过程定义如下信号:rxhold:数据接收保持信号,标准逻辑向量型:std_logic_vector(0TO7);rxreg
:数据接收存储器,标准逻辑向量型:
std_logic_vector(0TO7);rxparity:数据接收校验位,标准逻辑型:std_logic;paritygen:产生数据接收校验位,标准逻辑型:
std_logic;rxstop:数据接收停止位,标准逻辑型:std_logic;rxclk:数据接收时钟,标准逻辑型:std_logic;rxidle:数据接收空操作,标准逻辑型:std_logic;rxdatardy:数据接收准备读操作,标准逻辑型:
std_logic;图9.7是一个8bit奇校验的接收数据时序图,假定接收正确,因此没有给出校验、溢出、帧出错等信号。图9.7UART数据接收时序图9.2.1UART程序设计1.库与实体端口的定义UART的设计中,调用的库文件有IEEE库,打开的程序包有:std_logic_1164、
std_logic_arith、
std_logic_unsigned。实体端口的定义如下:
PORT(clkx16:INstd_logic; --时钟
read:INstd_logic; --接收数据读操作
write:INstd_logic; --发送数据写操作
rx:INstd_logic; --接收数据
reset:INstd_logic; --复位清零
tx:OUTstd_logic; --发送数据
rxrdy:OUTstd_logic; --准备接收数据
txrdy:OUTstd_logic; --准备发送数据
parityerr:OUTstd_logic; --接收数据校验错误
framingerr:OUTstd_logic; --接收帧数据错误
overrun:OUTstd_logic; --接收溢出错误data:INOUTstd_logic_vector(0TO7)); --双向数据总线2.UART程序设计UART的程序设计分为5部分。第一部分是CLOCK时钟设计,第二部分是发送数据设计,第三部分是接收数据设计,第四部分是异步控制设计,第五部分是发送与接收异步控制设计。结构体采用“IF…THEN…ELSE(ELSIF)”顺序语句设计,结构体命名为exemplar,项目名为UART。下面提供的是UART的VHDL设计参考程序,图9.8是UART的参考程序生成的UART符号文件。图9.8UART符号文件9.2.2UART程序仿真编译UART程序,正确后开始进行仿真。仿真前信号的设置如下:rx端口设置为时钟周期信号,周期为20us、clkx16端口设置为时钟周期信号,周期为40us、reset端口设置为逻辑1、read端口设置为逻辑0、data端口设置数据为01、02、03、04、05、06…。仿真通过后可以看到对应输出端口data数据发生的变化,UART的仿真波形如图9.9所示。作者使用Altera公司的MAX7000SEPM7128SLC84-6完成项目设计,打开UART.RPT报告文件,可以了解详细的集成电路资源利用与分配情况。图9.9UART的仿真波形
9.3人机接口电路的设计与实现
9.3.1接口电路的分析
9.3.2接口电路的设计
9.3人机接口电路的设计与实现
人机接口电路在微机系统中应用非常广泛,主要接口有数码管显示、键盘和VGA显示器等。在CPLD系统设计中人机接口电路的设计与开发也是一个重要的环节,例如,数码管的静态和动态扫描显示;矩阵方式的键盘扫描、按键去抖动、键码识别等。这里主要讨论矩阵方式的键盘接口电路的设计与实现。9.3.1接口电路的分析矩阵方式的键盘接口电路的设计主要包含的矩阵扫描、去抖动、键码识别及显示功能的设计,下面以4×4键盘接口电路的设计为例。接口电路的系统时钟inclk频率为22MHz,接口电路的主要功能是分频和扫描。利用系统时钟22MHz的inclk分频产生5ms的键查询时钟keyclkout,keyclkout十分频后产生50ms的触发时钟chuclkout。在触发时钟chuclkout的高电平期间送出列扫描数据,将得到的行数据送去抖动电路,去抖动后读入,根据行、列数据之间的关系确定其键值。键盘布局如图9.10所示,图9.11是设计电路KEY2编译通过后生产的符号文件。图9.10KBC键盘电路示意图图9.11KEY2的符号文件9.3.2接口电路的设计1.去抖动电路设计去抖动电路的基本设计原理:电路采用5ms的时钟接收输入数据A,如果连续三次数据为零,可以确认数据是稳定的,且可以接收。如图9.12所示是去抖动电路的设计,采用图形设计输入。图9.12键盘去抖动电路以上是通用的抖动消除电路设计,由D触发器构成。信号稳定时间由D触发器的个数决定。该单元电路命名为tinglmove,该电路作为元件将在下面的VHDL程序中调用。2.键盘扫描显示电路的设计下面是键盘串行扫描显示电路实体的VHDL描述,具体程序中采用元件例化语句调用键盘去抖动电路tinglmove。LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_arith.all;USEieee.std_logic_unsigned.all;-----------------------------------------ENTITYkey2ISPORT(inclk:INstd_logic;--时钟信号
inkey:INstd_logic_vector(0to3);--按键信号
outkey:OUTstd_logic_vector(0to3); --键盘扫描输出信号
outled:OUTstd_logic_vector(7downto0) --LED显示输出信号
);ENDkey2;---------------------------------------------图9.13是key2.vhd文件的层次结构。图9.13key2.vhd文件的层次结构图9.14是key2的仿真波形,可以看到输入clk端口的设置,inkey端口设置逻辑信号,仿真通过后可以看出对应输出口outkey数据发生的变化。图9.14key2.scf文件的仿真波形
9.48255并行接口电路的设计与实现9.4.18255接口电路的分析9.4.28255接口电路的设计
9.48255并行接口电路的设计与实现
8255是典型的可编程并行接口芯片,广泛用于各种外设接口电路中。用可编程逻辑器件,如FLEX和MAX系列设计可以实现8255的设计,设计具有24个可编程I/O接口、静态读/写模式、同步处理设计模式等功能的并行接口电路。9.4.18255接口电路的分析可编程并行接口芯片8255从结构上看主要有四部分组成:控制寄存器和逻辑分配单元;数据输出多路选通单元;AB端口输入输出单元以及C端口输入输出控制选择单元。图9.15是8255的结构框图。表9.2是8255的接口引脚功能类型及其说明。图9.158255结构框图名称类型属性功能说明Clkinput/时钟Ncsinput“0”片选Nrdinput“0”读数据控制Nwrinput“0”写数据控制Resetinput“1”复位A[1..0]input“1”积存器地址总线Din[7..0]input“1”数据输入总线Pain[7..0]input“1”A口输入总线Pbin[7..0]input“1”B口输入总线Pcin[7..0]input“1”C口输入总线Paenoutput“1”A口数据使能Pbenoutput“1”B口数据使能Dout[7..0]output“1”数据输出总线Paout[7..0]output“1”A口输出总线Pbout[7..0]output“1”B口输出总线Pcent[7..0]output“1”C口数据使能总线Pcout[7..0]output“1”C口输出总线表9.28255的引脚功能及类型说明8255三种工作方式的时序波形不同,图9.16给出工作方式0的时序波形。读者如果需要了解方式1和2的时序波形可以查阅相关资料。(a)方式0输入时序波形(b)方式0输出时序波形图9.16工作方式0的时序波形
9.4.28255接口电路的设计
8255的VHDL程序中的前几条语句说明调用的IEEE库及其相关的程序包;接着是8255的端口描述,其中输入输出端口的定义与A8255定义相同;其他语句是8255的功能描述。这里采用元件例化的设计方法,主程序包含相对独立的7个例化的子程序,这些子程序分别是dout_mux、cntl_log、partaout、partain、partbin、partbout和partcout。图9.17给出主程序与子程序之间的层次关系。图9.17主程序与子程序的层次关系图9.18是CNTL-LOG.SCF文件仿真波形。由图可以看出,输入RESET端口设置逻辑0、PCIN端口设置逻辑0、nRD端口设置逻辑0、CLK端口设置时钟40ns、nWR端口设置写信号,可以看到输出端口PortAoouLd数据发生的变化。图9.18cntl_log仿真波形图9.19是cntl_log生成的符号文件。图9.19cntl_log的符号文件图9.20是dout_mux的仿真波形。输入UTSelect端口设置逻辑0、ontrlReg端口设置逻辑00、rtAinReg端口设置逻辑00、PAIN端口设置逻辑01、02、03、04、05、06…,仿真后,可以看出输出端口DOUT数据发生的变化。图9.20dout_mux的仿真波形图9.21是dout_mux.vhd文件编译后生成的符号文件。图9.21dout_mux的符号文件图9.22是portain的仿真波形。输入RESET端口设置逻辑0,复位时RESET设置为逻辑1;PortALnLd端口设置逻辑0、PAIN端口设置为00、01、02、03、04、05、06…、CLK端口设置逻辑时钟40ns,仿真通过后可以看出对应输出口PortAInReg数据变化,同时可以观测到输入RESET端口设置逻辑1时间段内的复位功能。图9.22portain的仿真波形
图9.23是portain.vhd文件编译后产生的符号文件。图9.23portain的符号文件
图9.24是portaout的仿真波形。输入RESET端口设置为逻辑0,复位有效时设置RESET为逻辑1;PortAOutLd端口设置逻辑0、DIN端口设置数据00、01、02、03、04、05、06…;CLK端口设置时钟周期40ns。仿真通过后,可以看到输出端口PAOUT数据发生的变化,同时可以观测到输入RESET端口设置逻辑1时间段内,信号被复位。图9.24portaout的仿真波形图9.25是portout.vhd文件编译生成的符号文件。图9.25portout符号文件图9.26是portbin的仿真波形。输入RESET端口设置逻辑0,复位有效时RESET为逻辑1;PortBLnLd端口设置逻辑0、PBIN端口输入00、01、02、03、04、05、06…;CLK端口设置时钟周期40ns。仿真通过后,可以看到输出端口PortBInReg数据的变化,同时可以看到输入RESET端口为逻辑1时,信号复位功能。图9.26portbin仿真波形图9.27是portbin.vhd文件编译后生成的符号文件。图9.27portbin符号文件图9.28portbout.vhd文件的仿真波形。输入RESET端口设置逻辑0,复位有效时设为逻辑1、PortALnLd端口设置逻辑0、PAIN端口设置数据00、01、02、03、04、05、06…、CLK端口设置时钟周期40ns。仿真通过后,可以看出输出端口PBOUT数据的变化,同时可以观测到输入RESET为逻辑1时的信号复位功能。图9.28portbout.vhd文件的仿真波形图9.29是portbout.vhd文件编译后生成的符号文件。图9.29portbout.vhd的符号文件图9.30是输出端口C子程序portcout.vhd文件编译后生成的portcout
符号文件。图9.30portcout.vhd的符号文件图9.31是portcout.vhd文件的仿真波形。输入RESET端口设置逻辑0、DIN端口设置数据为00、01、02、03、04、05、06…、PCIN端口设置数据为00、01、02、03、04、05、06…、CLK端口设置时钟周期40ns。仿真通过后,看到输出端口COUT和Status数据按照DIN端口和PCIN端口的数据发生对应的变化。当RESET端口设置逻辑1时,信号复位。图9.31
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电气工程识图与绘制》课件 项目二 任务一 三居室电气系统咨询
- 2025年超多道数字地震仪合作协议书
- 水体漂浮物自动收集器行业跨境出海战略研究报告
- 沙漠博物馆行业深度调研及发展战略咨询报告
- 游戏周边商品电商平台行业深度调研及发展战略咨询报告
- 幼儿园校车升级行业深度调研及发展战略咨询报告
- 木质素燃料高效燃烧行业深度调研及发展战略咨询报告
- 职场精英挑战赛综艺节目企业制定与实施新质生产力战略研究报告
- 电影发行代理企业制定与实施新质生产力战略研究报告
- 2025年高考语文系统总复习:现代诗歌阅读之诗歌分类、特点、真题
- 腹部CT检查技术ppt课件(PPT 18页)
- 《医药代表拜访技巧及区域管理》PPT课件
- 附表1哈尔滨市尚志市水库工程划界成果表
- 事件研究法PPT课件
- 《刘姥姥进大观园》课本剧剧本3篇
- 监理规划细则审批表
- 国家开放大学《水利水电工程造价管理》形考任务1-4参考答案
- 第二章 三相异步电机控制线路
- CTP-120P互感器综合测试仪说明书(V1.0)
- 矿泉水资源采矿许可证
- 焊接检验培训课件(PPT 61页)
评论
0/150
提交评论