本科PLD与数字系统设计第5章.pdf
《本科PLD与数字系统设计第5章.pdf》由会员分享,可在线阅读,更多相关《本科PLD与数字系统设计第5章.pdf(190页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章设计实例第5章设计实例第第5章 设计实例章 设计实例5.1 实验开发板原理实验开发板原理5.2 设计实例设计实例第5章设计实例第5章设计实例5.1 实验开发板原理实验开发板原理5.1.1 实验开发板原理CPLD-A型数字系统实验开发板的核心芯片是CPLD或FPGA,整个实验开发板由两块印刷电路板组成。一块含有CPLD或FPGA芯片,当需要使用不同型号的CPLD或FPGA芯片时,只需要更换这块印刷电路板。第5章设计实例第5章设计实例另一块设置了以下几种电路:(1)LED数码管和显示驱动电路,可以显示6位有效数字。(2)LED点阵88显示电路,用于汉字或其他图案显示。(3)数/模转换电路,把
2、输入的数字信号通过T型电阻网络转换成模拟输出。如果与比较器相结合,可以构成模/数转换电路。(4)单片机控制电路,单片机通过与CPLD或FPGA芯片连接的数据传输线与地址选通信号线对其进行控制。第5章设计实例第5章设计实例(5)RS-232串行接口电路,实验开发板可以与计算机的串行接口进行通信。(6)标准时钟产生电路输出2 MHz、2048 Hz和8 Hz的时钟信号。(7)蜂鸣器及其驱动电路。(8)电平测试电路,可以通过发光二极管的亮灭直接判断被测信号电平的高低。(9)5 V稳压电源电路、防止外接电源极性接反的控制电路,只要能够提供7.5 V和500 mA电流的直流电源,均可作为该实验开发板的电
3、源。该实验开发板的原理框图如图5-1所示。第5章设计实例第5章设计实例图5-1 实验开发板的原理框图LED数码管及其驱动电路LED发光二极管88 LED点阵及其驱动电路按键和波动开关输入RS-232串口通信电路蜂鸣器及其驱动电路时钟产生电路CPLD(XC95108、XCS10、XC2S15、ispLSI1032或EPM7128)数/模转换电路编程接口电路电源稳压电路第5章设计实例第5章设计实例实验开发板的具体电路见附录A。当采用Xlinx公司的Spartan-系列FPGA芯片时,其供电电源电压为2.5 V,为了能够与其他电源为5 V的芯片的管脚相连接,XC2S15芯片的I/O供电电源电压接3.
4、3 V。XC2S15芯片的电源连接如图5-2所示。第5章设计实例第5章设计实例图5-2 XC2S15芯片的电源连接5 V器件Spartan-3.3 V器件3.3 V5 V3.3 V5 V3.3 V3.3 V2.5 VI/O电源第5章设计实例第5章设计实例5.1.2 XC2S15-5VQ100C的管脚连接1按键的连接XC2S15-5VQ100C的10个管脚分别与10个按键相连。按下按键Ki时,Ki为低电平,否则Ki为高电平。管脚与按键的连接如表5-1所示。第5章设计实例第5章设计实例表5-1 管脚与按键的连接第5章设计实例第5章设计实例2LED点阵的连接XC2S15-5VQ100C的管脚与LED
5、点阵(采用行共阳极,列共阴极的LED点阵)连接。XC2S15-5VQ100C的3个管脚分别控制3个行控制信号ROW0、ROW1和ROW2,当ROW0、ROW1和ROW2均为低电平时,选中LED点阵的第一行;XC2S15-5VQ100C的8个管脚分别控制8个列控制信号,其中COL1为低电平时,选中第一列。LED点阵的连接如表5-2所示。第5章设计实例第5章设计实例表5-2 LED点阵的连接第5章设计实例第5章设计实例3LED发光二极管的连接XC2S15-5VQ100C的8个管脚分别与8个红、黄、绿LED发光二极管的阳极相连,例如,当COL8为高电平时,最右边的一个发光二极管发光。LED发光二极管
6、的连接如表5-3所示。第5章设计实例第5章设计实例表5-3 LED发光二极管的连接第5章设计实例第5章设计实例4LED数码管的连接LED数码管是共阴极数码管,XC2S15-5VQ100C的3个管脚分别控制3个位选择控制信号ROW0、ROW1和ROW2,决定哪一个LED数码管显示数字;XC2S15-5VQ100C的8个管脚分别控制8个LED数码管的段码a1、g1、dp1。例如,当需要实验开发板上的左边第一个LED数码管显示数字1时,控制信号ROW0、ROW1和ROW2都置0,段码控制信号a1和b1都置1。如果要显示多个数字时,采用动态扫描的方式,位选择控制信号和段码控制信号相配合,显示正确的数字
7、。LED数码管的连接如表5-4所示。第5章设计实例第5章设计实例表5-4 LED数码管的连接第5章设计实例第5章设计实例5T形电阻网络的连接XC2S15-5VQ100C的8个管脚分别与T形电阻网络中的8个电阻相连,XC2S15输出数字信号,通过T型电阻网络转换成模拟信号,其中DA7是最高位,DA0是最低位,完成数/模转换。被测模拟信号与数/模转换后的信号相比较,产生CMP信号,XC2S15的第84管脚接收比较CMP信号,用于实现逐次比较式模/数转换器。T形电阻网络的连接如表5-5所示。第5章设计实例第5章设计实例表5-5 T形电阻网络的连接第5章设计实例第5章设计实例6单片机的连接XC2S15
8、的管脚与单片机的连接如表5-6所示。7时钟信号的连接时钟信号CLK1的输入频率为2048 Hz,CLK2的输入频率为8 Hz,CLK3的输入频率为2 MHz。时钟信号的连接如表5-7所示。第5章设计实例第5章设计实例表5-6 单片机的连接第5章设计实例第5章设计实例表5-7 时钟信号的连接第5章设计实例第5章设计实例8其他BUZZER为蜂鸣器控制信号,做串行口实验时,TxD作为发送信号,RxD作为接收信号。其连接如表5-8所示。第5章设计实例第5章设计实例表5-8 其他信号的连接第5章设计实例第5章设计实例5.1.3 编程接口编译并且通过后的熔丝图(*.jed)或bit流(*.bit)文件的编
9、程信息经过编程接口和下载电缆传送到CPLD或FPGA芯片。在CPLD-A型实验板与计算机的并行接口(DB25)之间的通信是由一个编程接口电路和一根扁平电缆来完成的,其连接方法如图5-3所示。第5章设计实例第5章设计实例图5-3CPLD-A型实验板与计算机的连接CPLD-A型实验板编程接口电路PC机并行接口TMSTCKTDITDO第5章设计实例第5章设计实例采用JTAG命令执行编程和校验。其中:信号TMS是模式选择控制信号;信号TCK是时钟信号;信号TDI与时钟信号相配合,将编程数据和指令送到在线可编程逻辑芯片;信号TDO是从在线可编程逻辑芯片中读出数据。下载电缆也可以自己制作,编程接口电路原理
10、图如图5-4所示。第5章设计实例第5章设计实例图5-4编程接口电路原理图 151 1324356789123456789 41N58170.01FVCCGNDTCKTDITMSVCCGNDCCLKD/PDINPROGFPGA编程接口U1U21471471 k1N5817100 VCC 6100 100 DONEU2215.1 kU1PROG231100 pF100 300 2DIN300 TMS_IN300 U1564100 100 100 pF100 pFU1121113 5CTRL300 U19810 3 20 25 8 11 12CLKGNDD6BUSYPEGNDSHIELDU2564U
11、29810U2111213300 100 100 pFU174HC125U174HC125计算机并行接口TDO第5章设计实例第5章设计实例5.2 设 计 实 例设 计 实 例5.2.1 汉字显示实验开发板上的FPGA型号为XC2S15-5VQ100C。1设计要求实现在LED点阵屏上显示单个汉字、字母和数字的功能,也能够实现汉字或字母上下左右移动的显示功能。第5章设计实例第5章设计实例图5-5 汉字“电”字的点阵字型87654321D7D0第5章设计实例第5章设计实例LED点阵屏上有64个发光二极管,在某一时刻LED点阵屏只有一行中指定的发光二极管发光。实验开发板上LED点阵屏采用共阳极发光二极
12、管,LED点阵屏有行信号和列信号。CPLD提供3个行控制信号为LED点阵屏的某一行提供电源电压;CPLD直接驱动LED点阵屏的列信号,如果要某一列的发光二极管亮,则该列驱动信号为低电平。例如要显示电子技术的“电”字的点阵字型,第一行的数据为11101111B,第二行的数据为00000001B,如图5-5所示。第5章设计实例第5章设计实例实验板上有一个标准时钟发生电路(由32 768 Hz石英晶体和一个14位串行二进制计数/分频器MC4060组成,提供2048 Hz和8 Hz时钟信号)。FPGA芯片利用实验开发板上的2048 Hz时钟,给实验开发板上的74LS138和行驱动电路提供2048 Hz
13、的行扫描信号;根据行扫描信号确定该行所需要的列信号,其具体设计方案如图5-6所示。其中实验开发板上的8 Hz时钟信号用于控制显示每一个汉字的显示时间。第5章设计实例第5章设计实例图5-6 汉字显示原理框图74LS138行驱动88 LED点阵屏38CPLD2048 Hz8 Hz列驱动883第5章设计实例第5章设计实例2采用VHDL语言输入的方式实现汉字显示用VHDL编写一个显示汉字“电子”的程序由三个进程组成。其中:P1进程是一个二进制计数分频器,确定一个汉字显示的时间,输入信号为实验板上的8 Hz时钟信号clka;P2进程为实验开发板上的74LS138提供行扫描地址输出信号addr(0)add
14、r(2),进程的输入信号为实验开发板上的2048 Hz时钟信号clk;P3进程输出每一行的列数据信号data(0)data(7),该输出信号决定一行中的哪一个或几个发光二极管发光,该进程的输入信号是P2进程提供的行扫描地址输出信号。汉字“电子”的字型分别定义成常量roma和romb,这是两个由8个数组和8位矢量组成的常量。第5章设计实例第5章设计实例具体程序和说明如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY disp ISPORT(clk:IN STD_LOGIC;clka:
15、IN STD_LOGIC;addr:INOUT STD_LOGIC_VECTOR(2 DOWNTO 0);data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END;第5章设计实例第5章设计实例ARCHITECTURE disp_arch OF disp ISTYPE romtable IS ARRAY(0 TO 7)OF STD_LOGIC_VECTOR(7 DOWNTO 0);CONSTANT roma:romtable:=romtable(11101111,00000001,01101101,00000001,01101101,00000001,11101111,
16、11100001);-汉字“电”的字型第5章设计实例第5章设计实例CONSTANT romb:romtable:=romtable(00000000,11111101,11111011,0000000011110111,11110111,11110111,11100111);-汉字“子”的字型第5章设计实例第5章设计实例SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP1:PROCESS(clka)-二进制计数分频器BEGINIF rising_edge(clka)THENq=q+1;END IF;END PROCESS P1;第5章设计实例第5章设计实例
17、P2:PROCESS(clk)-行扫描控制信号BEGINIF rising_edge(clk)THENaddr=addr+1;END IF;END PROCESS P2;第5章设计实例第5章设计实例P3:PROCESS(addr)-输出每一行的列数据信号BEGINIF q(3)=1 THEN data=roma(addr);-显示汉字“电”ELSEdata=romb(addr);-显示汉字“子”END IF;END PROCESS P3;END disp_arch;第5章设计实例第5章设计实例下面是显示汉字“电子”程序中使用到的信号及其对应的管脚。#PACE:Start of Constrai
18、nts extracted by PACE from the DesignNET clk LOC=P88;NET clka LOC=P91;NET addr LOC=P47;NET addr LOC=P46;NET addr LOC=P45;第5章设计实例第5章设计实例NET data LOC=P44;NET data LOC=P43;NET data LOC=P41;NET data LOC=P40;NET data LOC=P34;NET data LOC=P32;NET data LOC=P31;NET data LOC=P30;第5章设计实例第5章设计实例5.2.2 数字频率计1设计要
19、求设计一个有效位为4位十进制数的数字频率计。频率计电路原理框图如图5-7所示。第5章设计实例第5章设计实例图5-7数字频率计电路原理框图LED数码管驱动电路4位十进制计数器4位LED数码管计数闸门控制电路标准时钟发生电路计数器复位控制电路待测输入信号第5章设计实例第5章设计实例实验板上有一个标准时钟发生电路(由32 768 Hz石英晶体和一个14位串行二进制计数/分频器MC4060组成,提供2048 Hz和8 Hz时钟信号),为计数闸门控制电路提供一个标准8 Hz信号,连接到XC2S15-5VQ100C的91脚;计数闸门控制电路控制4位十进制计数器在时间T1=1 s内计数,计数的个数就是待测输
20、入信号的频率,在T2=1 s内停止计数,并且在7/8 s内保持计数值不变,显示数字频率值;计数器复位控制电路在每次开始计数之前的1/8 s内,产生复位信号,将4位十进制计数器的上次计数值清零,为下一次从零开始计数做准备。其时序图如图5-8所示。第5章设计实例第5章设计实例图5-8 时序图输入脉冲信号计数器清零信号计数允许信号(en)1 s7/8 s第5章设计实例第5章设计实例2采用VHDL语言输入的方式实现数字频率计用VHDL编写程序实现数字频率计控制4个十进制计数器在单位时间内计数、停止计数和清零等逻辑功能。第5章设计实例第5章设计实例图5-9 数字频率计端口控制信号clkxclkrowle
21、d第5章设计实例第5章设计实例用VHDL编写程序实现数字频率计的端口控制信号,如图5-9所示。其中,xclk为待测的输入信号;clk为石英晶体(32 768 Hz)分频后的8 Hz标准信号,作为产生1 s信号的输入信号;led为LED数码管的段码和小数点控制信号;row为位选择控制信号,决定哪一个LED数码管显示数字。该程序(文件名为freq.vhd)由8个进程组成,进程P3P6分别描述4个十进制计数器,P2进程产生计数器的清零信号clr和计数允许信号en。第5章设计实例第5章设计实例具体程序和说明如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE
22、IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY freq IS PORT(clk:IN STD_LOGIC;xclk:IN STD_LOGIC;第5章设计实例第5章设计实例row:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);led:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END freq;-xclk为2048 Hz,clk为8 HzARCHITECTURE Behavioral OF freq ISSIGNAL count0:STD_LOGIC_VECTOR(3 DO
23、WNTO 0):=0000;-个位BCD码SIGNAL count1:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;-十位BCD码第5章设计实例第5章设计实例SIGNAL count2:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;-百位BCD码SIGNAL count3:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;-千位BCD码SIGNAL countdiv:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;SIGNAL num:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;
24、SIGNAL dispcnt:STD_LOGIC_VECTOR(1 DOWNTO 0):=00;SIGNAL clr,en,c0,c1,c2:STD_LOGIC;第5章设计实例第5章设计实例BEGINP1:PROCESS(clk)BEGINIF rising_edge(clk)THENcountdiv=countdiv+1;END IF;END PROCESS P1;P2:PROCESS(countdiv)第5章设计实例第5章设计实例BEGINIF countdiv=1111 THENclr=1;ELSEclr=0;END IF;IF countdiv=0111 THEN en=1;-在1 s
25、时间内允许计数ELSEen=0;-在另1 s时间内保持计数值,禁止计数END IF;END PROCESS P2;第5章设计实例第5章设计实例P3:PROCESS(xclk,clr,en)-个位计数器BEGINIF clr=1 THENcount0=0000;ELSIF(rising_edge(xclk)AND(en=1)THENIF count0=1001 THENcount0=0000;c0=0;ELSEcount0=count0+1;c0=1;END IF;END IF;END PROCESS P3;第5章设计实例第5章设计实例P4:PROCESS(c0,clr,en)-十位计数器BEG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 PLD 数字 系统 设计
限制150内