首页 EDA实验讲义_GK_PK

EDA实验讲义_GK_PK

举报
开通vip

EDA实验讲义_GK_PKPAGE EDA技术实验讲义 (含GW48系列实验开发系统详细使用说明) 杭州康芯电子有限公司 www.kx-soc.com 目 录 第一章 GW48 EDA系统使用说明 第一节 GW48教学实验系统原理与使用介绍 第二节 实验电路结构图 第三节 GW48CK/GK EDA系统和GWDVP-B应用板 第二章 GWAK30+/50+适配板使用说明 第三章 GW48系统专用配套之GWDVP-B电子设计应用板使用说明 第四章 FPGA/...

EDA实验讲义_GK_PK
PAGE EDA技术实验讲义 (含GW48系列实验开发系统详细使用说明) 杭州康芯电子有限公司 www.kx-soc.com 目 录 第一章 GW48 EDA系统使用说明 第一节 GW48教学实验系统原理与使用介绍 第二节 实验电路结构图 第三节 GW48CK/GK EDA系统和GWDVP-B应用板 第二章 GWAK30+/50+适配板使用说明 第三章 GW48系统专用配套之GWDVP-B电子设计应用板使用说明 第四章 FPGA/CPLD结构 第五章 原理图输入设计方法 第六章VHDL设计初步 第一节 2选1多路选择器的VHDL描述 第二节 寄存器描述及其VHDL语言现象 第3节 VHDL文本输入设计方法初步 【实验1】 1位全加器VHDL文本输入设计 【实验2】 2选1多路选择器VHDL设计 【实验3】 8位硬件加法器VHDL设计 【实验4】 含异步清0和同步时钟使能的4位加法计数器 【实验5】 7段数码显示译码器设计 【实验6】 数控分频器的设计 【实验7】 用状态机实现序列检测器的设计 【实验8】 用状态机对ADC0809的采样控制电路实现 【实验9】 波形发生与扫频信号发生器电路设计 第七章GWCNF型FPGA掉电保护配置器应用 第8章 GW48-PK系统LCD液晶屏使用方法 杭州康芯电子有限公司:电话:0571-88212487; E-Mail:span88@mail.hz.zj.cn 第一章 GW48 SOC/EDA系统使用说明 第一节 GW48教学实验系统原理与使用介绍 一、GW48系统使用注意事项 a:闲置不用GW48 EDA/SOC系统时,关闭电源,拔下电源插头!!! b:EDA软件安装方法可参见光盘中相应目录中的中文README.TXT;详细使用方法可参阅本书或《EDA技术实用教程》、或《VHDL实用教程》中的相关章节。 c:在实验中,当选中某种模式后,要按一下右侧的复位键,以使系统进入该结构模式工作。 d:换目标芯片时要特别注意,不要插反或插错,也不要带电插拔,确信插对后才能开电源。其它接口都可带电插拔(当适配板上的10芯座处于左上角时,为正确位置)。 e:对工作电源为5V的CPLD(如1032E/1048C、95108或7128S等)下载时。最好将系统的电路“模式”切换到“ b”,以便使工作电压尽可能接近5V。 g: GW48详细使用方法可参见《EDA技术实用教程》配套教学软件*.ppt。 h:主板左侧3个开关默认向下,但靠右的开关必须打向上(DLOAD),才能下载。 i:跳线座“SPS” 默认向下短路(PIO48);右侧开关默认向下(TO MCU)。 j:左下角拨码开关除第4档“DS8使能”向下拨(8数码管显示使能)外,其余皆默认向上拨。 二、GW48系统主板结构与使用方法 附图1-1B、GW48-GK/PK系统目标板插座引脚信号图 附图1-1A为GW48-CK型EDA实验开发系统的主板结构图(GW48-GK/PK型未画出,具体结构说明应该参考实物主板),该系统的实验电路结构是可控的。即可通过控制接口键SW9,使之改变连接方式以适应不同的实验需要。因而,从物理结构上看,实验板的电路结构是固定的,但其内部的信息流在主控器的控制下,电路结构将发生变化。这种“多任务重配置”设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的目的有3个:1.适应更多的实验与开发项目;2. 适应更多的PLD公司的器件;3. 适应更多的不同封装的FPGA和CPLD器件。系统板面主要部件及其使用方法说明如下(请参看相应的实验板板面和附图1-1A)。 附表1-1 在线编程坐各引脚与不同PLD公司器件编程下载接口说明 PLD公司 LATTICE ALTERA/ATMEL XILINX VANTIS 编程座 引脚 IspLSI CPLD FPGA CPLD FPGA CPLD TCK (1) SCLK TCK DCLK TCK CCLK TCK TDO (3) MODE TDO CONF_DONE TDO DONE TMS TMS (5) ISPEN TMS nCONFIG TMS /PROGRAM ENABLE nSTA (7) SDO nSTATUS TDO TDI (9) SDI TDI DATA0 TDI DIN TDI SEL0 GND VCC* VCC* GND GND VCC* SEL1 GND VCC* VCC* VCC* VCC* GND 以下是对GW48系统主板功能块的注释,但请注意,有的功能块仅GW48-GK获GW48-PK系统存在: (1) SW9 :按动该键能使实验板产生12种不同的实验电路结构。这些结构如第二节的13 张实验电路结构图所示。例如选择了“NO.3”图,须按动系统板上的SW9键,直至数码管SWG9显示“3”,于是系统即进入了NO.3 图所示的实验电路结构。 (2) B2 :这是一块插于主系统板上的目标芯片适配座。对于不同的目标芯片可配不同的适配座。可用的目标芯片包括目前 附图1-1A GW48-CK实验开发系统的板面结构图 世界上最大的六家FPGA/CPLD厂商几乎所有CPLD、FPGA和所有ispPAC等模拟EDA器件 。第三节的表中已列出多种芯片对系统板引脚的对应关系,以利在实验时经常查用。 (3) J3B/J3A:如果仅是作为教学实验之用,系统板上的目标芯片适配座无须拔下,但如果要进行应用系统开发、产品开发、电子设计竞赛等开发实践活动,在系统板上完成初步仿真设计后,就有必要将连有目标芯片的适配座拔下插在自己的应用系统上(如GWDVP板)进行调试测试。为了避免由于需要更新设计程序和编程下载而反复插拔目标芯片适配座,GW48系统设置了一对在线编程下载接口座:J3A和J3B。此接口插座可适用于不同的FPGA/CPLD(注意,1、此接口仅适用于5V工作电源的FPGA和CPLD;2、5V工作电源必须由被下载系统提供)的配置和编程下载。 对于低压FPGA/CPLD,(如EP1K30/50/100、EPF10K30E等,都是2.5V器件),下载接口座必须是另一座:ByteBlasterMV。注意,对于GW48-GK/PK,只有一个下载座:ByteBlasterMV,是通用的。 (4)混合工作电压使用:对于低压FPGA/CPLD目标器件,在GW48系统上的设计方法与使用方法完全与5V器件一致,只是要对主板的跳线作一选择(对GW48-GK/PK系统不用跳线): JVCC/VS2:跳线JVCC(GW48—GK/PK型标为“VS2”)对芯片I/O电压3.3V(VCCIO)或5V(VCC)作选择,对5V器件,必须选“5.0V”。例如,若系统上插的目标器件是EP1K30/50/100或EPF10K30E/50E等,要求将主板上的跳线座“JVCC”短路帽插向“3.3V”一端;将跳线座“JV2”短路帽插向“+2.5V”一端(如果是5V器件,跳线应插向“5.0V”)。 (5)并行下载口 :此接口通过下载线与微机的打印机口相连。来自PC机的下载控制信号和CPLD/FPGA的目标码将通过此口,完成对目标芯片的编程下载。编程电路模块能自动识别不同的CPLD/FPGA芯片,并作出相应的下载适配操作。 (6)键1~键8 :为实验信号控制键,此8个键受“多任务重配置”电路控制,它在每一张电路图中的功能及其与主系统的连接方式随SW9的模式选择而变,使用中需参照第二节中的电路图。 (7)键9~键12 :实验信号控制键(仅GW48—GK/PK型含此键)此4个键不受“多任务重配置”电路控制,使用方法参考“实验电路结构 NO.5”。 (8) 数码管1~8/发光管D1~D16 :也受“多任务重配置”电路控制,它们的连线形式也需参照第二节的电路图。 (9) 数码管9~14/发光管D17~D22 :不受“多任务重配置”电路控制(仅GW48—GK/PK型含此发光管),它们的连线形式和使用方法参考“实验电路结构 NO.5”。 (10)“时钟频率选择”P1A/JP1B/JP1C :为时钟频率选择模块。通过短路帽的不同接插方式,使目标芯片获得不同的时钟频率信号。对于“CLOCK0”JP1C,同时只能插一个短路帽,以便选择输向“CLOCK0”的一种频率: 信号频率范围: 1Hz – 50MHz(对GW48-CK系统) 信号频率范围: 0.5Hz – 50MHz(对GW48-GK系统) 信号频率范围: 0.5Hz – 100MHz(对GW48-PK系统), 由于CLOCK0可选的频率比较多,所以比较适合于目标芯片对信号频率或周期测量等设计项目的信号输入端。JP1B分三个频率源组,即如系统板所示的“高频组”、“中频组”和“低频组”。它们分别对应三组时钟输入端。例如,将三个短路帽分别插于JP1B座的2Hz、1024Hz和12MHz;而另三个短路帽分别插于JP1A座的CLOCK4、CLOCK7和CLOCK8,这时,输向目标芯片的三个引脚:CLOCK4、CLOCK7和CLOCK8分别获得上述三个信号频率。需要特别注意的是,每一组频率源及其对应时钟输入端,分别只能插一个短路帽。也就是说,通过JP1A/B的组合频率选择,最多只能提供三个时钟频率。 注意,对于GW48-GK/PK系统,时钟选择比较简单:每一频率组仅接一个频率输入口,如低频端的4个频率通过短路帽,可选的时钟输入口仅为CLOCK2,因此对于GW48-GK/PK,总共只有4个时钟可同时输入FPGA:CLOCK0、CLOCK2、CLOCK5、CLOCK9。 (11)扬声器S1:目标芯片的声讯输出,与目标芯片的“SPEAKER”端相接,即PIO50。通过此口可以进行奏乐或了解信号的频率。 (12) PS/2接口:通过此接口,可以将PC机的键盘和/或鼠标与GW48系统的目标芯片相连,从而完成PS/2通信与控制方面的接口实验,GW48-GK/PK含另一PS/2接口,参见实验电路结构 NO.5。 (13)VGA视频接口:通过它可完成目标芯片对VGA显示器的控制。 (14) 单片机接口器件:它与目标板的连接方式也已标于主系统板上:连接方式可参见附图2-13。 注意1,对于GW48-GK/PK系统,实验板左侧有一开关,向上拨,将RS232通信口直接与FPGA的PIO31和PIO30相接;向下拨则与89C51单片机的P30和P31端口相接。于是通过此开关可以进行不同的通信实验,详细连接方式可参见附图2-13。平时此开关向下打,不要影响FPGA的工作。 注意2,由附图2-13可知,单片机89C51的P3和P1口是与FPGA的PIO66-PIO79相接的,而这些端口又与6数码管扫描显示电路连在一起的,所以当要进行6数码管扫描显示实验时,必须拔去右侧的单片机,并安实验电路结构 NO.5,将拨码开关3,拨为使能,这时LCD停止工作。 (15) RS-232串行通讯接口:此接口电路是为单片机与PC机通讯准备的,由此可以使PC机、单片机、FPGA/CPLD三者实现双向通信。当目标板上FPGA/CPLD器件需要直接与PC机进行串行通讯时,可参见附图2-13,和实验电路结构图NO.5,将实验板右侧的开关向上打“TO FPGA”,从而使目标芯片的PIO31和PIO30与RS232口相接,即使RS232的通信接口直接与目标器件FPGA的PIO30/PIO31相接。而当需要使PC机的RS232串行接口与单片机的P3.0和P3.1口相接时,则应将开关向下打“TO MCU”既可(平时不用时也应保持在个位置)。 (16) “AOUT” D/A转换 :利用此电路模块(实验板左下侧),可以完成FPGA/CPLD目标芯片与D/A转换器的接口实验或相应的开发。它们之间的连接方式可参阅“实验电路结构 NO.5” :D/A的模拟信号的输出接口是“AOUT”,示波器可挂接左下角的两个连接端。当使能拨码开关8:“滤波1”时,D/A的模拟输出将获得不同程度的滤波效果 。 注意,进行D/A接口实验时,需打开左侧第2个开关,获得+/-12伏电源,实验结束后关上此电源。 (17) “AIN0”/“AIN1”:外界模拟信号可以分别通过系统板左下侧的两个输入端“AIN0”和“AIN1”进入A/D转换器ADC0809的输入通道IN0和IN1,ADC0809与目标芯片直接相连。通过适当设计,目标芯片可以完成对ADC0809的工作方式确定、输入端口选择、数据采集与处理等所有控制工作,并可通过系统板提供的译码显示电路,将测得的结果显示出来。此项实验首先需参阅第二节的“实验电路结构NO.5”有关0809与目标芯片的接口方式,同时了解系统板上的接插方法以及有关0809工作时序和引脚信号功能方面的 资料 新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单 。 注意:不用0809时,需将左下角的拨码开关的“A/D使能”和“转换结束”打为禁止:向上拨,以避免与其他电路冲突。 ADC0809 A/D转换实验接插方法(如实验电路结构 NO.5图所示): 1. 左下角拨码开关的“A/D使能”和“转换结束”打为使能:向下拨,即将ENABLE(9)与PIO35相接;若向上拨则禁止,即则使ENABLE(9)(0,表示禁止0809工作,使它的所有输出端为高阻态。 2.左下角拨码开关的“转换结束”使能,则使EOC(7)(PIO36,由此可使目标芯片对ADC0809的转换状态进行测控。 (18) VR1/“AIN1”:VR1电位器,通过它可以产生0V~+5V 幅度可调的电压。其输入口是0809的IN1(与外接口AIN1相连,但当AIN1插入外输入插头时,VR1将与IN1自动断开)。若利用VR1产生被测电压,则需使0809的第25脚置高电平,即选择IN1通道,参考“实验电路结构NO.5”。 (19) AIN0的特殊用法 :系统板上设置了一个比较器电路,主要以LM311组成。若与D/A电路相结合,可以将目标器件设计成逐次比较型A/D变换器的控制器件参考“实验电路结构NO.5”。 (20) 系统复位键:此键是系统板上负责监控的微处理器的复位控制键,同时也与接口单片机的复位端相连。因此兼作单片机的复位键。 (21) 下载控制开关 :在系统板的左侧第3个开关。当需要对实验板上的目标芯片下载时必须将开关向上打(即“DLOAD”);而当向下打(LOCK)时,将关闭下载口,这时可以将下载并行线拔下而作它用(这时已经下载进FPGA的文件不会由于下载口线的电平变动而丢失);例如拔下的25芯下载线可以与GWAK30+适配板上的并行接口相接,以完成类似逻辑分析仪方面的实验。 (22)跳线座SPS :短接“T_F”可以使用在系统频率计。频率输入端在主板右侧标有“频率计”处。模式选择为“A”。短接“PIO48”时,信号PIO48可用,如实验电路结构图NO.1中的PIO48。平时应该短路“PIO48” (23) 目标芯片万能适配座CON1/2 :在目标板的下方有两条80个插针插座(GW48-CK系统),其连接信号如附图1-1B所示,此图为用户对此实验开发系统作二次开发提供了条件。此二座的位置设置方式和各端口的信号定义方式与综合电子设计竞赛开发板GWDVP-B完全兼容!!! 对于GW48-GK/PK系统,此适配座在原来的基础上增加了20个插针,功能大为增强。增加的20插针信号与目标芯片的连接方式可参考“实验电路结构NO.5”和附图2-13。 (24)拨码开关 :拨码开关的详细用法可参考实验电路结构 NO.5图和附图2-13。 (25)ispPAC下载板 :对于GW48-GK系统,其右上角有一块ispPAC模拟EDA器件下载板,可用于模拟EDA实验中对ispPAC10/20/80等器件编程下载用,详细方法请看光盘中《ENA技术实用教程》配套教学软件实验演示部分:“模拟EDA实验演示”的POWER POINT。 (26)拨8X8数码点阵 :在右上角的模拟EDA器件下载板上还附有一块数码点阵显示块,是通用供阳方式,需要16根接插线和两根电源线连接。详细方法请看“实验演示”的POWER POINT。 (27)使用举例: 若通过键SW9选中了“实验电路结构图NO.1”,这时的GW48系统板所具有的接口方式变为:FPGA/CPLD端口PI/O31~28、27~24、23~20和19~16 ,共4组4位二进制I/O端口分别通过一个全译码型的7段译码器输向系统板的7段数码显示器。这样,如果有数据从上述任一组四位输出,就能在数码显示器上显示出相应的数值,其数值对应范围为: FPGA/CPLD输出 0000 0001 0010 … 1100 1101 1110 1111 数 码 管 显 示 0 1 2 … C D E F 端口I/O32~39分别与8个发光二极管D8~D1相连,可作输出显示,高电平亮。还可分别通过键8和键7,发出高低电平输出信号进入端口I/049和48 ;键控输出的高低电平由键前方的发光二极管D16和D15显示,高电平输出为亮。此外,可通过按动键4至键1,分别向FPGA/CPLD的PIO0~PIO15输入4位16进制码。每按一次键将递增1,其序列为1,2,…9,A,…F。注意,对于不同的目标芯片,其引脚的I/O标号数一般是同GW48系统接口电路的“PIO”标号是一致的(这就是引脚标准化),但具体引脚号是不同的,而在逻辑设计中引脚的锁定数必须是该芯片的具体的引脚号。具体对应情况需要参考第3节的引脚对照表。 第二节 实验电路结构图 1.实验电路信号资源符号图说明 结合附图2-1,以下对实验电路结构图中出现的信号资源符号功能作出一些说明: (1)附图2-1a是16进制7段全译码器,它有7位输出,分别接7段数码管的7个显示输入端:a、b、c、d、e、f和g;它的输入端为D、C、B、A,D为最高位,A为最低位。例如,若所标输入的口线为PIO19~16,表示PIO19接D、18接C、17接B、16接A。 (2)附图2-1b是高低电平发生器,每按键一次,输出电平由高到低、或由低到高变化一次,且输出为高电平时,所按键对应的发光管变亮,反之不亮。 (3)附图2-1c是16进制码(8421码)发生器,由对应的键控制输出4位2进制构成的1位16进制码,数的范围是0000~1111,即^H0至^HF。每按键一次,输出递增1,输出进入目标芯片的4位2进制数将显示在该键对应的数码管上。 (4)直接与7段数码管相连的连接方式的设置是为了便于对7段显示译码器的设计学习。以图NO.2为例,如图所标“PIO46-PIO40接g、f、e、d、c、b、a”表示PIO46、PIO45..PIO40分别与数码管的7段输入g、f、e、d、c、b、a相接。 附图2-1 实验电路信号资源符号图 (5)附图2-1d是单次脉冲发生器。每按一次键,输出一个脉冲,与此键对应的发光管也会闪亮一次,时间20ms。 (6)附图2-1e是琴键式信号发生器,当按下键时,输出为高电平,对应的发光管发亮;当松开键时,输出为高电平,此键的功能可用于手动控制脉冲的宽度。具有琴键式信号发生器的实验结构图是NO.3。 2. 各实验电路结构图特点与适用范围简述 (1)结构图NO.0:目标芯片的PIO19至PIO44共8组4位2进制码输出,经外部的7段译码器可显示于实验系统上的8个数码管。键1和键2可分别输出2个四位2进制码。一方面这四位码输入目标芯片的PIO11~PIO8和PIO15~PIO12,另一方面,可以观察发光管D1至D8来了解输入的数值。例如,当键1控制输入PIO11~PIO8的数为^HA时,则发光管D4和D2亮,D3和D1灭。电路的键8至键3分别控制一个高低电平信号发生器向目标芯片的PIO7至PIO2输入高电平或低电平,扬声器接在“SPEAKER”上,具体接在哪一引脚要看目标芯片的类型,这需要查第3节的引脚对照表。如目标芯片为FLEX10K10,则扬声器接在“3”引脚上。目标芯片的时时钟输入未在图上标出,也需查阅第3节的引脚对照表。例如,目标芯片为XC95108,则输入此芯片的时钟信号有CLOCK0至CLOCK10,共11个可选的输入端,对应的引脚为65至80。具体的输入频率,可参考主板频率选择模块。此电路可用于设计频率计,周期计,计数器等等。 (2)结构图NO.1:适用于作加法器、减法器、比较器或乘法器等。例如,加法器设计,可利用键4和键3输入8 位加数;键2和键1输入8位被加数,输入的加数和被加数将显示于键对应的数码管4-1,相加的和显示于数码管6和5;可令键8控制此加法器的最低位进位。 (3)结构图NO.2:可用于作VGA视频接口逻辑设计,或使用数码管8至数码管5共4个数码管作7段显示译码方面的实验;而数码管4至数码管1,4个数码管可作译码后显示,键1和键2可输入高低电平。 (4)结构图NO.3:特点是有8个琴键式键控发生器,可用于设计八音琴等电路系统。也可以产生时间长度可控的单次脉冲。该电路结构同结构图NO.0一样,有8个译码输出显示的数码管,以显示目标芯片的32位输出信号,且8个发光管也能显示目标器件的8位输出信号。 (5)结构图NO.4:适合于设计移位寄存器、环形计数器等。电路特点是,当在所设计的逻辑中有串行2进制数从PIO10输出时,若利用键7作为串行输出时钟信号,则PIO10的串行输出数码可以在发光管D8至D1上逐位显示出来,这能很直观地看到串出的数值。 (6)结构图NO.5:此电路结构比较复杂,有较强的功能,主要用于目标器件与外界电路的接口设计实验。该电路主要含以9大模块: 1.普通内部逻辑设计模块。在图的左下角。此模块与以上几个电路使用方法相同,例如同结构图NO.3的唯一区别是8个键控信号不再是琴键式电平输出,而是高低电平方式向目标芯片输入(即乒乓开关)。此电路结构可完成许多常规的实验项目。 2.RAM/ROM接口。在图左上角,此接口对应于主板上,有2个32脚的DIP座,在上面可以插RAM,也可插ROM(仅GW48-GK/PK系统包含此接口)例如: RAM:628128;ROM:27C010、27C020、27C040、27C080、29C010、29C020、29C040等。 此32脚座的各引脚与目标器件的连接方式示于图上,是用标准引脚名标注的,如PIO48(第1脚)、PIO10(第2脚)等等。注意,RAM/ROM的使能由拨码开关“1”控制。 对于不同的RAM或ROM,其各引脚的功能定义不尽一致,即,不一定兼容,因此在使用前应该查阅相关的资料,但在结构图的上方也列出了部分引脚情况,以资参考。 3.VGA视频接口。在图右上角,它与目标器件有5个连接信号:PIO40、41、42、43、44,通过查表(第3节的引脚对照表),可的对应于EPF10K20-144或EP1K30/50-144的5个引脚号分别是:87、88、89、90、91。 4.PS/2键盘接口。在图右上侧。它与目标器件有2个连接信号:PIO45、46。 5.A/D转换接口。在图左侧中。图中给出了ADC0809与目标器件连接的电路图。使用注意事项可参照上节。有关FPGA/CPLD与ADC0809接口方面的实验示例在本实验讲义中已经给出(实验12)。 6.D/A转换接口。在图右下侧。图中给出了DAC0832与目标器件连接的电路图。使用注意事项可参照上节。有关FPGA/CPLD与0832接口方面的实验示例在本实验讲义中已经给出(实验16)。 7.LM311接口。注意,此接口电路包含在以上的D/A接口电路中,可用于完成使用DAC0832与比较器LM311共同实现A/D转换的控制实验。比较器的输出可通过主板左下侧的跳线选择“比较器”,使之与目标器件的PIO37相连。以便用目标器件接收311的输出信号。 注意,有关D/A和311方面的实验都必须打开+/-12V电压源,实验结束后关闭此电源。 8.单片机接口。根据此图和附图2-13,给出了单片机与目标器及LCD显示屏的连接电路图。 9.RS232通信接口。 注意,结构图NO.5中并不是所有电路模块都可以同时使用,这是因为各模块与目标器件的IO接口有重合。仔细观察可以发现: 1.当使用RAM/ROM时,数码管3、4、5、6、7、8共6各数码管不能同时使用,这时,如果有必要使用更多的显示,必须使用以下介绍的扫描显示电路。 但RAM/ROM可以与D/A转换同时使用,尽管他们的数据口(PIO24、25、26、27、28、29、30、31)是重合的。这时如果希望将RAM/ROM中的数据输入D/A器件中,可设定目标器件的PIO24、25、26、27、28、29、30、31端口为高阻态;而如果希望用目标器件FPGA直接控制D/A器件,可通过拨码开关禁止RAM/ROM数据口。 RAM/ROM能与VGA同时使用,但不能与PS/2同时使用,这时可以使用以下介绍的PS/2接口。 2. A/D不能与RAM/ROM同时使用,由于他们有部分端口重合,若使用RAM/ROM,必须禁止ADC0809,而当使用ADC0809时,应该禁止RAM/ROM,如果希望A/D和RAM/ROM同时使用以实现诸如高速采样方面的功能,必须使用含有高速A/D器件的适配板,如GWAK30+等型号的适配板。 3. RAM/ROM不能与311同时使用,因为在端口PIO37上,两者重合。 (7)结构图NO.6:此电路与NO.2相似,但增加了两个4位2进制数发生器,数值分别输入目标芯片的PIO7~PIO4和PIO3~PIO0。例如,当按键2时,输入PIO7~PIO4的数值将显示于对应的数码管2,以便了解输入的数值。 (8)结构图NO.7:此电路适合于设计时钟、定时器、秒表等。因为可利用键8和键5分别控制时钟的清零和设置时间的使能;利用键7、5和1进行时、分、秒的设置。 (9)结构图NO.8:此电路适用于作并进/串出或串进/并出等工作方式的寄存器、序列检测器、密码锁等逻辑设计。它的特点是利用键2、键1能序置8位2进制数,而键6能发出串行输入脉冲,每按键一次,即发一个单脉冲,则此8位序置数的高位在前,向PIO10串行输入一位,同时能从D8至D1的发光管上看到串形左移的数据,十分形象直观。 (10)结构图NO.9:若欲验证交通灯控制等类似的逻辑电路,可选此电路结构。 (11)当系统上的“模式指示”数码管显示“A”时,系统将变成一台频率计,数码管8将显示“F”,“数码6”至“数码1”显示频率值,最低位单位是Hz。测频输入端为系统板右下侧的插座。 (13)实验电路结构图COM:此图的所有电路仅GW48-GK/PK系统拥有,即以上所述的所有电路结构(除RAM/ROM模块),包括“实验电路结构NO.0”至“实验电路结构NO.B”共11套电路结构模式为GW48-CK和GW48-GK/PK两种系统共同拥有(兼容),我们把他们称为通用电路结构。在原来的11套电路结构模式中的每一套结构图中增加附图2-13所示的“实验电路结构图COM”。 例如,在GW48-GK系统中,当“模式键”选择“5”时,电路结构将进入附图2-7所示的实验电路结构图NO.5外,还应该加入“实验电路结构图COM”。这样以来,在每一电路模式中就能比原来实现更多的实验项目。 “实验电路结构图COM”包含的电路模块有: 1. PS/2键盘接口。注意,在通用电路结构中,还有一个用于鼠标的PS/2接口。 2. 4键直接输入接口。原来的键1至键8是由“多任务重配置”电路结构控制的,所以键的输入信号没有抖动问题,不需要在目标芯片的电路设计中加入消抖动电路,这样,能简化设计,迅速入门。所以设计者如果希望完成键的消抖动电路设计,可利用此图的键9至键12。当然也可以利用此4键完成其他方面的设计。注意,此4键为上拉键,按下后为低电平。 3. I平方C串行总线存储器件接口。该接口器件用24C01担任,这是一种十分常用的串行E平方ROM器件。 4. USB接口。此接口是SLAVE接口。 5. 扫描显示电路。这是一个6数码管(共阴数码管)的扫描显示电路。段信号为7个数码段加一个小数点段,共8位,分别由PIO60、61、62、63、64、65、66、67通过同相驱动后输入;而位信号由外部的6个反相驱动器驱动后输入数码管的共阴端。 6. 实验电路结构图COM”中各标准信号(PIOX)对应的器件的引脚名,必须查附表1-2,而不是查第3节的通用的引脚对照表。附表1-2仅适用于GW48-GK/PK系统: 7 发光管插线接口。在主板的右上方有6个发光管(共阳连接),以供必要时用接插线与目标器件连接显示。由于显示控制信号的频率比较低,所以目标器件可以直接通过连接线向此发光管输出。 实验电路结构图 附图2-2 实验电路结构图NO.0 附图2-3 实验电路结构图NO.1 附图2-4 实验电路结构图NO.2 附图2-5 实验电路结构图NO.3 附图2-6 实验电路结构图NO.4 附图2-8 实验电路结构图NO.6 附图2-7 实验电路结构图NO.5 附图2-9 实验电路结构图NO.7 附图2-10 实验电路结构图NO.8 附图2-13 实验电路结构图COM 附图2-11 实验电路结构图NO.9 第三节 GW48CK/GK/PK 系统(万能接插口与结构图信号/与芯片引脚对照表 结构图上的信号名 ispLSI 1032E -PLCC84 ispLSI1048E -PQFP128 FLEX EPF10K10 -PLCC84 XCS05/XCS10 -PLCC84 EPM7128S-PL84 EPM7160S-PL84 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 PIO0 26 I/O0 21 I/O0 5 I/O0 3 I/O0 4 I/O0 PIO1 27 I/O1 22 I/O1 6 I/O1 4 I/O1 5 I/O1 PIO2 28 I/O2 23 I/O2 7 I/O2 5 I/O2 6 I/O2 PIO3 29 I/O3 24 I/O3 8 I/O3 6 I/O3 8 I/O3 PIO4 30 I/O4 25 I/O4 9 I/O4 7 I/O4 9 I/O4 PIO5 31 I/O5 26 I/O5 10 I/O5 8 I/O5 10 I/O5 PIO6 32 I/O6 27 I/O6 11 I/O6 9 I/O6 11 I/O6 PIO7 33 I/O7 28 I/O7 16 I/O7 10 I/O7 12 I/O7 PIO8 34 I/O8 29 I/O8 17 I/O8 13 I/O8 15 I/O8 PIO9 35 I/O9 30 I/O9 18 I/O9 14 I/O9 16 I/O9 PIO10 36 I/O10 31 I/O10 19 I/O10 15 I/O10 17 I/O10 PIO11 37 I/O11 32 I/O11 21 I/O11 16 I/O11 18 I/O11 PIO12 38 I/O12 34 I/O12 22 I/O12 17 I/O12 20 I/O12 PIO13 39 I/O13 35 I/O13 23 I/O13 18 I/O13 21 I/O13 PIO14 40 I/O14 36 I/O14 24 I/O14 19 I/O14 22 I/O14 PIO15 41 I/O15 37 I/O15 25 I/O15 20 I/O15 24 I/O15 PIO16 45 I/O16 38 I/O16 27 I/O16 23 I/O16 25 I/O16 PIO17 46 I/O17 39 I/O17 28 I/O17 24 I/O17 27 I/O17 PIO18 47 I/O18 40 I/O18 29 I/O18 25 I/O18 28 I/O18 PIO19 48 I/O19 41 I/O19 30 I/O19 26 I/O19 29 I/O19 PIO20 49 I/O20 42 I/O20 35 I/O20 27 I/O20 30 I/O20 PIO21 50 I/O21 43 I/O21 36 I/O21 28 I/O21 31 I/O21 PIO22 51 I/O22 44 I/O22 37 I/O22 29 I/O22 33 I/O22 PIO23 52 I/O23 45 I/O23 38 I/O23 35 I/O23 34 I/O23 PIO24 53 I/O24 52 I/O24 39 I/O24 36 I/O24 35 I/O24 PIO25 54 I/O25 53 I/O25 47 I/O25 37 I/O25 36 I/O25 PIO26 55 I/O26 54 I/O26 48 I/O26 38 I/O26 37 I/O26 PIO27 56 I/O27 55 I/O27 49 I/O27 39 I/O27 39 I/O27 PIO28 57 I/O28 56 I/O28 50 I/O28 40 I/O28 40 I/O28 PIO29 58 I/O29 57 I/O29 51 I/O29 41 I/O29 41 I/O29 PIO30 59 I/O30 58 I/O30 52 I/O30 44 I/O30 44 I/O30 PIO31 60 I/O31 59 I/O31 53 I/O31 45 I/O31 45 I/O31 PIO32 68 I/O32 60 I/O32 54 I/O32 46 I/O32 46 I/O32 PIO33 69 I/O33 61 I/O33 58 I/O33 47 I/O33 48 I/O33 PIO34 70 I/O34 62 I/O34 59 I/O34 48 I/O34 49 I/O34 PIO35 71 I/O35 63 I/O35 60 I/O35 49 I/O35 50 I/O35 PIO36 72 I/O36 66 I/O36 61 I/O36 50 I/O36 51 I/O36 PIO37 73 I/O37 67 I/O37 62 I/O37 51 I/O37 52 I/O37 PIO38 74 I/O38 68 I/O38 64 I/O38 56 I/O38 54 I/O38 PIO39 75 I/O39 69 I/O39 65 I/O39 57 I/O39 55 I/O39 PIO40 76 I/O40 70 I/O40 66 I/O40 58 I/O40 56 I/O40 PIO41 77 I/O41 71 I/O41 67 I/O41 59 I/O41 57 I/O41 PIO42 78 I/O42 72 I/O42 70 I/O42 60 I/O42 58 I/O42 PIO43 79 I/O43 73 I/O43 71 I/O43 61 I/O43 60 I/O43 PIO44 80 I/O44 74 I/O44 72 I/O44 62 I/O44 61 I/O44 PIO45 81 I/O45 75 I/O45 73 I/O45 65 I/O45 63 I/O45 PIO46 82 I/O46 76 I/O46 78 I/O46 66 I/O46 64 I/O46 PIO47 83 I/O47 77 I/O47 79 I/O47 67 I/O47 65 I/O47 PIO48 3 I/O48 85 I/O48 80 I/O48 68 I/O48 67 I/O48 PIO49 4 I/O49 86 I/O49 81 I/O49 69 I/O49 68 I/O49 SPKER 5 I/O50 87 I/O50 3 CLRn 70 I/O50 81 I/O50 CLOCK0 6 I/O51 88 I/O51 2 IN1 72 I/O52 结构图上的信号名 ispLSI 1032E -PLCC84 ispLSI1048E -PLCC84 FLEX EPF10K10 -PLCC84 XCS05/XCS10 -PLCC84 EPM7128S-PL84 EPM7160S-PL84 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 CLOCK0 6 I/O51 88 I/O51 2 IN1 72 I/O52 2 IN4 CLOCK1 66 Y1 83 Y1 42 IN2 77 I/O53 69 I/O50 CLOCK2 7 I/O52 89 I/O52 43 GCK2 78 I/O54 70 I/O51 CLOCK3 8 I/O53 90 I/O53 44 IN3 79 I/O55 73 I/O52 CLOCK4 9 I/O54 91 I/O54 80 I/O56 74 I/O53 CLOCK5 63 Y2 80 Y2 83 OE 81 I/O57 75 I/O54 CLOCK6 10 I/O55 92 I/O55 82 I/O58 76 I/O55 CLOCK7 11 I/O56 93 I/O56 79 I/O57 CLOCK8 62 Y3 79 Y3 84 IN4 83 I/O59 80 I/O58 CLOCK9 12 I/O57 94 I/O57 1 GCK1 84 I/O60 83 IN1 CLOCK10 13 I/O58 95 I/O58 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 结构图上的信号名 XCS30 144-PIN TQFP XC95108 XC9572 -PLCC84 EP1K100 EPF10K30E/50E 208-PIN P/RQFP FLEX10K20 EP1K30/50 144-PIN TQFP ispLSI 3256/A -PQFP160 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 PIO0 138 I/O0 1 I/O0 7 I/O 8 I/O0 2 I/O0 PIO1 139 I/O1 2 I/O1 8 I/O 9 I/O1 3 I/O1 PIO2 140 I/O2 3 I/O2 9 I/O 10 I/O2 4 I/O2 PIO3 141 I/O3 4 I/O3 11 I/O 12 I/O3 5 I/O3 PIO4 142 I/O4 5 I/O4 12 I/O 13 I/O4 6 I/O4 PIO5 3 I/O5 6 I/O5 13 I/O 17 I/O5 7 I/O5 PIO6 4 I/O6 7 I/O6 14 I/O 18 I/O6 8 I/O6 PIO7 5 I/O7 9 I/O7 15 I/O 19 I/O7 9 I/O7 PIO8 9 I/O8 10 I/O8 17 I/O 20 I/O8 11 I/O8 PIO9 10 I/O9 11 I/O9 18 I/O 21 I/O9 13 I/O9 PIO10 12 I/O10 12 I/O10 24 I/O 22 I/O10 14 I/O10 PIO11 13 I/O11 13 I/O11 25 I/O 23 I/O11 15 I/O11 PIO12 14 I/O12 14 I/O12 26 I/O 26 I/O12 16 I/O12 PIO13 15 I/O13 15 I/O13 27 I/O 27 I/O13 17 I/O13 PIO14 16 I/O14 17 I/O14 28 I/O 28 I/O14 25 I/O14 PIO15 19 I/O15 18 I/O15 29 I/O 29 I/O15 26 I/O15 PIO16 20 I/O16 19 I/O16 30 I/O 30 I/O16 28 I/O16 PIO17 21 I/O17 20 I/O17 31 I/O 31 I/O17 29 I/O17 PIO18 22 I/O18 21 I/O18 36 I/O 32 I/O18 30 I/O18 PIO19 23 I/O19 23 I/O19 37 I/O 33 I/O19 32 I/O19 PIO20 24 I/O20 24 I/O20 38 I/O 36 I/O20 33 I/O20 PIO21 25 I/O21 25 I/O21 39 I/O 37 I/O21 34 I/O21 PIO22 26 I/O22 26 I/O22 40 I/O 38 I/O22 35 I/O22 PIO23 28 I/O23 31 I/O23 41 I/O 39 I/O23 36 I/O23 PIO24 29 I/O24 32 I/O24 44 I/O 41 I/O24 37 I/O24 PIO25 30 I/O25 33 I/O25 45 I/O 42 I/O25 38 I/O25 PIO26 75 I/O26 34 I/O26 113 I/O 65 I/O26 82 I/O26 PIO27 77 I/O27 35 I/O27 114 I/O 67 I/O27 83 I/O27 PIO28 78 I/O28 36 I/O28 115 I/O 68 I/O28 84 I/O28 PIO29 79 I/O29 37 I/O29 116 I/O 69 I/O29 85 I/O29 PIO30 80 I/O30 39 I/O30 119 I/O 70 I/O30 86 I/O30 PIO31 82 I/O31 40 I/O31 120 I/O 72 I/O31 87 I/O31 PIO32 83 I/O32 41 I/O32 121 I/O 73 I/O32 88 I/O32 PIO33 84 I/O33 43 I/O33 122 I/O 78 I/O33 89 I/O33 结构图上的信号名 XCS30 144-PIN TQFP XC95108 XC9572 -PLCC84 EP1K100 EPF10K30E/50E 208-PIN P/RQFP FLEX10K20 EP1K30/50 144-PIN TQFP ispLSI 3256/A -PQFP160 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 引脚号 引脚名称 PIO34 85 I/O34 44 I/O34 125 I/O 79 I/O34 90 I/O34 PIO35 86 I/O35 45 I/O35 126 I/O 80 I/O35 92 I/O35 PIO36 87 I/O36 46 I/O36 127 I/O 81 I/O36 93 I/O36 PIO37 88 I/O37 47 I/O37 128 I/O 82 I/O37 94 I/O37 PIO38 89 I/O38 48 I/O38 131 I/O 83 I/O38 95 I/O38 PIO39 92 I/O39 50 I/O39 132 I/O 86 I/O39 96 I/O39 PIO40 93 I/O40 51 I/O40 133 I/O 87 I/O40 105 I/O40 PIO41 94 I/O41 52 I/O41 134 I/O 88 I/O41 106 I/O41 PIO42 95 I/O42 53 I/O42 135 I/O 89 I/O42 108 I/O42 PIO43 96 I/O43 54 I/O43 136 I/O 90 I/O43 109 I/O43 PIO44 97 I/O44 55 I/O44 139 I/O 91 I/O44 110 I/O44 PIO45 98 I/O45 56 I/O45 140 I/O 92 I/O45 112 I/O45 PIO46 99 I/O46 57 I/O46 141 I/O 95 I/O46 113 I/O46 PIO47 101 I/O47 58 I/O47 142 I/O 96 I/O47 114 I/O47 PIO48 102 I/O48 61 I/O48 143 I/O 97 I/O48 115 I/O48 PIO49 103 I/O49 62 I/O49 144 I/O 98 I/O49 116 I/O49 SPEAKER 104 I/O 63 I/O50 148 I/O 99 I/O50 117 I/O50 CLOCK0 111 65 I/O51 182 I/O 54 INPUT1 118 I/O CLOCK1 113 66 I/O52 183 I/O 55 GCLOK1 119 I/O CLOCK2 114 67 I/O53 184 I/O 124 INPUT3 120 I/O CLOCK3 106 68 I/O54 149 I/O 100 I/O51 121 I/O CLOCK4 112 69 I/O55 150 I/O 101 I/O52 103 Y2 CLOCK5 115 70 I/O56 157 I/O 102 I/O53 122 I/O CLOCK6 116 71 I/O57 170 I/O 117 I/O61 123 I/O CLOCK7 76 72 I/O58 112 I/O 118 I/O62 102 Y3 CLOCK8 117 75 I/O60 111 I/O 56 INPUT2 124 I/O CLOCK9 119 79 I/O63 104 I/O 125 GCLOK2 126 I/O CLOCK10 2 103 I/O 119 I/O63 101 Y4 注,对于GWAK30+/50+适配板的时钟引脚应该查下章的“时钟连接表1” 第二章 GWAK30+/50+适配板使用说明 附图2-1 GWAK30+/50+上高速A/D电路图 GW48-GK/PK主系统推荐的超强功能适配板是GWAK30+,结合主系统,该适配板可以完成多相设计项目,例如: 1、简单数字信号处理项目的设计;2、数字锁相环;3、数字震荡器;4、频率合成器;5、扫频信号源;6、VGA显示图象电路;7、图象处理模块;8、高速采样模块电路,如存储示波器;9、部分通信原理方面的设计实验等。 GWAK30+适配板使用注意事项: 1、该适配板上的FPGA的引脚锁定和定义方法与其他目标器件一样,都必须查 第一章第3节的引脚表,惟独不同的是,时钟输入的引必须查以下的“时钟连接表”。 2、高速A/D5510的连线情况如附图2-1所示,其模拟信号输入端有两个:一个是孔形座,另一是针形座,其中:“A_INPUT”模拟信号输入端;“A_GND”是模拟地。插座“SL”是参考电压选择座,选“SL_VCC”,表示以主板VCC电压作为参考电压;选“SL_REF”,则以外部参考电压为A/D的参考电压,而外部参考电压必须来自“REF_V”。 3、如附图2-2所示,GWAK30+板上有一74HC245,其输出端口恰好与主板上的RAM/ROM的数据口相接,是用来进行逻辑数据采集的。例如可用来设计逻辑分析仪,可利用目标器件的第100脚,即“P100”接受触发信号,当对外部逻辑信号采样时,首先使能74HC245,即使“ENABL”端短路,即使其/E(245的第19脚)与目标器件的102脚相接,并为低电平,使FPGA能控制信号采样;然后令74HC245令目标芯片的第41、42、65、67、68、69、70、72脚为高阻态或输入状态,这样一来,通过FPGA扫变主板上的RAM的地址,外部逻辑信号即可进入RAM中,采样结束后,可使第102脚为高电平,然后通过第41、42、65、67、68、69、70、72脚将RAM中的数据读出,经由适配板上的并行口传输给PC机。 必须注意,平时“ENA”座的短路帽必须接在“CLOSE”端。 4、如附图2-2所示,适配板上还有一个可供与PC机通信的并行口。此口可以利用FPGA的并行下载通信线来与PC机通信。方法是当把设计好的文件下载(配置)进FPGA后,将左侧的开关打到“LOCK”,然后拔下下载线,插到适配板的并行口上,即可进行相关的实验了。 时钟连接表1 CLK0 CLK2 CLK5 CLK9 P126 P54 P56 P124 第三章 GW48系统专用配套之GWDVP-B电子设计应用板使用说明 (其它信息请参考POWER POINT 文件GWDVPB说明.ppt) 一、GWDVP板含: (1)单片机系统:通过改变FPGA/CPLD中的逻辑结构和跳线,可使它们与ROM/RAM构成单片机总线工作系统(单片机最小系统,使用8031器件)、单片机独立工作系统(此工作方式最为灵活,如与A/D结合可构成类似于DMA的高速数据采集系统,使用89C51等器件)。 (2)显示系统:它们由8个数码显示器和8个发光管构成的串行静态显示系统。静态显示系统的优点是,显示亮度度好;显示稳定;占用单片机端口少(P3.0和P3.1---此2口都为输入方式,可复用,且竞赛项目通常无RS232通信);单片机编程方便,中断控制设计方便,编程控制简单,增加数码管的软硬件更改也十分简单;(注意,如果外接A/D,D/A系统,必须提供单独电源,不要用GWDVP系统的电源,以免显示系统干扰A/D和D/A的工作精度)。 (3)ROM/RAM系统:GWDVP板上的FPGA/CPLD和RAM/ROM可构成不同的工作方式,如:单片机最小系统存储方式、DMA方式、硬件高速计算方式、波形发生数据存储器等;又由于ROM/RAM座是与系统中的FPGA/CPLD直接相接的,所以此座可根据需要插不同型号和容量的存储器(如27C512、27E512、27C256、27C128、27C64、28C64、28E64、6264、62256等)。 (4)通用FPGA/CPLD接插系统:这是GWDVP板最具特点的结构,它由48脚双排座构成(如附图1-1B所示)、它将GWDVP系统构成了一个有机整体,其上可插含有不同型号,不同公司、不同逻辑容量和不同封装FPGA/CPLD的目标板,如ispLSI1032、ispLSI1048、ispLSI3256、EPM7128S、EPF10K10、EPF10K20、EP1K30、EPF6016、XCS10、XC95108等等,这样就不会出现逻辑资源不够用的尴尬局面了。FPGA/CPLD接插系统的物理结构、每一引脚的命名定义、其上的FPGA/CPLD目标芯片的引脚锁定查表方法,以及在系统下载方法等都与GW48系列EDA系统完全兼容,会用GW48系统即会使用GWDVP。 对GWDVP上的FPGA/CPLD下载,可通过GW48系统上的在线下载口,用配置的10芯下载线进行在系统下载,而不必拔下GWDVP上的目标芯片。 其上的FPGA/CPLD的时钟信号源由50MHz有源时钟源提供,它们确保了FPGA/CPLD优秀的高速性能的有效发挥。 (5)A/D和D/A转换系统:A/D和D/A转换系统必须由用户外接,连接端口可以是单片机的P1和P3口(参见图2),也可以直接与板上的FPGA/CPLD相接,以便提高工作速度,外界端口如图3-1所示:PIO16至PIO25、CLOCK5、CLOCK6、CLOCK7等。 适配板芯片上器件引脚查阅方法:例如,芯片是EPM7128S,图3-1所示板上接插座上的PIO17对应的芯片引脚是27脚,CLOCK6对应的是76脚(请查阅表2) (6)串行EEPROM:由93C46构成,与单片机直接相接,这是智能化仪表常用的电路结构。 (7)键控系统:GWDVP板上已安排了8个键,可按逐次查询方式编程控制(连接方式如图3-2,键盘子程序等诸多子程序可参见单片机文件GWDVP.ASM);如果要增加键,可在所给的8芯插座上插16键的插口,可按阵列扫描方式编程控制; (8)混合电压源:含3.3V 和2.5V电压,可为混合电压的FPGA使用。3.3V 和2.5V电压在接插座上的位置如附图1-1B所示。 三、GWDVP板使用注意 (1)、兼容性:开发中,GWDVP板须与GW48系统或GWDD6-C编程器配合使用,这表现在: 1、须利用GW48提供的10芯在系统下载接口和通信线进行下载; 2、GWDVP板与GW48系统上的FPGA/CPLD目标芯片板相互间完全兼容,因此可以使用GW48系统所有可配的目标芯片,所以在利用GWDVP板开发时,就没有了逻辑资源不够用的担心,也没有对使用FPGA/CPLD型号和生产厂家的限制,这正是GWDVP板的最大特点! 图3-1、GWDVP板正面示意图 3、GWDVP板的FPGA/CPLD目标芯片板上的引脚定义和使用情况与GW48-CK/ES相同,都必须参考本教程第一章第3节的列表,显然,会用GW48就会用GWDVP板。 注意:如果要使GWDVP板上的单片机与RAM/ROM连成总线工作方式,需要将板上的FPGA/CPLD某一引脚(如CLOCK5、PIO16等)与单片机的“ALE”连接,然后在GWDVPB的适配板中的CPLD/FPGA中设计一个类似于74LS373的地址锁存器及数据双向端口即可。 (2)、单片机子程序使用方法: 配附的光盘中的“GWDVPB”目录中有与GWDVP系统相配的单片机子程序文件(GWDVPA.ASM),此文件中有加、1、减法、2、乘法、3、除法、4、开方计算、5、数码显示、6、键盘控制、7、BCD码到2进制码转换、8、2进制码到BCD码转换等子程序以及设计示例等。注意,程序中单片机的堆栈设在“60H”,方法可参考“GWDVPA.ASM”。使用方法如下: 1、显示子程序:程序名“DIRR0”,使用方法见(5) 2、键盘子程序:程序名“KKEYI”,每调用一次,则对P1口上的8个见扫描检测一次,如果无按键信号,将不跳出此子程序,直到测到有按键信号为止,返回的数据在ACC中,ACC中的数与P1口的某一端口序号一样,如ACC=3,即表示,P1.3上有按键信号。 3、数码管熄灭子程序:程序名“NL0”。 4、单片机测频率子程序:程序名“PROSD”, 每调用一次,即对单片机P3.5口上的信号频率测试一次(测频范围:1Hz—500KHz),测出的频率显示在数码管上,最低一位(左第7个)的单位是Hz。 5、除法子程序:程序名“DIVD1”,即2N字节(2进制)的数除以1N字节的数,被除数字节数放在30H 单元 初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计 中;除数字节数放在31H单元中。例如N=3,则6个字节的被除数分别放在(4AH,4BH,4CH,4DH,4EH,4FH)单元中,而3个字节的除数分别放在(5DH,5EH,5FH)单元中,计算后的商放在(4DH,4EH,4FH)单元中,高位都放在左面。 6、无符号加法子程序:程序名“ADDMB”。 7、N字节乘M字节乘法子程序:程序名“MULNM”。 8、2进制码至BCD码转换子程序:程序名“HEXBCD2”。 9、快速乘法子程序:程序名“MULT3”。 10、N字节压缩BCD码至M字节2进制码转换子程序:程序名“BCDHEX1”。 11、带符号原码加法子程序:程序名“ADDS1”。 12、开方子程序:程序名“SQR1” 13、串行EEPROM93C46读数子程序:程序名“SEPRD”。16位读数方式,先将数据地址(00H-3FH)放在22H单元中,再调用子程序“LCALL SEPRD”,读出的数放在21H和20H单元中,高位在前。 14、串行EEPROM93C46写数子程序:写数顺序,先调用写允许子程序“LCALL EABLE”,再将8位地址数XXH、待写入的高8位字节和低8位字节分别放在22H、21H和20H单元中,然后调用写子程序“LCALL SEPWR”, 最后调用写禁止子程序“LCALL DISLE”。 (3)、电源:主系统电源为+5V。为提高性能,GWDVP板外接电路系统,必须单独给电。 (4)、显示:显示系统由9个74LS164构成串行静态显示电路,前8个负责8个数码管的显示;最高位的74LS164负责8个发光管的显示。此串行显示系统的数据口DATA接单片机的P3.0、CLOCK接P3.1;显示子程序名为“DIRR0”,GWDVP板反面的显示器自左至右,8个数码管和8个发光管在单片机内的显示缓冲寄存器依次为:16H、15H、14H、13H、12H、11H、10H、17H、18H,小数点的缓冲寄存器是0AH,其中某一位为1时,对应的数码管的小数点发亮,如当0AH的最低位为1时,10H对应的数码管的小数点发亮。 图3-2 (6)、键盘:板的反面有9个键,8个键与单片机的P1口接成查询电路方式,因此P1口还可作输出复用。如果8个键不够,用户可在P1口插座“P1”上并接上阵列方式的16键键盘,这时板上的8个键自动失效。 (7)、可插EEPROM 93C46:这是串行存储器,片选脚由单片机的P3.2担任,如果不用93C46,此端口可作他用,它的读写子程序可参阅程序GWDVPA.ASM。 (8)、跳线座:如图2所示,两组跳线座“SC”和“CK1”,前者选择单片机的P3.5接FPGA/CPLD的clock8或clock9端;后者选择50MHz时钟信号接FPGA/CPLD的clock2或clock4端。 (9)、显示电源选择跳线座:3针“MV17”用语8个数码显示的电源来自外部电源还是内部主系统电源。若接有A/D和D/A,对精度要求比较高的电路,建议用单独的电源为数码显示提供电源,这时可以跳线短路“OUTS”,然后外部电源接在旁边的2芯座上。但如果短路“INP”,则显示使用主系统电源。 四、GWDVP-B板示例:等精度频率计演示操作: 图 3-3 1、光盘中目录“GWDVPB”的GWDVPB.BIN文件可编程进单片机AT89C51/52中,将单片机插上后,再将光盘中的GWDVPB.POF文件用MAX+PLUSII下载到GWDVPB板上的EPM7128S芯片中去(用GW48系统或GWDD6-C,也可下载进入EPF10K10/20)。 2、加上电源后,(按复位键)可以看到数码1显示“P”。 注意电源极性! 3、自测:用所配的接插线一端接在GWDVPB板标出的“PIO16”上,此引脚为待测频率输入端口。将另一端接“PIO25”端(此为某一频率输出端) 4、按键1,应该显示“381.4697”,表明测得频率为381.4697Hz (此频率为50MHz的2的16次方分频值) ; 键1是测频键; 5、按键2,应该显示“A 50.0”,表明测得占空比为50.0 % ; 键2是测占空比键; 6、按键3,应该显示“1310.72”,表明测得脉宽为1310.72微秒 ; 键3是测脉宽键; (精度为7位有效值! ): 注意: 当出现两个小数点时,小数点标明的数是MHz单位 7、按键7,应该显示“Good 7”,表明板上的93C46工作正常,芯片没有问题,否则,将显示“bad”字样。此键是93C46测试键(如果插有93C46)。 注意: 1、GWDVPB板上的PR1接插座上标出的各端口的PIO值,应该以图3-1所示的数为准! 如“PR1”座上“GND”旁边的信号应该是“PIO25”。 2、如果要对外测频(TTL电平),应该接上地线,与外部待测系统共地。 第四章 FPGA/CPLD结构(有关内容请参阅《EDA技术实用教程》) 第五章 原理图输入设计方法(参见《EDA技术实用教程》) 第6章 VHDL设计初步 第一节 2选1多路选择器的VHDL描述 【例6-1】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s='0' ELSE b ; END ARCHITECTURE one ; 【例6-2】 【例6-4】 ENTITY mux21a IS ENTITY mux21a IS PORT ( a, b : IN BIT; PORT ( a, b : IN BIT; s : IN BIT; s : IN BIT; y : OUT BIT ); y : OUT BIT ); END ENTITY mux21a; END ENTITY mux21a; ARCHITECTURE one OF mux21a IS ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN BEGIN IF s = '0' THEN d <= a AND (NOT S) ; y <= a ; ELSE e <= b AND s ; y <= b ; y <= d OR e ; END IF; END ARCHITECTURE one ; END PROCESS; 【例6-3】 END ARCHITECTURE one ; . . . ARCHITECTURE one OF mux21a IS BEGIN y<=(a AND(NOT s)) OR (b AND s); END ARCHITECTURE one ; 图6-1 mux21a实体 图6-2 mux21a结构体 例6-1是2选1多路选择器的VHDL完整描述,即可以直接综合出实现相应功能的逻辑电路及其功能器件。图6-1是此描述对应的逻辑图或者器件图,图中,a和b分别是两个数据输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。“mux21a”是此器件的名称,这类似于“74LS138”、“CD4013”等器件的名称。电路图图6-2是例6-1综合后获得的电路,因而可以认为是多路选择器“mux21a”内部电路结构。 由例6-1可见,此电路的VHDL描述由两大部分组成: 1、由关键词ENTITY 引导,以 END ENTITY mux21a结尾的语句部分,称为实体。实体描述电路器件的外部情况及各信号端口的基本性质。图6-1可以认为是实体的图形表达。 2、由关键词ARCHITECTURE引导,以END ARCHITECTURE one结尾的语句部分,称为结构体。结构体描述电路器件的内部逻辑功能或电路结构。图6-2是此结构体的原理图表达。 在VHDL结构体中用于描述逻辑功能和电路结构的语句分为顺序语句和并行语句两部分,顺序语句的执行方式十分类似于普通软件语言的程序执行方式,都是按照语句的前后排列方式顺序执行的。而在结构体中的并行语句,无论有多少行,都是同时执行的,与语句的前后次序无关。 例6-1中的逻辑描述是用一句WHEN_ELSE结构的并行语句表达的。它的含义是,当满足条件s='0',即s为低电平时a输入端的信号传送至y ,否则,即s为高电平时,b 输入端的信号传送至y 。 也可以用其他的语句形式来描述以上相同的逻辑行为。例6-2和例6-3中的功能描述语句都是并行语句,是用布尔方程的表达式来描述的。其中的“AND”、“OR”、“NOT”分别是逻辑与、或、非的意思。 例6-4则给出了用顺序语句IF_THEN_ELSE表达的功能描述。 以上4例用不同的语句表达方式描述了相同的逻辑功能,都能被综合成图6-2的电路结构。其电路功能可以从图6-3的时序波形中看出,分别向a和b端输入两个不同信号的频率fa和fb(fa > fb),当s为高电平时,y输出fb,而当s为低电平时,y输出fa。显然,图6-3的波型证实了VHDL逻辑设计的正确性。 需要指出的是,以上各例的实体和结构体分别是以“END ENTITY xxx”和“END ARCHITECTURE xx ”语句结尾的,这是符合VHDL的IEEE STD 1076_1993版的语法要求的。若根据VHDL’87版本,IEEE STD 1076_1987的语法要求,这两条结尾语句只需写成“END ;”和“END xx”。但考虑到目前绝大多数常用的EDA工具中的VHDL综合器都兼容两种VHDL版本的语法规则,且许多最新的VHDL方面的资料,仍然使用VHDL’87版本语言规则。因此,出于实用的目的,对于以后出现的示例,不再特意指出VHDL两种版本的语法差异处。但对于不同的EDA工具,仍需根据设计程序不同的VHDL版本表述,在综合前作相应的设置。 6.1.1 VHDL语言现象说明 图6-3 mux21a功能时序波形 这里将对例6-1/2/3/4中出现的语言现象作出说明和归纳: 1、实体表达 VHDL完整的,可综合的程序结构,必须完整地表达出一片专用集成电路ASIC器件的端口结构和电路功能用,无论是一片74LS138还是一片CPU,都必须包含实体和结构体两个最基本的语言结构,这里将含有完整程序结构(包含实体和结构体)的VHDL表述称为设计实体。如前所述,实体描述的是电路器件的端口构成和信号属性,它的最简表式如下: 【例6-5】 ENTITY e_name IS PORT ( p_name : port_m data_type; . . . p_namei : port_mi data_type ); END ENTITY e_name; 或: 【例6-6】 ENTITY e_name IS PORT ( p_name : port_m data_type; . . . p_namei : port_mi data_type ); END e_name; 上下两种表式的唯一区别是IEEE93/87标准不同。前者为IEEE93标准、而后者是IEEE87,一般VHDL综合器都兼容两种不同标准。上式中ENTITY、IS、PORT和END ENTITY都是描述实体的关键词,在实体描述中必须包含这些关键词,编辑中,关键词不分大写和小写。 2、实体名 例6-5/6-6中的e_name是实体名,具体取名由设计者自定。由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来确定,如4位二进制计数器,实体名可取为counter4b;8位二进制加法器,实体名可取为adder8b等等。需要特别注意的是,一般不应用数字或中文定义实体名,也不应用与EDA工具库中已定义好的元件名作为实体名,如or2、latch等,也不能用数字带头的实体名,如74LSX。 3、PORT语句和端口信号名 描述电路的端口及其端口信号,必须用端口语句PORT()引导,并在语句结尾处加分号" ;"。例6-5/6-6中的p_name是端口信号名,也由设计者自己确定,如例7-1中的端口信号名分别是a、b、s和y。 4、端口模式 例6-5/6-6中的port_m表达端口模式,可综合的端口模式有4种,它们分别是“IN”、“OUT”、“INOUT”和“BUFFER”,用于定义端口上数据的流动方向和方式: (IN :IN定义的通道为单向只读模式, 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 数据只能通过此端口被读入实体中。 (OUT :OUT定义的通道为单向输出模式,规定数据只能通过此端口从实体向外流出,或者说可以将实体中的数据向此端口赋值。 (INOUT :INOUT定义的通道确定为输入输出双向端口,即从端口的内部看,可以对此端口进行赋值,也可以通过此端口读入外部的数据信息;而从端口的外部看,信号既可以从此端口流出,也可以向此端口输入信号,如RAM的数据端口,单片机的I/O口。在实际电路描述中,INOUT模式的正确使用还应该考虑其它因素,详细情况将在后文介绍。 (BUFFER :BUFFER的功能与INOUT类似,区别在于当需要输入数据时,只允许内部回读输出的信号,即允许反馈。如计数器的设计,可将计数器输出的计数信号回读,以作下一计数值的初值。与INOUT模式相比,BUFFER回读(输入)的信号不是由外部输入的,而是由内部产生,向外输出的信号。BUFFER的使用示例将在下章介绍。 在例6-1中,a、b、s的端口模式都定义为IN,y的端口模式定义为OUT; 5、数据类型BIT 例6-5/6-6中的data_type是数据类型名。例6-1中,端口信号a、b、s和y的数据类型都定义为BIT。 VHDL作为一种强类型语言,任何一种数据对象(信号、变量、常数)必须严格限定其取值范围,即对其传输或存储的数据类型作明确的界定。这对于大规模电路描述的排错是十分有益的。在VHDL中,预先定义好的数据类型有多种,如整数数据类型INTEGER、布尔数据类型BOOLEAN、标准逻辑位数据类型STD_LOGIC和位数据类型BIT等。 BIT数据类型的信号规定的取值范围是逻辑位'1'和'0'。在VHDL中,逻辑位0和1的表达必须加单引号' ',否则VHDL综合器将0和1解释为整数数据类型INTEGER。 BIT数据类型可以参与逻辑运算或算术运算,其结果仍是位的数据类型。VHDL综合器用一个二进制位表示BIT。将例7-1中的端口信号a、b、s和y的数据类型都定义为BIT,即表示a、b、s和y的取值范围,或者说是数据变化范围被限定在逻辑位'1'和'0'之间。 BIT数据类型的定义或者说是解释包含在VHDL标准程序包STANDARD中,而程序包STANDARD包含于VHDL标准库STD中。 6、结构体表达 或: 【例6-8】 ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END arch_name ; 【例6-7】 ARCHITECTURE arch_name OF e_name IS (说明语句) BEGIN (功能描述语句) END ARCHITECTURE arch_name ; 结构体的一般表达如以下例6-7/6-8所示: 和例6-5/6-6一样,上下两种表式的唯一区别是IEEE93/87标准不同。前者为IEEE93标准、而后者是IEEE87。上式中ARCHITECTURE、OF、IS、BEGIN和END ARCHITECTURE都是描述结构体的关键词,在描述中必须包含,arch_name是结构体名。 (说明语句)包括在结构体中需要说明和定义的数据对象、数据类型、元件调用声明等等。(说明语句)并非是必须的,(功能描述语句)则不同,结构体中必须给出相应的电路功能描述语句,可以是并行语句,顺序语句或它们的混合。 一般地,一个可综合的,完整的VHDL程序有比较固定的结构。设计实体中,一般首先出现的是各类库及其程序包的使用声明,包括未以显式表达的工作库WORK库的使用声明,然后是实体描述,然后是结构体描述,而在结构体中可以含有不同的逻辑表达语句结构。这里对一个相对完整的VHDL程序设计构建称为设计实体。 7、信号传输(赋值)符号和数据比较符号 例6-1中的表达式y<=a表示输入端口a的数据向输出端口y传输;但也可以解释为信号a向信号y赋值。在VHDL仿真中赋值操作y<=a并非立即发生的,而是要经历一个模拟器的最小分辨时间 ( 后,才将a的值赋予y 。在此不妨将 ( 看成是实际电路存在的固有延时量。VHDL要求赋值符“<=”两边的信号的数据类型必须一致。 例6-1中,条件判断语句WHEN_ELSE通过测定表式s='0'的比较结果,以确定由哪一端口向y赋值。条件语句WHEN_ELSE的判定依据是表式s='0'输出的结果。表式中的等号“=”没有赋值的含义,只是一种数据比较符号。其表式输出结果的数据类型是布尔数据类型BOOLEAN,它的取值分别是: true(真) 和 false(伪) 即当s为高电平时,表式“s='0'”输出“false”; 当s为低电平时,表式“s ='0'”输出“true”。在VHDL综合器或仿真器中分别用'1'和'0'表达true和false。 布尔数据不是数值,只能用于逻辑操作或条件判断。 用于条件语句的判断表式可以是一个值,也可以是更复杂的逻辑或运算表达式,如: IF a THEN .. -- 注意,a的数据类型必须是boolean IF (s1='0')AND(s2='1')OR(c ; USE.< 设计库名>.<程序包名>.ALL ; 【例6-10】 ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q <= D ; END IF; END PROCESS ; END ; STD_LOGIC的类型定义在被称为STD_LOGIC_1164的程序包中,此包由IEEE定义,而且此程序包所在的程序库的库名也称IEEE。由于IEEE库不属于VHDL标准库,所以在使用其库中内容前,必须事先给予声明。例6-9最上的两句语句: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; 正是出于需要定义端口信号的数据类型为STD_LOGIC(当然也可以定义为BIT类型或其它数据类型,但一般应用中推荐定义STD_LOGIC类型)。 3、SIGNAL信号定义和数据对象 例6-9中的语句“SIGNAL Q1 : STD_LOGIC;”表示在描述的器件DFF1内部定义标识符Q1的数据对象为信号SIGNAL,其数据类型为STD_LOGIC。由于Q1被定义为器件的内部接点信号,数据的进出不象端口信号那样受限制,所以不必定义其端口模式(如IN、OUT等)。定义Q1的目的是为了在今后更大的电路设计中使用由此引入的时序电路的信号,这是一种常用的时序电路设计的方式。但是单就例6-9的一个D触发器的描述,不作Q1的定义,其结构体如例6-10那样,同样能综合出相同的结果。 语句“SIGNAL Q1 : STD_LOGIC;”中的SIGNAL是定义某标识符为信号的关键词。在VHDL中,数据对象(Data Objects)类似于一种容器,它接受不同数据类型的赋值。数据对象有三类,即信号(SIGNAL)、变量(VARIABLE)和常量(CONSTANT),关于数据对象的详细解释将在后文中给出。VHDL中,被定义的标识符必须确定为某类数据对象,同时还必须被定义为某种数据类型,如例6-9中的Q1,对它规定的数据对象是信号,数据类型是STD_LOGIC(规定Q1的取值范围),前者规定了Q1的行为方式和功能特点,后者限定了Q1的取值范围。根据VHDL规定,Q1作为信号,它可以如同一根连线那样在整个结构体中传递信息,也可以根据程序的功能描述构成一个时序元件;但Q1传递或存储的数据的类型只能包含在STD_LOGIC的定义中。需要注意的是,语句“SIGNAL Q1 : STD_LOGIC;”仅规定了Q1的属性特征,而其功能定位,需要由结构体中的语句描述具体确定。如果将Q1比喻为一瓶葡萄酒,则其特定形状的酒瓶就是其数据对象,瓶中的葡萄酒而非其它酒就是其数据类型,而这瓶酒的功能只能由拥有这酒的人确定,即结构体中的具体描述。 4、上升沿检测表式和信号属性函数EVENT 例6-9 中的条件语句的判断表式“CLK'EVENT AND CLK = '1'”是用于检测时钟信号CLK的上升沿的,即如果检测到CLK的上升沿,此表达式将输出“true”。 关键词EVENT是信号属性,VHDL通过以下表式来测定该信号的跳变边沿: <信号名>'EVENT 图6-5 例6-11的电路图 短语“clock’EVENT”就是对clock标识符的信号在当前的一个极小的时间段 ( 内发生事件的情况进行检测。所谓发生事件,就是clock的电平发生变化,从一种电平方式转变到另一种电平方式。如果clock的数据类型定义为STD_LOGIC,则在 ( 时间段内,clock从其数据类型允许的9种值中的任何一个值向另一值跳变,如由'0'变成'1'、由'1'变成'0'或由'Z'变成'0',都认为发生了事件,于是此表式将输出一个布尔值 TRUE,否则为 FALSE。 如果将以上短语“clock’EVENT”改成语句“clock ’EVENT AND clock='1'”, 【例6-11】 ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 > b1 THEN q1 <= '1' ; ELSIF a1 < b1 THEN q1 <= '0' ; END IF; END PROCESS ; END ; 【例6-12】 ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 > b1 THEN q1 <=1'; ELSE q1 <= '0' ; END IF; END PROCESS ; END ; 图6-6 例6-12的电路图 则一旦“clock’EVENT” 在 ( 时间内测得clock有一个跳变,而小时间段 ( 之后又测得clock为高电平'1',从而满足此语句右侧的“clock='1' ”的条件,而两者相与(AND)后返回TRUE,由此便可以从当前的“clock='1'”推断在此前的 ( 时间段内,clock必为0(假设clock的数据类型为BIT)。因此,以上的表达式可以用来对信号clock的上升沿进行检测。 5、不完整条件语句与时序电路 现在来分析例6-9 中对D触发器功能的描述: 首先当时钟信号CLK发生变化时,PROCESS语句被启动,IF语句将测定条件表式“CLK'EVENT AND CLK = '1'”是否满足条件(即CLK的上升沿是否到来),如果为“true”,则执行语句 Q1<=D,即将D的数据向内部信号Q1赋值,并结束IF语句,最后将Q1的值向端口信号Q输出,即执行 Q<=Q1。 如果CLK没有发生变化,或是非上升沿方式的变化,IF语句都不满足条件,即条件表式给出“false”,于是将跳过赋值表式Q1<=D 结束IF语句的执行。由于在此IF语句中没有利用ELSE明确指出当IF语句不满足条件时作何操作。显然这是一种不完整的条件语句(即在条件语句中,没有将所有可能发生的条件给出对应的处理方式),对于这种语言现象,VHDL综合器将“理解”为当不满足条件时,不能执行语句Q1<=D,即应保持Q1的原值不变。这就意味着必须引进时序元件来保存Q1中的原值,直到满足IF语句的判断条件后才能更新Q1中的值。 利用这种不完整的条件语句的描述引进寄存器元件,从而构成时序电路的方式是VHDL描述时序电路最重要的途径。通常,完整的条件语句只能构成组合逻辑电路,如例6-4中,IF_THEN_ELSE语句指明了s为'1'和'0'全部可能的条件下的赋值操作,从而产生了多路选择器组合电路模块。 然而必须注意的是,虽然在构成时序电路方面,不完整的条件语句具有独特的功能,但在利用条件语句进行纯组合电路设计时,如果没有充分考虑电路中所有可能出现的问题,即没有列全所有的条件,将导致不完整的条件语句的描述,从而产生设计者不希望的组合与时序电路的混合体。在此,不妨比较例6-11和例6-12的综合结果。 可以认为例6-11的原意是要设计一个纯组合电路的比较器,但是由于在条件语句中漏掉了给出当a1=b1时q1作何操作的表述,结果导致了一个不完整的条件语句。VHDL综合器将对例6-11的条件表述解释为:当条件a1=b1时对q1不作任何赋值操作,即在此情况下保持q1的原值,这意味着必须为q1配置一个寄存器,以便保存它的原值。图6-5的电路图即为例6-11的综合结果。不难发现综合器已为比较结果配置了一个寄存器。通常在仿真时,对这类电路的测试,很难发现在电路中已被插入了不必要的时序元件,但却浪费了逻辑资源,降低了电路的工作速度,影响了电路的可靠性。因此,设计者应该尽量避免此类电路的出现。 例6-12是对例6-11的改进,其中的“ELSE q1<='0' ”语句即已包括了当a1小于等于b1情况下,q1的赋值要求,从而能产生图6-6所示的简洁的组合电路。 第三节 VHDL文本输入设计方法初步 虽然本节介绍的是基于MAX+plusII的文本输入设计方法,但其基本设计流程是具有一般性,因而,设计的基本方法也完全适合于其它EDA工具软件。作为实验准备,本节将介绍利用MAX+plusII进行VHDL文本输入设计的基本方法和流程。 6.3.1 编辑输入并存盘VHDL原文件 首先应该建立好工作库目录,以便设计工程项目的存储。作为示例,在此设立目录为: E:\muxfile ,作为工作库。以便将设计过程中的相关文件存储在此。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。一般不同的设计项目最好放在不同的文件夹中,注意,一个设计项目可以包含多个设计文件,如频率计。 图6-12 进入Max+plusII,建立一个新的设计文件 可利用WINDOWS资源管理器,新建一个文件夹。假设本项设计的文件夹取名为muxfile ,在E盘中,路径为:E:\ muxfile 注意,文件夹不能用中文。接下去是打开MAX+plusII, 选择菜单“File”(“New…”,出现如图6-12所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。在出现的“Untitled - Text Editor” 文本编辑窗(图6-13)中键入图6-13所示的VHDL程序(2选1多路选择器),输入完毕后,选择菜单“File(Save”,即出现如图6-13所示的“Save As”对话框。首先在“Directories”目录框中选择自己已建立好的存放本文件的目录E:\MUXFILE(用鼠标双击此目录,使其打开),然后在“File Name”框中键入文件名MUX21A.VHD,按“OK”按钮,即把输入的文件放在目录E:\MUXFILE中了。 注意, VHDL程序文本存盘的文件名必须与文件的实体名一致,如MUX21A.VHD。 另应注意,文件的后缀将决定使用的语言形式,在MAX+plusII中,后缀为.VHD表示VHDL文件;后缀为.TDF表示AHDL文件 ;后缀为.V表示Verilog文件。如果后缀正确,存盘后对应该语言的文件中的主要关键词都会改变颜色。 6.3.2 将当前设计设定为工程 为了使Max+plusII能对输入的设计项目按设计者的要求进行各项处理,在编译/综合MUX21A.VHD之前,需要设置此文件为顶层文件(最上层文件),或称工程文件:Project,或者说将此项设计设置成工程。 选择菜单“File”(Project(“Set Project to Current File”,当前的设计工程即被指定为MUX21A 。也可以通过选“File”(“Project”(“Name”,在跳出的“Project Name”窗中指定E:\MUXFILE下的MUX21A.VHD为当前的工程。设定后可以看见MAX+plusII主窗左上方(图6-14)的工程项目路径指向为:“e:\muxfile\mux21a”。这个路径指向很重要! 如果设计项目由多个设计文件组成,则应该将它们的主文件,即顶层文件设置成Project。如果要对其中某一底层文件进行单独编译、仿真和测试,也必须首先将其设置成Projcet。 图6-13 在文本编辑窗中输入VHDL文件并存盘 图6-14 设定当前文件为工程 为了获得与目标器件对应的,精确的时序仿真文件,在对文件编译前必须选定最后实现本设计项目的目标器件,在Max+plusII环境中主要选Altera公司的FPGA或CPLD。在设定工程文件后,应该选择用于编程的目标芯片:选择菜单“Assign”(“Device…”,在弹出的对话框中的“Device Family”下拉栏中,例如选择FLEX10K,此窗口(图6-15)的Device Family是器件序列栏,应该首先在此拦中选定目标器件对应的序列名,如EPM7128S对应的是MAX7000S系列;ACEX1K对应的是ACEX系列等。为了选择EP1K30TC144-3器件,应将此栏下方标有Show only Fastest Speed Grades的勾消去,以便显示出所有速度级别的器件。完成器件选择后,按OK键。 图6-15 设定当前文件为工程 在设计中,设定某项VHDL设计为工程应该注意以下3方面的问题: 1、如果设计项目由多个VHDL文件组成,如本章给出的全加器,应先对各低层次文件(元件),如或门或半加器分别进行编辑、设置成工程、编译、综合、乃至仿真测试并存盘后以备后用。 2、最后将定顶层文件(存在同一目录中)设置为工程,统一处理,这时顶层文件能根据例化语句自动调用底层设计文件。 3、在设定顶层文件为工程后,底层设计文件原来设定的元件型号和引脚锁定信息自动失效。元件型号的选定和引脚锁定情况始终以工程文件(顶层文件)的设定为准。同样,仿真结果也是针对工程文件的。所以在对最后的顶层文件处理时,仍然应该对它重新设定元件型号和引脚锁定(引脚锁定只有在最后硬件测试时才是必须的)。如果需要对特定的底层文件(元件)进行仿真,只能将某底层文件(元件)暂时设定为工程,进行功能测试或时序仿真。 6.3.3 选择VHDL文本编译版本号和排错 选菜单“MAX+plus II”(“Compiler”菜单(图6-16), 图6-16 设定VHDL编译版本号 图6-17 设定VHDL编译版本号 出现编译窗图6-16)后,需要根据自己输入的VHDL文本格式选择VHDL文本编译版本号。 选择如图6-17所示界面上方的“Interfaces”(“VHDL Netlist Reader Settings”,在弹出的窗口中选“VHDL’1987”或“VHDL’1993”。这样,编译器将支持87或93版本的VHDL语言。这里,文件MUX21A.VHD属于93版本的表述。由于综合器的VHDL’1993版本兼容VHDL’1987版本的表述,所以如果设计文件含有VHDL’1987或混合表述,都应该选择“VHDL’1993”项。 在按“START”键运行编译前,还需要作一件事,即在进入编辑窗(图6-16),选择Processing项,选“Fitter Setting”,进入如图6-18的窗口,消去最上的“Use Quartus Fitter…”的勾。 图6-18 消去“Use Quartus Fitter…”项 最后按“START”键,运行编译器。 如图6-13所示,MUX21A.VHD文件中的实体结束语句没有加分号“;”,在编译时出现了如图6-19所示的出错信息指示。有时尽管只有1、2个小错,但却会出现大量的出错信息,确定错误所在的最好办法是找到最上一排错误信息指示,用鼠标点成黑色,然后点击如图6-19所示窗口左下方的“Locate”错误定位钮,就能发现在出现文本编译窗中闪动的光标附近找到错误所在。纠正后再次编译,直至排除所有错误。 注意闪动的光标指示错误所在只是相对的,有的错误比较复杂,很难用此定位。 图6-19 确定设计文件中的错误 VHDL文本编辑中还可能出现许多其它错误,如: 1、错将设计文件存入了根目录,并将其设定成工程,由于没有了工作库,报错信息如下: Error :Can't open VHDL "WORK" 2、错将设计文件的后缀写成.tdf而非.vhd,在设定工程后编译时,报错信息如下: Error :Line1,File e:\muxfile\mux21a.tdf: TDF syntax error: ... 3、未将设计文件名存为其实体名,如错写为muxa.vhd,设定工程编译时,报错信息如下: Error :Line1,...VHDL Design File "muxa.vhd" must contain ... 6.3.4 时序仿真 接下来应该测试设计项目的正确性,即逻辑仿真,具体步骤如下: 1、建立波形文件。为此设计建立一个波形测试文件。根据图6-12选择File项及其New,再选择New窗中的Waveform Editer..项,打开波形编辑窗。 2、输入信号节点。在图6-20所示的波形编辑窗的上方选择Node项,在下拉菜单中选择输入信号节点项Enter Nodes from SNF。在弹出的窗口(图6-21)中首先点击List键,这时左窗口将列出该项设计所以信号节点。由于设计者有时只需要观察其中部分信号的波形,因此要利用中间的“=>”键将需要观察的信号选到右栏中,然后点击OK键即可将测试信号s(I)、b(I)、a(I)和y(O)输入仿真波形编辑窗。。 图6-20从SNF文件中输入设计文件的信号节点 图6-21 列出并选择需要观察的信号节点 图6-22 在Options选项中消去网格对齐Snap to Grid的选择(消去勾) 3、设置波形参量。图6-22所示的波形编辑窗中已经调入了半加器的所有节点信号,在为编辑窗的半加器输入信号a和b设定必要的测试电平之前,首先设定相关的仿真参数。如图6-22所示, 在Options选项中消去网格对齐Snap to Grid的选择(消去勾),以便能够任意设置输入电平位置,或设置输入时钟信号的周期。 4、如图6-23,6-24所示,设定仿真时间宽度。选择File项及其End time选项,在End time选择窗中选择适当的仿真时间域,如可选80us(80微秒),以便有足够长的观察时间。 5、加上输入信号。图6-25显示了波形编辑窗各按钮的功能。 图6-23 设定仿真时间宽度 图6-24 设定仿真时间宽度 图6-25 为输入信号设定必要的测试电平或数据 图6-26 为输入信号设定必要的输入信号 图6-27 mux21a仿真波形 在图6-26仿真波形中,多路选择器mux21a的输入端口a和b分别输入时钟周期为400ns和1.2us的时变信号。由图可见,当控制端s为高电平时,y的输出为b的低频率信号,而当s为低电平时,y的输出为a的高频率信号。 注意,仿真波形文件的建立,一定要十分注意仿真时间区域的设定,以及时钟信号的周期设置,否则即使设计正确也无法获得正确的仿真结果。如图6-26所示,设定了比较合理的仿真时间区域和信号频率。 即仿真时间区域不能太小,仿真频率不能太高,即信号周期不能小到与器件的延时相比拟。 图6-28 仿真波形文件存盘 图6-29 运行仿真器 6、波形文件存盘。选择File项及其Save as选项,按OK键即可。存盘窗(图6-28)中的波形文件名是默认的(这里是mux21a.scf),所以直接存盘即可。 7、运行仿真器。选择MAX+plusII项及其中的仿真器Simulator选项,点击跳出的仿真器窗口(图6-29)中的Start键。图6-27是仿真运算完成后的时序波形。注意,刚进入图6-27的窗口时,应该将最下方的滑标拖向最左侧,以便可观察到初始波形。 8、观察分析波形。还可以进一步了解信号的延时情况。图6-27右侧的竖线是测试参考线,它与鼠标箭头间的时间差显示在窗口上方的Interval小窗中。由图可见输入与输出波形间有一个小的延时量。 图6-30 打开延时时序分析窗 6.3.5 硬件测试 为在实验系统上验证设计的正确性,完成硬件测试。如果目标器件是EP1K30,建议选择实验电路模式5,用键1(PIO0)控制通道选择信号s ;a和b分别接clock5和clock0;输出信号y接扬声器spker。通过短路帽选择clock0接256Hz信号,clock5接1024Hz信号。 现在根据以上确定的实验模式锁定多路选择器在目标芯片中的具体引脚:首先通过选择“MAX+plus II”(“Compiler”菜单,进入编辑窗,然后在“Assign”项中选“Pin / Location / Chip”选项,在跳出的窗口中的Node Name项中输入引脚a ,这时“Pin Type”项会出现“Input”指示字,表明 a 的引脚性质是输入,否则将不出现此字。此时在“PIN”项内输入“126”引脚名,再点击右下方的Add项,此引脚即设定好了;以同样方法分别锁定引脚 b、s、y(图6-31),再点击上方的OK。此4个引脚的选择方法是根据附录实验电路模式“NO.5”设定的。 关闭“Pin / Location / Chip”窗后,应点击编辑窗的“Start”,将引脚信息编辑进去。 编程下载和硬件测试的步骤如下: (1)选 " MAX+PLUS( " 项中的“Programmer”项,跳出Programmer窗后,选Options项中的硬件设置项“Hardware Setup”,在此窗的下拉窗中选“ByteBlaster (MV)”项,点击OK即可。 (2)将实验板连接好,接好电源,点“Configure”,即进行编程下载。 (3)选实验电路模式“NO.5”后,用短路帽设定clock5和clock0的频率分别为256Hz和1024Hz。当用键1输入高电平时,扬声器发出256Hz低频声,当用键1输入低电平时,扬声器发出1024Hz高频声。当然也可以用示波器观察输出信号。 图6-31 引脚锁定 图6-32 设置编程下载方式 下载方式设定: 选择MAX+plusII项及其中的编程器Programmer选项,跳出如图6-32左侧所示的编程器窗口,然后选择Options项的Hardware Setup硬件设置选项,其窗口如图6-32左侧所示。在其下拉菜单中选ByteBlaster(MV)编程方式。此编程方式对应计算机的并行口下载通道,“MV”是混合电压的意思,主要指对ALTERA的各类芯核电压(如5V、3.3V、2.5V与1.8V等)的FPGA/CPLD都能由此下载。此项设置只在初次装软件后第一次编程前进行,设置确定后就不必重复此设置了。 图6-33 向目标器件下载配置文件 下载: 如图6-33,点击Configure键,向EPF10K10下载配置文件,如果连线无误,应出现图6-33 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 配置完成的信息提示。 到此为止,完整的设计流程已经结束。VHDL文本输入的设计可参考这一流程。 6.3.6 设计流程归纳 图6-34所示的是利用MAX+plusII进行设计的一般流程,因此对原理图输入设计和文本方式的硬件描述语言设计输入都能适用。 图6-34 MAX+plusII一般设计流程 6.3.7 MAX+plusII在Windows 2000上的安装设置 在windows 98h,MAX+plusII一旦安装完毕,经过设置即可使用硬件下载功能。在windows 2000上的安装,除了安装软件外,为使用ByteBlasterMV下载功能,还必须安装硬件驱动(drivers),以支持MAX+plusII对PC机并行口的操作。具体安装步骤如下: (1)首先安装MAX+plusII;(2)选择(“开始”→“设置”→“控制面板”);(3)双击“游戏选项”,然后选择“添加”→“添加其他”→“从磁盘安装”命令,再单击“浏览”浏览驱动所在目录:MAX+plusII的安装目录\drivers\win2000;(4)选择 win2000.inf ,单击确定;(5)在“数字签名未找到”对话框中,选择是;(6)在“选择一个设备驱动程序”窗口中,选择Altera ByteBlaster,并单击“下一步”;(7)在接下去的“数字签名未找到”对话框中,仍选择“是”;(8)安装完成,依提示,重新启动计算机 在WINXP/WINNT操作环境下,若要使用下载(Download)功能,同样要安装驱动,安装方法可参考在Windows 2000上的安装方法进行,在此不再赘述。 实 验 (以下实验项目选自《EDA技术使用教程》,更多更详细的实验内容请参考该书) 【实验1】1位全加器VHDL文本输入设计: --或门逻辑描述 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY or2a IS PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY or2a; ARCHITECTURE one OF or2a IS BEGIN c <= a OR b ; END ARCHITECTURE fu1; --半加器描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY adder IS PORT (a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC); END ENTITY adder; ARCHITECTURE fh1 OF adder is BEGIN so <= NOT(a XOR (NOT b)) ; co <= a AND b ; END ARCHITECTURE fh1; --1位二进制全加器顶层设计描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY f_adder IS PORT (ain,bin,cin : IN STD_LOGIC; cout,sum : OUT STD_LOGIC ); END ENTITY f_adder; ARCHITECTURE fd1 OF f_adder IS COMPONENT h_adder PORT ( a,b : IN STD_LOGIC; co,so : OUT STD_LOGIC); END COMPONENT ; COMPONENT or2a PORT (a,b : IN STD_LOGIC; c : OUT STD_LOGIC); END COMPONENT; SIGNAL d,e,f : STD_LOGIC; BEGIN u1 : h_adder PORT MAP(a=>ain,b=>bin, co=>d,so=>e); u2 : h_adder PORT MAP(a=>e, b=>cin, co=>f,so=>sum); u3 : or2a PORT MAP(a=>d, b=>f,c=>cout); END ARCHITECTURE fd1 ; 【实验2】2选1多路选择器VHDL设计: 设计与实验方法参考第6章第4节。 【实验3】8位硬件加法器VHDL设计 设计程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER8 IS PORT ( CIN : IN STD_LOGIC; A, B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC ); END ADDER8; ARCHITECTURE behav OF ADDER8 IS SIGNAL SINT : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN SINT <= ('0'& A) + B + CIN ; S <= SINT(7 DOWNTO 0); COUT <= SINT(8); END behav; 实验要求:给出此项设计的仿真波形,测试加法器的延时,选择实验电路NO.1验证此加法器的功能。 【实验4】含异步清0和同步时钟使能的4位加法计数器 1、实验目的:学习时序电路的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。 实验图1 含计数使能、异步复位和计数值并行预置功能4位加法计数器 2、实验原理:实验图1是一含计数使能、异步复位和计数值并行预置功能4位加法计数器,例1是其VHDL描述。由实验图1所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[3..0]是4位数据输入端。当ENA为'1'时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA为'0'时将"0000"加载于锁存器。 3、实验内容1:按照本章第4节的步骤,在MAX+plusII上对例1进行编辑、编译、综合、适配、仿真。说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。 实验图2 共阴数码管及其电路 【例1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4B IS PORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT4B; ARCHITECTURE behav OF CNT4B IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN P_REG: PROCESS(CLK, RST, ENA) BEGIN IF RST = '1' THEN CQI <= "0000"; ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1; END IF; END IF; OUTY <= CQI ; END PROCESS P_REG ; --进位输出 COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); END behav; 4、实验内容2:引脚锁定以及硬件下载测试。 若目标器件是EPF10K10,建议选实验电路模式5,用键8(PIO7)控制RST;用键7(PIO6)控制ENA;计数溢出COUT接发光管D8(PIO15);OUTY是计数输出,接数码1(PIO19-PIO16,低位靠右);时钟CLK接clock2(引脚号为43),通过短路帽选择4Hz信号。引脚锁定窗后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。 6、思考题1:在例1中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即 : OUTY <= OUTY + 1 ? 7、思考题2:修改例1,用进程语句和IF语句实现进位信号的检出。 8、将例1中的语句“COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3)”逻辑用进程和IF语句来表达。 9、实验报告:实验项目原理、设计过程、编译仿真波形和分析结果,附加内容实验情况,以及它们的硬件测试实验结果写进实验报告。 【实验5】7段数码显示译码器设计 1、实验目的:学习7段数码显示译码器设计、多层次设计方法、和总线数据输入方式的仿真。 2、实验原理:7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。本项实验很容易实现这一目的。例2作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如实验图2数码管的7个段,高位在左,低位在右。例如当LED7S输出为 "1101101" 时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。 3、实验内容1:说明例2中各语句的含义,以及该例的整体功能。在MAX+plusII上对以下该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形(提示:用输入总线的方式给出输入信号仿真数据)。 【例2】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DecL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DecL7S IS BEGIN PROCESS( A ) BEGIN CASE A(3 DOWNTO 0) IS WHEN "0000" => LED7S <= "0111111" ; -- X“3F”(0 WHEN "0001" => LED7S <= "0000110" ; -- X“06”(1 WHEN "0010" => LED7S <= "1011011" ; -- X“5B”(2 WHEN "0011" => LED7S <= "1001111" ; -- X“4F”(3 WHEN "0100" => LED7S <= "1100110" ; -- X“66”(4 WHEN "0101" => LED7S <= "1101101" ; -- X“6D”(5 WHEN "0110" => LED7S <= "1111101" ; -- X“7D”(6 WHEN "0111" => LED7S <= "0000111" ; -- X“07”(7 WHEN "1000" => LED7S <= "1111111" ; -- X“7F”(8 WHEN "1001" => LED7S <= "1101111" ; -- X“6F”(9 WHEN "1010" => LED7S <= "1110111" ; -- X“77”(10 WHEN "1011" => LED7S <= "1111100" ; -- X“7C”(11 WHEN "1100" => LED7S <= "0111001" ; -- X“39”(12 WHEN "1101" => LED7S <= "1011110" ; -- X“5E”(13 WHEN "1110" => LED7S <= "1111001" ; -- X“79”(14 WHEN "1111" => LED7S <= "1110001" ; -- X“71”(15 WHEN OTHERS => NULL ; END CASE ; END PROCESS ; END ; 3、实验内容2:引脚锁定以及硬件下载测试。建议选实验电路模式6,用数码8显示译码输出(PIO46--PIO40),键8、键7、键6、键5四位控制输入,硬件验证译码器的工作性能。 4、思考题:讨论语句WHEN OTHERS=>NULL的作用。对于不同的VHDL综合器,此句是否具有相同含义和功能? 实验图3 计数器和译码器连接电路的顶层文件原理图 5、附加实验内容:用VHDL例化语句(参考实验2)按实验图3的方式,以例1和例2为底层元件,完成顶层文件设计,并重复以上实验过程。注意实验图3中的tmp是4位总线,led是7位总线。对于引脚锁定和实验,建议仍选实验电路模式6,用数码8显示译码输出,用键3作为时钟输入(每按2次键为1个时钟脉冲),或直接时钟信号clock0。(答案见最后一页)。 6、实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;设计原程序,程序分析报告、仿真波形图及其分析报告。 【实验6】数控分频器的设计 1、实验目的:学习数控分频器的设计、分析和测试方法。 2、实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,例3的数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。 3、实验内容1:根据实验图3的波形提示,分析例3中的各语句功能、设计原理、逻辑功能,并详述进程P_REG和P_DIV的作用。 实验图3 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns) 4、实验内容2:输入不同的CLK时钟频率和预置值D,给出如例3的时序波形。 5、实验内容3:在实验系统上硬件验证例3的功能。如果目标器件是EPF10K10,建议选实验电路模式1,键2 / 键1(PIO7-PIO0)负责输入8位预置数D;CLK由clock0输入,频率可选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。编译下载后进行硬件测试:改变键2 / 键1的输入值,可听到不同音调的声音。 6、实验报告:根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。 【例3】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS PORT ( CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END; ARCHITECTURE one OF PULSE IS SIGNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = "11111111" THEN CNT8 := D; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; --否则继续作加1计数 FULL <= '0'; --且输出溢出标志信号FULL为低电平 END IF; END IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULL'EVENT AND FULL = '1' THEN CNT2 := NOT CNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0'; END IF; END IF; END PROCESS P_DIV ; END; 【实验7】用状态机实现序列检测器的设计 1、实验目的:用状态机实现序列检测器的设计,并对其进行仿真和硬件测试。 2、实验原理:序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。例4描述的电路完成对序列数"11100101"的。当这一串序列数高位在前(左移)串行进入检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。 【例4】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SCHK IS PORT( DIN,CLK,CLR : IN STD_LOGIC ; --串行输入数据位/工作时钟/复位信号 AB : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --检测结果输出 END SCHK; ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 8 ; SIGNAL D : STD_LOGIC_VECTOR(7 DOWNTO 0); --8位待检测预置数 BEGIN D <= "11100101 " ; --8位待检测预置数 PROCESS( CLK, CLR ) BEGIN IF CLR = '1' THEN Q <= 0 ; ELSIF CLK'EVENT AND CLK='1' THEN --时钟到来时,判断并处理当前输入的位 CASE Q IS WHEN 0=> IF DIN = D(7) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(6) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(5) THEN Q <= 3 ; ELSE Q <= 0 ; END IF ; WHEN 3=> IF DIN = D(4) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(3) THEN Q <= 5 ; ELSE Q <= 0 ; END IF ; WHEN 5=> IF DIN = D(2) THEN Q <= 6 ; ELSE Q <= 0 ; END IF ; WHEN 6=> IF DIN = D(1) THEN Q <= 7 ; ELSE Q <= 0 ; END IF ; WHEN 7=> IF DIN = D(0) THEN Q <= 8 ; ELSE Q <= 0 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) --检测结果判断输出 BEGIN IF Q = 8 THEN AB <= "1010" ; --序列数检测正确,输出 “A” ELSE AB <= "1011" ; --序列数检测错误,输出 “B” END IF ; END PROCESS ; END behav ; 提示:若对于D <= "11100101 ",电路需记忆:初始状态、1、11、111 、 1110 、11100、111001、1110010、11100101 共9种状态。 3、实验内容1:说明例4的代码表达的是什么类型的状态机,它的优点是什么?详述其功能和对序列数检测的逻辑过程;根据例4写出由两个主控进程构成的相同功能的符号化moore型有限状态机,画出状态图,并给出其仿真测试波形; 利用MAX+plusII对例4进行文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序。最后进行引脚锁定并完成硬件测试实验。 建议用键7(PIO11)控制复位信号CLR;键6(PIO9)控制状态机工作时钟CLK;待检测串行序列数输入DIN接PIO10(左移,最高位在前);指示输出AB接PIO39~PIO36(显示于数码管6)。下载后,1、按实验板“系统复位”键;2、用键2和键1输入2位十六进制待测序列数"11100101 ";3、按键7复位(平时数码6指示显“B”);4、按键6(CLK) 8次,这时若串行输入的8位二进制序列码(显示于数码2/1和发光管D8~D0)与预置码"11100101 "相同,则数码6应从原来的B变成A ,表示序列检测正确,否则仍为B。 6、实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。 【实验8】用状态机对ADC0809的采样控制电路实现 1、实验目的:学习用状态机对A/D转换器ADC0809的采样控制电路的实现。 2、实验原理:ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的分辨率为8位,转换时间约100us,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。 主要控制信号说明:如实验图4所示,START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号(类似于AD574的STATUS),当启动转换约100us后,EOC产生一个负脉冲,以示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。至此ADC0809的一次转换结束了。 【例5】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT IS PORT ( D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --0809的8位转换数据输出 CLK ,EOC : IN STD_LOGIC; --CLK是转换工作时钟 LOCK1, ALE, START, OE, ADDA : OUT STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END ADCINT; ARCHITECTURE behav OF ADCINT IS TYPE states IS (st0, st1, st2, st3,st4,st5,st6) ; --定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; -- 转换后数据输出锁存时钟信号 BEGIN ADDA <= '1'; LOCK1 <=LOCK; PRO: PROCESS(current_state,EOC) BEGIN --规定各状态转换方式 CASE current_state IS WHEN st0 => ALE<='0';START<='0';OE<='0';LOCK<='0' ;next_state <= st1; WHEN st1 => ALE<='1';START<='0';OE<='0';LOCK<='0' ;next_state <= st2; WHEN st2 => ALE<='0';START<='1';OE<='0';LOCK<='0' ;next_state <= st3; WHEN st3 => ALE<='0';START<='0';OE<='0';LOCK<='0'; IF (EOC='1') THEN next_state <= st3; --测试EOC的下降沿 ELSE next_state <= st4; END IF ; WHEN st4=> ALE<='0';START<='0';OE<='0';LOCK<='0'; IF (EOC='0') THEN next_state <= st4; --测试EOC的上升沿,=1表明转换结束 ELSE next_state <= st5; --继续等待 END IF ; WHEN st5=> ALE<='0';START<='0';OE<='1';LOCK<='0';next_state <= st6; WHEN st6=> ALE<='0';START<='0';OE<='1';LOCK<='1';next_state <= st0; WHEN OTHERS => ALE<='0';START<='0';OE<='0';LOCK<='0';next_state <= st0; END CASE ; END PROCESS PRO ; PROCESS (CLK) BEGIN IF ( CLK'EVENT AND CLK='1') THEN current_state <= next_state; -- 在时钟上升沿,转换至下一状态 END IF; END PROCESS; -- 由信号current_state将当前状态值带出此进程,进入进程PRO PROCESS (LOCK) -- 此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK='1' AND LOCK'EVENT THEN REGL <= D ; END IF; END PROCESS ; Q <= REGL; END behav; 实验图4 ADC0809工作时序 2、实验内容:利用MAX+plusII对例5进行文本编辑输入和仿真测试;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证例5电路对ADC0809的控制功能。 测试步骤:根据附图2-7,建议引脚锁定为:START接PIO34,OE接PIO35,EOC接PIO8,ALE接PIO33,状态机时钟CLK接clock0(PIN2,可选“65536Hz”或更高),ADDA接PIO32(ADDB和ADDC都接GND),ADC0809的8位输出数据线接PIO23~PIO16,锁存输出Q显示于数码8/数码7(PIO47~PIO40), 设目标器件是EPF10K10,建议选择实验电路结构图NO.5(即结构图NO.5,附图2-7,由该图可见,ADC0809的转换时钟CLK已经事先接有750KHz的频率),拨码开关选择“转换结束”和“A/D使能”。下载目标文件后,可用螺丝刀旋转实验系统左下角的电位器,以便为ADC0809提供变化的待测模拟信号,这时数码管8和7将显示ADC0809采样输出并被锁存的数字值(16进制)。 3、思考题:在不改变原代码功能的条件下将例5表达成用状态码直接输出型的状态机。 4、实验报告:根据以上的实验要求、实验内容和实验思考题写出实验报告。 【实验9】 波形发生与扫频信号发生器电路设计 1、实验目的:学习用VHDL设计波形发生器和扫频信号发生器,掌握FPGA对D/A的接口和控制技术,学会LPM_ROM在波形发生器设计中的实用方法。 2、实验原理:如实验图5所示,完整的波形发生器由4部分组成: ( FPGA中的波形发生器控制电路,它通过外来控制信号和高速时钟信号,向波形数据ROM发出地址信号,输出波形的频率由发出的地址信号的速度决定;当以固定频率扫描输出地址时,模拟输出波形是固定频率,而当以周期性时变方式扫描输出地址时,则模拟输出波形为扫频信号。 ( 波形数据ROM中存有发生器的波形数据,如正弦波或三角波数据。当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使D/A输出的模拟信号的变化速度越快。波形数据ROM可以由多种方式实现,如在FPGA外面外接普通ROM;由逻辑方式在FPGA中实现(如例6);或由FPGA中的EAB模块担当,如利用LPM_ROM实现。相比之下,第1种方式的容量最大,但速度最慢;,第2种方式容量最小,但速度最最快;第3种方式则兼顾了两方面的因素; ( D/A转换器负责将ROM输出的数据转换成模拟信号,经滤波电路后输出。输出波形的频率上限与D/A器件的转换速度有重要关系,本例采用DAC0832器件。 DAC0832是8位D/A转换器,转换周期为1µs,其引脚信号以及与FPGA目标器件典型的接口方式如附图2-7所示。其参考电压与+5V工作电压相接(实用电路应接精密基准电压)。DAC0832的引脚功能简述如下: ( ILE(PIN 19):数据锁存允许信号,高电平有效,系统板上已直接连在+5V上。 ( WR1、WR2(PIN 2、18):写信号1、2,低电平有效。 ( XFER(PIN 17):数据传送控制信号,低电平有效。 ( VREF(PIN 8):基准电压,可正可负,-10V~+10V。 ( RFB(PIN 9):反馈电阻端。 ( IOUT1/ IOUT2(PIN 11、12):电流输出1和2 。D/A转换量是以电流形式输出的,所以必须如实验结构图NO.5所示的连接方式将电流信号变为电压信号。 ( AGND/DGND(PIN 3、10):模拟地与数字地。在高速情况下,此二地的连接线必须尽可能短,且系统的单点接地点须接在此连线的某一点上。 例6中的正弦波波型数据由64个点构成,此数据经DAC0832,并经滤波器后,可在示波器上观察到光滑的正弦波(若接精密基准电压,可得到更为清晰的正弦波形)。 3、实验内容1:根据示例例6,及以上的设计原理,完成波形发生器和扫频信号源的设计,仿真测试及实验系统上的硬件测试。 硬件实验中注意DAC0832及滤波电路须接+/-12V 电压。然后将实验系统左下角选择插针处用短路帽短路“D/A直通”,而“滤波1”,“滤波0”处通过短路或不接短路帽达到不同的滤波方式。将示波器的地与EDA实验系统的地相接,信号端与“AOUT” 信号输出端相接;建议CLK接clock0,由此50MHz频率,此频率扫描波形数据;CLK1接clock5,由此接“1024Hz”,此频率决定扫频速度;选电路模式1;KK接键8,当为高电平时,正弦波点频输出,11位输入数据DATA由键3、键2和键1控制,信号源的输出频率由此3键输入的12位二进制数决定,数值越大,输出频率越高;“FD0”时为最高频率;键8低电平时,正弦波扫频输出,扫频速度由clock5的频率决定。输向0832的8位数据由DD输出。 实验图5 波形发生器电路系统结构图 4、实验内容2:在例6中插如一个LPM_ROM,将原例中的波形数据放在内部ROM中。必要时增加波形点数,以利低频输出时,仍保持良好波形。波形数据可由其它方式自动生成,然后重复以上的测试和硬件实验。 5、实验思考题:如果CLK的输入频率是50MHz,ROM中一个周期的正弦波数据是128个,要求输出的正弦波频率不低于150KHz,DAC0832是否能适应此项工作?为什么? 6、实验报告:作出本项实验设计的完整电路图,详细说明其工作原理,叙述例6的工作原理,以及基于LPM_ROM的VHDL电路设计的详细内容和测试、实验内容。 【例6】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DAC IS PORT ( CLK,CLK1,KK : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(11 DOWNTO 0); DD : OUT INTEGER RANGE 255 DOWNTO 0 ); END; ARCHITECTURE DACC OF DAC IS SIGNAL Q : INTEGER RANGE 63 DOWNTO 0 ; SIGNAL D : INTEGER RANGE 255 DOWNTO 0 ; SIGNAL FSS : STD_LOGIC ; SIGNAL COUNT12,DATA2,DATA1 : STD_LOGIC_VECTOR(11 DOWNTO 0) ; BEGIN PROCESS(FSS) BEGIN IF (FSS'EVENT AND FSS = '1') THEN Q <= Q + 1; END IF; END PROCESS; PROCESS(Q) BEGIN CASE Q IS WHEN 00=> D<=255; WHEN 01=> D<=254; WHEN 02=> D<=252; WHEN 03=> D<=249; WHEN 04=> D<=245; WHEN 05=> D<=239; WHEN 06=> D<=233; WHEN 07=> D<=225; WHEN 08=> D<=217; WHEN 09=> D<=207; WHEN 10=> D<=197; WHEN 11=> D<=186; WHEN 12=> D<=174; WHEN 13=> D<=162; WHEN 14=> D<=150; WHEN 15=> D<=137; WHEN 16=> D<=124; WHEN 17=> D<=112; WHEN 18=> D<= 99; WHEN 19=> D<= 87; WHEN 20=> D<= 75; WHEN 21=> D<= 64; WHEN 22=> D<= 53; WHEN 23=> D<= 43; WHEN 24=> D<= 34; WHEN 25=> D<= 26; WHEN 26=> D<= 19; WHEN 27=> D<= 13; WHEN 28=> D<= 8; WHEN 29=> D<= 4; WHEN 30=> D<= 1; WHEN 31=> D<= 0; WHEN 32=> D<= 0; WHEN 33=> D<= 1; WHEN 34=> D<= 4; WHEN 35=> D<= 8; WHEN 36=> D<= 13; WHEN 37=> D<= 19; WHEN 38=> D<= 26; WHEN 39=> D<= 34; WHEN 40=> D<= 43; WHEN 41=> D<= 53; WHEN 42=> D<= 64; WHEN 43=> D<= 75; WHEN 44=> D<= 87; WHEN 45=> D<= 99; WHEN 46=> D<=112; WHEN 47=> D<=124; WHEN 48=> D<=137; WHEN 49=> D<=150; WHEN 50=> D<=162; WHEN 51=> D<=174; WHEN 52=> D<=186; WHEN 53=> D<=197; WHEN 54=> D<=207; WHEN 55=> D<=217; WHEN 56=> D<=225; WHEN 57=> D<=233; WHEN 58=> D<=239; WHEN 59=> D<=245; WHEN 60=> D<=249; WHEN 61=> D<=252; WHEN 62=> D<=254; WHEN 63=> D<=255; WHEN OTHERS => NULL ; END CASE; END PROCESS; DD <= D ; PROCESS(CLK, DATA) BEGIN IF CLK'EVENT AND CLK = '1' THEN IF COUNT12 = "111111100000" THEN COUNT12 <= DATA1; FSS <= '1'; ELSE COUNT12 <= COUNT12 + 1; FSS <= '0'; END IF; END IF; END PROCESS; DATA1 <= DATA WHEN KK = '1' ELSE DATA2 WHEN KK = '0' ELSE DATA2 ; PROCESS(CLK1) BEGIN IF (CLK1'EVENT AND CLK1 = '1') THEN DATA2 <= DATA2 + 1; END IF; END PROCESS; END; 【实验5】答案: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY TOP_PRJ IS PORT (CLKK,RSTT,ENAA : IN STD_LOGIC; COUTT : OUT STD_LOGIC; OUTYY : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ENTITY TOP_PRJ; ARCHITECTURE fd1 OF TOP_PRJ IS COMPONENT CNT4B PORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC; OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END COMPONENT; COMPONENT DECL7S PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END COMPONENT; SIGNAL AB : STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN u1 : CNT4B PORT MAP(CLK=>CLKK,RST=>RSTT,ENA=>ENAA,OUTY=>AB,COUT=>COUTT); u2 : DECL7S PORT MAP(A=>AB, LED7S=>OUTYY); END ARCHITECTURE fd1;; 顶层电路TOP_PRJ.VHD 注意: 144脚的TQ型器件的I/O引脚、INPUT引脚和编程引脚与此图是完全兼容的,如:EPF10K20-TQ144与EP1K30TQ144、EP1K50TQ144是兼容的,故引脚锁定的位置是相同的。PIOx引脚名与引脚号对照以查表为准。 第七章 GWCNF 型FPGA掉电保护配置器应用 1、 FPGA配置文件格式与编程方法 FPGA的下载文件有多种格式,如*.pof、*.sof、*.hex等,GWCNF上的ROM中的配置文件的格式是*.hex格式。可利用普通编程器将*.hex文件烧写进ROM中。如果利用SUPER-PRO型编程器,向缓冲区调*.hex文件时应该选择“INTEL”格式。 2、 GWCNF上的ROM GWCNF上可选用几乎任何形式的ROM,包括27C系列、28C系列、29C系列等28脚或32脚封装的EPROM或EEPROM或FLASHI ROM等。因此如果选用大的ROM,可以同时放置多个配置文件,从而可以实现“多任务重配置”功能。 例如,GWCNF上若配有2片W27C020(含2M字节),则通常每片中最多可以放置4个对FPGA的配置文件,两片共8个。实际编程方法是每64K字节放一个HEX文件,4个文件所处的地址分别为:a、00000H-0FFFFH;b、10000H-1FFFFH;c、20000H-2FFFFH;d、30000H-3FFFFH。 对于含有4M的27C040、29C040、27C4001等,其地址分配也是一样,但其最后一个64K的地址区为:70000H-7FFFFH。 如果希望将多个配置文件编程进ROM中,烧写时一定要正确选择编程器的缓冲区地址和被编程芯片的首末地址。例如欲将某HEX文件烧进30000H-3FFFFH地址区,必须选择缓冲区的首地址为:00000;末地址为:0FFFF;而芯片的首地址为:30000;末地址为3FFFF。 3、 GWCNF板上跳线接插方法 GWCNF板上有许多跳线,以适应不同的应用切换: 序号 名 称 功能与用法 1 J7 短路帽选插“L33V”对低压FPGA进行配置,包括对3.3V、2.5V、1.8V芯核电压的FPGA进行配置(注意低压必须来自FPGA);短路帽选插“H5V”对5V工作电压FPGA配置。 2 J6 短路帽选插“INH”,禁止PORT1口,只能使用PORT2口对5V的FPGA进行配置;若短路帽选插“ENA”,则禁止PORT2口,这时PORT1口能对任何工作电压的FPGA配置。 3 PORT2 设立PORT2口的好处是可以直接通过该口从被配置的FPGA获得工作电源,而不必从“POWER”端口上另接电源,但PORT2口只能对5V工作电压的FPGA配置。 4 PORT1 该编程配置口是一通用下载口,可对任意工作电压的FPGA进行配置,缺点是必须通过“POWER”插口为GWCNF板外加5V工作电源。 3 J9 短路帽选插“S”对小于等于10K30的FPGA配置;短路帽选插“L”对大于10K30的FPGA配置。注意,无论所插的ROM为多大,每个ROM只能放置一个HEX配置文件。 4 J5 短路帽选插“ROM2”则选择左侧ROM中的文件进行配置;短路帽选插“ROM1” 则选择右侧ROM中的文件进行配置,若拔去短路帽,则可通过J1由外部控制选择。 5 J11 当ROM为华邦公司29C系列(或AD18地址信号设置于芯片第1脚的ROM),短路帽必须选插“W29”;而其他ROM(所有将AD18地址信号设置于芯片第31脚的ROM)则短路帽选插“W27”。 6 J4 ROM为28脚双列直插器件,短路帽选插“28P”;32脚的器件,短路帽选插“32P”。 芯片向底插入对齐。 7 J2 有三排3针座,若将3短路帽都插于左侧“MCU-CNTRL”,则ROM中的配置文件的选择由GWCNF板上的单片机和键B决定(如果ROM中含有多个配置文件);但若将3短路帽都插于右侧“OUD-CNTRL”,则ROM中的配置文件的选择由J3跳线选择或由用户自己的单片机电路通过J1口上的8针进行外部控制(这时J3和J5上的短路帽都需拔除)。 8 J3 当J2选择““OUD-CNTRL”时,通过J3短路帽的8种不同插法可分别将ROM中对应的配置文件下载进FPGA中。例如,设GWCNF上有ROM 27C4001,若希望将地址为:40000-4FFFF区域的配置文件下载进FPGA中,则可对J3的3个插座从上至下选插“0”、“0”、“1”,然后按一下复位键键A,此区域的文件即刻下载进FPGA中了。但也可以通过打开电源开关直接配置编程。 9 J1 若用户希望利用自己的单片机电路控制GWCNF板,以便实现“多任务重配置”功能,可通过J1口上的8针进行外部控制(这时J3和J5上的短路帽都需拔除),这样最多可以有16种选择,即可以只用一片FPGA发挥16片FPGA的功能! 12 POWER 5V工作电源座 13 键A 复位键,每按一次键,将对FPGA配置一次。但也可以通过打开电源开关直接配置编程。 14 键B 若将3短路帽都插于左侧“MCU-CNTRL”,则ROM中的配置文件的选择由GWCNF板上的单片机和键B决定,有键B控制发光管A、B、C,以选择配置文件的地址。 15 发光管 A、B、C 如果编程配置正确,此3个发光管会连续闪动,这时可以连续按动键B选择配置文件。A为高位,C为低位。若通过键B选择A亮、B亮、C不亮,即选择了“110”,即6,这时若按动键A复位,则将ROM中60000-6FFFF区域的配置文件下载进FPGA中了。 第八章 GW48-PK系统LCD液晶屏使用方法 第一节 GDM12864A LCM图形液晶显示模块的电路特性 一、GDM12864A 的电特性 配置于GW48-PK系统的LCD GDM12864A是带显示存储器的图形液晶显示列驱动控制器。它的特点是内置64×64位的显示存储器,显示屏上各像素点的显示状态与显示存储器的各位数据—一对应,显示存储器的数据直接作为图形显示的驱动信号。显示数据为“1”,相应的像素点显示;显示数据为“0“,相应的像素点就不显示。同时GDM12864A配备了一套显示存储器的管理电路和与计算机接口电路,允许计算机直接访问显示存储器,也就是说GDM12864A可以直接与计算机的总线连接。 GDM12864A 的主要特性为: ·拥有64×64位(512字节)的显示存储器,其数据直接作为显示驱动信号。 ·8位并行数据接口,适配M6800系列时序。 ·64路列驱动输出。 ·简单的操作指令 显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。 ·低功耗,在显示期间功耗最大为2mW。 ·宽电压工作 Vcc=2.7V~5.5V Vee=OV~-10V 二、模块特性 GDM12864A的接口电路定义如下表所示。 序号 符号 电平 状态 功能 1 GND 0V - 电源地 2 Vcc 5.0V - 逻辑电源正 3 V0 0~-5V - 液晶显示驱动电源 4 D/I H/L 输入 寄存器选择信号 7 R/W H/L 输入 读/写选择信号 8 E H/L 输入 使能信号 7 DB0 H/L 三态 数据总线(最低位) 8 DB1 H/L 三态 数据总线 9 DB2 H/L 三态 数据总线 10 DB3 H/L 三态 数据总线 11 DB4 H/L 三态 数据总线 12 DB5 H/L 三态 数据总线 13 DB6 H/L 三态 数据总线 14 DB7 H/L 三态 数据总线(最高位) 15 CS2 H 输入 片选2(高电平有效) 16 CS1 H 输入 片选1(高电平有效) 17 /RES L 输入 复位信号(低电平有效) 18 VEE - 输出 LCD驱动负电压 19 A 4.2V 输入 背光电源(+) 20 K 0V - 背光电源(-) GDM12864A接口信号中的两个片选信号的组合定义见下表。 CS1 CS2 GDM12864A 0 0 禁止使用 0 1 左区 1 0 右区 1 1 未选 三、 GDM12864A 的操作时序图 第二节 GDM12864A 图形液晶显示模块的软件特性 了解GDM12864A 图形液晶显示模块的电路特性后,要使用GDM12864A图形液晶显示模块还需要熟悉其软件特性,即GDM12864A 的指令功能,才能很好地应用图形液晶显示模块。GDM12864A 的指令功能非常简单,指令一览表如下表所示。 GDM12864A 指令表 指令名称 控制信号 控制代码 D/I R/W D7 D6 D5 D4 D3 D2 D1 D0 显示开头设置 0 0 0 0 1 1 1 1 1 D 显示起始行设置 0 0 1 1 L5 L4 L3 L2 L1 L0 页面地址设置 0 0 1 0 1 1 1 P2 P1 P0 列地址设置 0 0 0 1 C5 C4 C3 C2 C1 C0 读取状态字 0 1 BUSY 0 ON/OFF REST 0 0 0 0 写显示数据 1 0 数 据 读显示数据 1 1 数 据 GDM12864A 一共有七条指令,从作用上可分为两类。第一条和第二条指令为显示状态设置类;其余指令为数据读/写操作指令。下面详细解释各个指令的功能: HD61202操作流程图 · 读状态字(Status Read) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 0 1 BUSY O ON/OFF RESET 0 0 0 0 状态字是计算机了解GDM12864A 当前状态的唯一的信息渠道。状态字为一个字节,其中仅有3位有效位,它们是: BUSY 表示当前 GDM12864A 接口控制电路运行状态。BUSY=1表示 GDM12864A 正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0表示 GDM12864A 接口控制电路已处于“准备好”状态,等待计算机的访问。 ON/OFF 表示当前的显示状态。ON/OFF=l表示关显示状态,ON/OFF=0表示开显示状态。 RESET 表示当前 GDM12864A 的工作状态,即反映RST端的电平状态。当RST为低电平状态时,GDM12864A 处于复位工作状态,RESET=1。当RST为高电平状态时,GDM12864A 为正常工作状态,RESET=0。 在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,计算机对GDM12864A 的操作才能有效。因此计算机在每次对GDM12864A 操作之前,都要读出状态字判断BUSY是否为“0”。若不为“0”,则计算机需要等待,直至 BUSY=0为止。 · 显示开关设置(Display on/off) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 0 O 1 1 1 1 1 D 该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。D位为显示开/关的控制位。当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中 ON/OFF=0。当 D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中 ON/OFF=1。 · 显示起始行设置(Display Start Line) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 1 显示起始行(0~63) 该指令设置了显示起始行寄存器的内容。HD612O2U有64行显示的管理能力,该指令中 L5~LO为显示起始行的地址,取值在O~3FH(1~64行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。 · 页面地址设置[Set Page(X address)] RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 0 1 1 1 Page(0~7) 该指令设置了页面地址—X地址寄存器的内容。GDM12864A 将显示存储器分成8页,指令代码中P2~PO就是要确定当前所要选择的页面地址,取值范围为0~7H,代表第l~8页。该指令规定了以后的读/写操作将在哪一个页面上进行。 · 列地址设置(Set Y address) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 0 1 Y address(0~63) 该指令设置了Y地址计数器的内容,C5~CO=O~3FH(1~64)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必每次都设置一次。 页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读/写作了地址的选通。 · 写显示数据(Write Display Data) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 显 示 数 据 该操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。 · 读显示数据(Read Display Data) RS R/W DB7 DB7 DB5 DB4 DB3 DB2 DB1 DB0 显 示 数 据 该操作将GDM12864A 接口部的输出寄存器内容读出,然后列地址计数器自动加一。 DDRAM地址表 CS1=1 CS2=1 Y= 0 1 。。。 62 63 0 1 。。。 62 63 行号 X=0 ↓ X=7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 DB7 0 ↓ 7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 8 ↓ 55 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 DB0 ↓ DB7 56 ↓ 63 第三节 GDM12864A图形液晶显示模块的接口技术 由于 GDM12864A 组成的驱动控制系统的接口时序适配 M6800系列的读/写时序,所以在与Intel8080时序的计算机连接时需要有时序的转换。现以国内常用的8051系列单片机8031为例,说明GDM12864A模块接口技术。 内置GDM12864A 图形液晶显示模块与计算机的连接方式有两种,一种为直接访问方式,一种为间接控制方式。 一、直接访问方式 直接访问方式就是将液晶显示模块的接口作为存储器或 I/O设备直接挂在计算机总线上,计算机以访问存储器或I/O设备的方式操作液晶显示模块的工作。直接访问方式的接口实用电路如下图所示。在图中,计算机8031通过高位地址A11控制CS2;A10控制CS1;以选 直接访问方式的实用电路图 通液晶显示屏上各区的控制器 GDM12864A ;同时 8031用地址A9作为R/W信号控制数据总线的数据流向;用地址A8作为D/I信号控制寄存器的选择;E信号由8031的读信号RD和写信号WR合成产生。从而实现计算机对内置GDM12864A 图形液晶显示模块的电路连接。电位器用于显示对比度的调节。 二、间接控制方式 间接控制方式是计算机通过自身的或系统中的并行接口与液晶显示模块连接,如 8031的P1和P3口, 8255或Z80-PIO等并行接口芯片以及像74LS373类的锁存器等。计算机通过对这些接口的操作,以达到对液晶显示模块的控制。这种方式的特点是电路简单,控制时序由软件实现,可以实现高速计算机与液晶显示模块的接口。实用电路图如下图所示。在图中电路中以 8031的P1口作为数据口,P2.4为CSA, P2.3为CSB, P2.2为D/I,P2.1为R/W和P2.0为E等信号。电位器用于显示对比度的调节。 间接控制方式的实用电路 GDM12864A驱动子程序如下: CSA EQU P2.4 ;片选CSA CSB EQU P2.3 ;片选CSB D/I EQU P2.2 ;寄存器选择信号 R/W EQU P2.1 ;读/写选择信号 E EQU P2.0 ;使能信号 1.左区驱动子程序(GDM12864A的左区) (1)写指令代码子程序 PRMO: CLR CS2 ;片选设置为“01” SETB CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRM01: MOV P1,#OFFH ;P1口置”1” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRM01 ;判“忙”标志为“0”否,否再读 CLR R/W ;R/W=0 MOV P1,COM ;写指令代码 SETB E ;E=1 CLR E ;E=0 RET (2)写显示数据子程序 PRM1: CLR CS2 ;片选设置为“01” SETB CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRMll: MOV P0,#OFFH ;P1口置“1” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRM11 ;判“忙”标志为“0”否,否再读 SETB D/I ;D/I=1 CLR R/W ;R/W=0 MOV P0,DAT ;写数据 SETB E ;E=1 CLR E ;E=0 RET (3)读显示数据子程序 PRM2: CLR CS2 ;片选设置为“01” SETB CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRM21: MOV P0,#OFFH ;P1口置“1” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRM21 ;判“忙”标志为“0”否,否再读 SETB D/I ;D/I=1 MOV P0,#OFFH ;P1口置“0” SETB E ;E=1 MOV DAT,P0 ;读数据 CLR E ;E=0 RET 3.右区驱动子程序(GDM12864A的右区) (l)写指令代码子程序(右) PRRO: SETB CS2 ;片选设置为“10” CLR CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRR01: MOV P0,#OFFH ;P1口置“1” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRR01 ;判“忙”标志为“0”否,否再读 CLR R/W ;R/W=0 MOV P0,COM ;写指令代码 SETB E ;E=1 CLR E ;E=0 RET (2)写显示数据子程序(右) PRR1:SETB CS2 ;片选设置为“10” CLR CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRRll: MOV P0,#OFFH ;P1口置“1” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRRll ;判“忙”标志为“0”否,否再读 SETB D/I ;D/I=1 CLR R/W ;R/W=0 MOV P0,DAT ;写数据 SETB E ;E=1 CLR E ;E=0 RET (3)读显示数据子程序(右) PRR2: SETB CS2 ;片选设置为“10” CLR CS1 ; CLR D/I ;D/I=0 SETB R/W ;R/W=1 PRR21: MOV P0,#OFFH ;P1口置“l” SETB E ;E=1 MOV A,P0 ;读状态字 CLR E ;E=0 JB ACC.7,PRR21 ;判“忙”标志为“0”否,否再读 SETB D/I ;D/I=1 MOV P0,#OFFH ;P1口置“0” SETB E ;E=1 MOV DAT,P1 ;读数据 CLR E ;E=0 RET 在GDM12864A的应用时,显示屏被分为左右两个区,驱动子程序分别为上述的左区和右区的驱动子程序。 例 中文字符写入子程序 汉字显示是国内应用图形液晶显示模块的目的之一。由于GDM12864A 显示存储器的特性,所以不能将计算机内的汉字库提出直接使用,需要将其旋转90度后再写入。这里使用提取汉字软件PICKHZB.EXE,将所采的汉字从计算机内汉字库提取并旋转90度后生成专用的用户字库。其生成字库的格式是按列排列,每两个字节为一列,一个汉字占32字节。程序清单如下: CS1 EQU P2.3H ;端口定义 CS2 EQU P2.4H DI EQU P2.2H RW EQU P2.1H E EQU P2.0H X EQU 20H Y EQU 21H ZC EQU 22H LFT EQU 7FH ORG 0H AJMP START ORG 30H START: MOV 20H,#3EH ;关显示设置 ACALL WI INC 20H ;开显示设置 ACALL WI MOV 20H,#0C0H ;设置显示起始行为第一行 ACALL WI MOV X,#0 ;设置X为第1页 MOV Y,#0 ;列计数器Y=0 CLR LFT ;LCD屏幕(左) MOV DPTR,#HANG ;杭 ACALL HZ_1 MOV Y,#1 MOV DPTR,#ZHOU ;州 ACALL HZ_1 MOV Y,#2 MOV DPTR,#KANG ;康 ACALL HZ_1 MOV Y,#3 MOV DPTR,#XIN ;芯 ACALL HZ_1 MOV Y,#0 ;列计数器Y=0 SETB LFT ;LCD屏幕(右) MOV DPTR,#DIAN ;电 ACALL HZ_1 MOV Y,#1 MOV DPTR,#ZI ;子 ACALL HZ_1 MOV Y,#2 MOV DPTR,#GONG ;公 ACALL HZ_1 MOV Y,#3 MOV DPTR,#SI ;司 ACALL HZ_1 SJMP $ ;以下程序显示一个汉字 HZ_1: MOV ZC,#0 MOV A,#0B8H ;X addr页面地址暂存器设置 ACALL HZ_3 MOV ZC,#1 MOV A,#0B9H HZ_3: ADD A,X ; MOV 20H,A ACALL WI MOV A,Y SWAP A ADD A,#40H ;设置列计数器Y MOV 20H,A ACALL WI HZ_0: MOV R2,#16 ;取汉字字模 HZ_2: MOV A,ZC MOVC A,@A+DPTR MOV 20H,A MOV A,ZC ADD A,#2 MOV ZC,A JB LFT,HZ_5 ACALL WD1 SJMP HZ_6 HZ_5: ACALL WD2 HZ_6: DJNZ R2,HZ_2 RET RDY: CLR DI ;读状态标志 CLR RW SETB E MOV A,P0 ;读LCD状态 CLR E JB ACC.7,RDY ;检测BUSY位 RET WI: SETB CS1 ;写控制指令 SETB CS2 LCALL RDY ;检测BUSY位 CLR DI CLR RW MOV P0,20H ;向LCD写数据 SETB E ;使能信号E=1 CLR E ;使能信号E=0 CLR CS1 CLR CS2 RET WD1: SETB CS1 ;写显示数据(左) LCALL RDY ;检测BUSY位 SETB DI CLR RW MOV P0,20H ;输出数据 SETB E CLR E CLR CS1 RET WD2: SETB CS2 ;写显示数据(右) LCALL RDY SETB DI CLR RW MOV P0,20H ;输出数据 SETB E ;使能信号E=1 CLR E ;使能信号E=0 CLR CS2 RET ;汉字点阵“杭州康芯电子有限公司” hang: DB 08H,04H,10H,03H,0D0H,00H,0FFH,0FFH DB 90H,80H,10H,41H,08H,20H,0C8H,1FH DB 49H,00H,4EH,00H,48H,00H,0E8H,3FH DB 4CH,40H,08H,40H,00H,70H,00H,00H ZHOU: DB 80H,00H,70H,40H,00H,30H,0FFH,0FH DB 00H,00H,10H,00H,60H,00H,00H,00H DB 0FEH,3FH,00H,00H,10H,00H,60H,00H DB 00H,00H,0FFH,0FFH,00H,00H,00H,00H KANG: DB 00H,40H,00H,30H,0FCH,0FH,44H,40H DB 54H,23H,54H,15H,54H,49H,55H,18H DB 0FEH,7FH,54H,05H,54H,09H,54H,11H DB 0F4H,29H,46H,64H,44H,20H,00H,00H XIN: DB 04H,08H,04H,07H,04H,00H,04H,3FH DB 1FH,40H,04H,40H,44H,40H,84H,40H DB 04H,43H,04H,40H,1FH,40H,04H,40H DB 04H,70H,06H,01H,04H,0EH,00H,00H DIAN: DB 00H,00H,0F8H,07H,48H,02H,48H,02H DB 48H,02H,48H,02H,0FFH,3FH,48H,42H DB 48H,42H,48H,42H,48H,42H,0FCH,47H DB 08H,40H,00H,70H,00H,00H,00H,00H ZI: DB 80H,00H,80H,00H,82H,00H,82H,00H DB 82H,00H,82H,40H,82H,80H,0E2H,7FH DB 0A2H,00H,92H,00H,8AH,00H,86H,00H DB 80H,00H,0C0H,00H,80H,00H,00H,00H YOU: DB 04H,04H,04H,02H,04H,01H,84H,00H DB 0E4H,0FFH,3CH,09H,27H,09H,24H,09H DB 42H,09H,42H,49H,24H,89H,0F4H,7FH DB 42H,00H,06H,00H,04H,00H,00H,00H XIAN: DB 00H,00H,7FH,0FFH,02H,08H,22H,10H DB 0DAH,08H,06H,07H,00H,00H,0FEH,0FFH DB 92H,24H,92H,42H,92H,42H,92H,14H DB 0FFH,22H,02H,61H,00H,20H,00H,00H GONG: DB 00H,01H,00H,01H,80H,00H,40H,30H DB 30H,28H,0CH,42H,00H,23H,0C0H,20H DB 06H,20H,18H,28H,20H,30H,40H,60H DB 80H,00H,80H,01H,80H,00H,00H,00H SI: DB 10H,00H,10H,00H,92H,3FH,92H,10H DB 92H,10H,92H,10H,92H,10H,92H,10H DB 0D2H,3FH,9AH,00H,12H,40H,02H,80H DB 0FFH,7FH,02H,00H,00H,00H,00H,00H � � EMBED PBrush ��� � 附图2-2 GWAK30+/50+上并行口和缓冲电路 10 59 _1103231427.doc GDM12864A LCM
本文档为【EDA实验讲义_GK_PK】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_281382
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:0
分类:互联网
上传时间:2018-09-03
浏览量:6