1
Chapter 1: Introduction and Overview Chapter 2: Switches, Buttons, and Knob Chapter 3: Clock Sources
Chapter 4: FPGA Configuration Options Chapter 5: Character LCD Screen Chapter 6: VGA Display Port Chapter 7: RS-232 Serial Ports
Chapter 8: PS/2 Mouse/Keyboard Port
Chapter 9: Digital to Analog Converter (DAC) Chapter 10: Analog Capture Circuit
Chapter 11: Intel StrataFlash Parallel NOR Flash PROM Chapter 12: SPI Serial Flash Chapter 13: DDR SDRAM
Chapter 14: 10/100 Ethernet Physical Layer Interface Chapter 15: Expansion Connectors
Chapter 16: XC2C64A CoolRunner-II CPLD Chapter 17: DS2432 1-Wire SHA-1 EEPROM
2
Chapter 1:Introduction and Overview
Spartan-3E入门实验板使设计人员能够即时利用Spartan-3E系列的完整平台性能。
设备支持:Spartan-3E、CoolRunner-II
关键特性:Xilinx 器件: Spartan-3E (50万门,XC3S500E-4FG320C), CoolRunner™-II (XC2C64A-5VQ44C)与Platform Flash (XCF04S-VO20C)
时钟:50 MHz晶体时钟振荡器
存储器: 128 Mbit 并行Flash, 16 Mbit SPI Flash, 64 MByte DDR SDRAM
连接器与接口: 以太网10/100 Phy, JTAG USB下载,两个9管脚RS-232串行端口, PS/2类型鼠标/键盘端口, 带按钮的旋转编码器, 四个滑动开关,八个单独的LED输出, 四个瞬时接触按钮, 100管脚hirose扩展连接端口与三个6管脚扩展连接器
显示器: VGA显示端口,16 字符- 2 线式 LCD
电源:Linear Technologies 电源供电,TPS75003三路电源管理IC 市场: 消费类, 电信/数据通信, 服务器, 存储器
应用: 可支持32位的RISC处理器,可以采用Xilinx的MicroBlaze 以及PicoBlaze嵌入式开发系统;支持DDR接口的应用;支持基于Ethernet网络的应用;支持大容量I/O扩展的应用。
Choose the Starter Kit Board for Your Needs
Spartan-3E FPGA Features and Embedded Processing Functions
Spartan3-E FPGA 入门实验板具有Spartan3-E FPGA系列突出独特的特点和为嵌入式处理发展与应用提供了很大的方便。该板的特点如下:
Spartan3-E特有的特征:并行NOR Flash配置;通过并行NOR Flash PROM 实现FPGA的多种配置方式
嵌入式系统:MicroBlaze™ 32-bit 嵌入RISC处理器;PicoBlaze™ 8-bit 嵌入控制器;DDR存储器接口
Learning Xilinx FPGA, CPLD, and ISE Development Software Basics
Spartan3-E FPGA 入门实验板比其他的入门实验板先进、复杂。它是学习FPGA或CPLD设计和怎样运用ISE软件的基础。
Advanced Spartan-3 Generation Development Boards
入门实验板示范了MicroBlaze™ 32-bit 嵌入式处理器和EDK的基本运用。其更先进的地方
3
在于配了额外的外设和FPGA逻辑,包括SP-305入门实验板。
Key Components and Features
主要特征:1)XC3S500E(Spartan-3e):多达232个用户I/O口;320个FPGA封装管脚;超过10000个逻辑单元。2)4Mbit的Flash 配置PROM;3)64个宏单元的XC2C64A CoolRunner CPLD;4)64 MByte (512 Mbit) of DDR SDRAM, ×16 数据接口, 100+ MHz;5)16 MByte (128 Mbit) of 并行NOR Flash (Intel StrataFlash):FPGA配置存储;MicroBlaze代码存储/映射;6)16 Mbits of SPI serial Flash (STMicro):FPGA配置存储;MicroBlaze代码存储/映射;7)16字符-2线式LCD显示屏;8)PS/2鼠标或键盘接口;9)VGA显示接口;10)10/100以太PHY(要求FPGA内部具有以太MAC);11)2个9-管脚的RS-232端口(DTE和DCE两种类型);12)FPGA/CPLD下载/调试USB接口;13)50Hz时钟晶振;14)1线式的SHA-1位流复制保护串行EEPROM;15)Hirose FX2扩展连接口;16)3个管脚扩展连接器;17)4个SPI-DAC转换器输出管脚;18)2个SPI带可编程增益ADC输入管脚;19)ChipScope™软件调试接口;20)带按钮的旋转编码器;21)8个单独的LED输出;22)4个滑动开关;23)4个按钮开关;24)SMA时钟输入;25)8管脚插槽辅助晶振
Design Trade-Offs
Configuration Methods Galore!
FPGA的一个典型应用就是使用单永久性存储器来存储配置信息。为了说明新的Spartan-3E的性能,入门实验板有3个不同的配置存储源,这需要一起正确使用。额外的配置功能使入门实验板比典型的Spartan-3E应用更复杂。
入门实验板包括JTAG可编程USB接口。片上的线路简化了器件的编程过程。在典型的应用中,JTAG编程硬件在片外或在一个单独的编程模块上,如XILINX USB电缆平台。
Voltages for all Applications
入门实验板利用TI公司的TPS75003芯片(专门为Spartan-3E的FPGA提供电源)作为三态输出调整仪。该调整仪适用多种FPGA的应用。但是,入门实验板包括DDR SDRAM,这需要它自身快速的电流来供给。简单地说,带USB接口的JTAG下载方式解决了需要单独配备1.8V电源的问题。
Chapter 2:
Switches, Buttons, and Knob
Slide Switches
Locations and Labels
入门实验板具有4个滑动开关,如图2.1所示。
4
Operation
当开关关上或上拉时, FPGA的管脚连接3.3V电源,即逻辑高电平。断开或下拉时,FPGA管脚接地,逻辑低电平。一般开关的机械闭合时间为2ms,这里没有使用活动的回弹线路,尽管这种线路可以很容易地加到FPGA上。
UCF Location Constraints
图2.2为4个滑动开关提供了UCF约束、I/O口分配和I/O口标准。这里没有用到上拉电阻。但是,当开关处于中间转换位置时,它被定义为输入。
Push-Button Switches
Locations and Labels
入门实验板有4个瞬时按钮开关,如图2.3所示。BTN_NORTH、BTN_EAST、BTN_SOUTH、and BTN_WEST。
5
注:a 所有的BTN_*按钮输入需要内部的下拉电阻;b 在一些FPGA应用中BTN_SOUTH作为软复位使用。
Operation
按下按钮,FPGA接到3.3v电源,如图2.4。没有按下时,鉴于内部下拉电阻的原因,FPGA管脚产生一个逻辑低电平。图2.5说明了怎样去定义下拉电阻的UCF。这里按钮上没有活动的回弹线路。
在一些应用中,BTN_SOUTH按钮开关充FPGA选择复位功能的软复位。
UCF Location Constraints
图2.5为4个按钮开关提供了UCF约束、I/O口分配和I/O口标准。并为每个输入管脚定义下拉电阻。
Rotary Push-Button Switch
6
Locations and Labels
如图2.3所示,旋转按钮处4个分开的按钮的中间。该开发产生3个输出:2个轴状编码输出ROT_A和ROT_B。中心的按钮是ROT_CENTER。
Operation
旋转按钮有2个不同的功能。只要轴柄一转,按钮就旋转并输出值。该轴也可以按下,和按钮开关一样。
Push-Button Switch
按下握柄或按钮,则FPGA接通3.3V,如图2.6所示。使用内部的下拉电阻产生低电平。图2.9说明了怎样去定义UCF的下拉电阻。这里按钮上没有活动的回弹线路。
Rotary Shaft Encoder
首先,旋转编码更像是个连接到中心的凸轮。旋转轴柄可操作两个按钮开关,如图2.7所示。
选择一个开关连接地,产生低电平。当开关开时,FGPA内部的上拉电阻将该信号拉为高电平。图2.9是对其UCF约束的描述,怎样去定义上拉电阻。
FPGA电路很方便地译码A和B的输入信号,但考虑到开关的机械特性,转换时会产生输入噪音。如图2.8所示,噪音错误地报告额外的旋转事件或甚至报告旋转相反的方向。
7
UCF Location Constraints
Discrete LEDs
Locations and Labels
入门实验板在滑动开关的上面有8个独立的贴片LED。
8
Operation
LED一端接地,另一端通过390欧的限流电阻接到Spartan-3E上。要点亮一个LED,向相应的控制位置高。
UCF Location Constraints
Chapter 3: Clock Sources
Overview
图3.1所示,入门实验板支持3个主时钟输入源。 1)包括一个50MHz的时钟晶振
2) 通过SMA连接器,时钟可以板外供应。反之,FPGA也可以提供时钟信号或其它高速信号给SMA连接器
3)分列式8-DIP时钟晶振插槽
9
Clock Connections
每个时钟的输入直接连到Bank0的输入全局缓冲I/O。表3.1所示,每个时钟输入也可以连接到相应的DCM。
Voltage Control
FPGA的I/O Bank0的供给电压由跳线JP9控制。因此,这些时钟源也是由JP9控制的。默认情况下,JP9置为3.3v。板上的晶振是3.3V的,如果JP9为2.5V,晶振的工作有可能达不到预期的效果。
50 MHz On-Board Oscillator
50MHz的晶振占空比为40%~50%之间。其精度为±2500Hz或±50ppm。
Auxiliary Clock Oscillator Socket
如果FPGA需要除了50MHz外的频率,可以使用该8管脚的插槽。另外,也可以使用FPGA的DCM来产生,或者从板上的50MHz晶振结合其它频率来获得。
10
SMA Clock Input or Output Connector
连接输入时钟信号到SMA连接器可以从外部提供一个时钟。FGPA也可以在SMA上产生一个单端的时钟输出信号或高速信号给外部器件。
UCF Constraints
Location
Clock Period Constraints
Chapter 4:
FPGA Configuration Options
入门实验板支持多种FPGA的配置方法:
通过JTAG、USB接口直接将设计下载到FPGA。板上的USB-JTAG逻辑也提供对Platform Flash PROM 和 Xilinx XC2C64A CPLD的在线编程。
对板上的4 Mbit Xilinx XCF04S serial Platform Flash PROM进行编程,然后采用主串行模式对Platform Flash PROM上的存储信息配置到FPGA。
对板上的16 Mbit ST Microelectronics SPI serial Flash PROM进行编程,然后采用SPI模式对SPI serial Flash PROM上的存储信息配置到FPGA。
对板上的128 Mbit Intel StrataFlash parallel NOR Flash PROM进行编程,然后采用BPI Up或BPI Down对StrataFlash parallel NOR Flash PROM上的存储信息配置到FPGA。接着,可以采用Spartan-3E FPGA’s MultiBoot 模式以两种不同的配置方式对一个FPGA进行轮流下载。
图4.1给出了USB下载/编程接口和永久存储器的位置。图4.2是多种配置方式的一些细节内容。
11
当上电或PROG按钮被按下时,跳线的配置方式决定了FPGA采用哪种配置方式。 当FPGA成功配置时,DONE管脚的LED亮。
4 Mbit Xilinx Platform Flash PROM为FPGA的JTAG提供了一个简单的可编程配置存储单元。来自Platform Flash PROM的FPGA配置采用主串行模式。
采用BPI Up、BPI Down或MultiBoot配置方式以及StrataFlash parallel Flash PROM对FPGA进行下载时,64-macrocell XC2C64A CoolRunner II CPLD为其提供了额外的存储空间。CPLD 由
12
用户自己编程。
Configuration Mode Jumpers
如表4.1所示,由J30的设置方式来控制FPGA的配置方式。
PROG Push Button
PROG按钮,迫使FPGA进行重新配置。只要按下该按钮,FPGA就重新进行配置。
DONE Pin LED
13
当FPGA成功配置时,DONE管脚的LED亮,如果不亮说明配置失败。
Programming the FPGA, CPLD, or Platform Flash PROM via USB
正如图4.1所示,入门实验板包含了内嵌式USB可编程逻辑和B型连接器的USB接口。通过USB电缆可将其连到主机的iMPACT可编程软件对FPGA、 Platform Flash PROM或CPLD进行直接编程。对于并行或串行的Flash PROM并暂时不支持直接编程。
Connecting the USB Cable
实验板包含一个标准的USB A/B型的电缆,如图4.3所示。
其中,A 型的连接口接到PC上,B型接口接到板上。上电时,Windows操作系统通过安装相应的驱动软件即可识别。
绿色的LED亮表示USB连接正常。
Programming via iMPACT
通过iMPACT和USB电缆将编译成功的FPGA设计下载到FPGA上。
将USB电缆连到板子并给其上电,然后双击Project Navigator 的 Configure Device (iMPACT),如图4.5所示。
14
只要板连接正确,iMPACT就会自动识别JTAG编程文件,如图4.6所示。如果没有即使识别出来,可以点击连接链的第一个芯片,然后右击FPGA,选择Assign New Configuration File,如图4.6所示。
如果FPGA的源配置文件采用默认的启动时钟——CCLK,iMPACT会给出警告提示,如图4.7。该警告可以忽略。采用JTAG下载时,iMPACT 必须的启动时钟必须改为TCK JTAG时钟源。
15
开始编程FPGA,右击FGPA,选择Program。IMPACT在编程时会自动报告进程状态。编程时间的长短取决于USB的接口 和IMPACT的设置。
当FPGA编程成功时,IMPACT会显示成功,如图4.9所示。此时,可以在板上执行FPGA了,还有DONE管脚点亮。
16
Programming Platform Flash PROM via USB
板上的USB-JTAG同样可以对Xilinx XCF04S serial Platform Flash PROM进行编程。以下是如何产生PROM文件和如何下载到FPGA上的步骤。
Generating the FPGA Configuration Bitstream File
在产生PROM文件之前,要先生成FPGA位流文件。从外部的PROM下载到它自身时,FPGA提供了一个输出时钟—CCLK。FPGA内部的晶振CCLK的振动频率较慢,大约1.5MHz。大多数的外部PROM支持高频率时钟。增加CCLK的频率等同于减少FPGA的配置时间。Xilinx XCF04S Platform Flash支持25 MHz的CCLK频率。如图4.10所示。
17
接着如图4.11所示进行相应的操作。
18
接下来如图4.12所示。
Generating the PROM File
19
产生程序文件之后,进行如图4.13所示的操作。
启动IMPACT之后,双机PROM File Formatter,如图4.14所示。
接下来如图4.15、4.16、4.17、4.18进行相应的操作。
20
21
22
PROM成功配置后,IMPACT显示位流文件占用PROM的存储空间,如图4.19所示。
23
要生成可执行PROM文件,点击Operation/Generate File,如图4.20所示。
IMPACT将指出PROM文件成功产生,如图4.21所示。
24
Programming the Platform Flash PROM
下面是通过USB-JTAG连接电路将PROM文件编程到Platform Flash PROM的简要步骤。具体如图4.22~4.25所示。
25
26
在编程之前,如图4.26选择编程选项。检查Erase Before Programing选项,在编程之前完全擦除Platform Flash PROM,确保没有残余数据。Verify选项用来检查PROM正确编程和匹配下载配置位流文件。一般推荐这两个选项,即使是增加编程时间。
Load FPGA选项在Platform Flash PROM编程后立即强制重新配置FPGA。FPGA的配置模式必须选主串行模式(见表4.1),点击OK完成。
IMPACT会指出编程成功与否。如果编程成功而Load FPGA选项没有检查,按下PROG_B按钮空开关强制FPGA从Platform Flash PROM重新进行配置。如果FPGA成功配置,DONE LED 点亮。
27
Chapter 5
Character LCD Screen
Overview
入门实验板显著的特征是2线16字符液晶显示器LCD。尽管LCD支持8位的数据接口,为了与其它的XILINX的开发板保持兼容并且尽可能减少针脚数,FPGA仅通过4位的数据接口线控制LCD,如图5.1所示。
LCD通过使用ASCII标准和自定义字符可以有效地显示多种信息。但是,这些显示速度并不是很快。每半秒扫描一次以测试实际清晰度的界限。与50MHz时钟频率相比,这样的显示速度是慢的。PicoBlaze 处理器可以有效地控制显示时间和显示内容。
Character LCD Interface Signals
表5.1给出了字符LCD接口的接口信号。
Voltage Compatibility
字符LCD的供电电压是+5V。FPGA的I/O口信号的电压是3.3V。但是,FPGA的输出电平是通过LCD来识别是有效的低电平还是高电平。LCD控制器接收5V TTL信号电平,FPGA输出3.3V的LCMOS以满足5V TTL电压要求。
数据线上的390欧串联电阻,当LCD驱动一个逻辑高电平时,其用来防止了FPGA和SrtataFlsah I/O管脚的超负载。当LCD_RW为高时,LCD驱动数据线。在绝大多数应用中,LCD
28
作为只读外围设备,几乎没有从显示器读数据。
Interaction with Intel StrataFlash
如图5.1所示,4根LCD数据线与StrataFlash 数据线SF_D<11:8>复用。正如表5.2所示,LCD/StrataFlash 存储器依赖于设计而交互使用。当存储器失能时(SF_CE0=1),FPGA用作全读/写通道给LCD。相反,当LCD读失能时(LCD_RW=0),FPGA用作全读/写通道给存储器。
要是StrataFlash 存储器为字节宽度×8模式(SF_BYTE=0),FPGA作为全同步读/写通道给LCD和存储器。在字节模式下,存储器没有用到SF_D<15:8>数据线。
UCF Location Constraints
LCD Controller
该2×16字符LCD内嵌一个Sitronix ST7066U图形控制器。其功能与下面几个一样:Samsung
29
S6A0069X or KS0066U、Hitachi HD44780和SMOS SED1278。
Memory Map
该控制器有三个内部存储空间,每个都有专门用途。送数据给这些空间之前必须初始化。 1)DD RAM
显示数据RAM(DD RAM)存储字符编码。绝大多数应用中,都是与DD RAM相结合的。存储在DD RAM中的字符编码所涉及的特定的字符位图要么存在CG ROM字符设置中,要么存在用户自定义的CG RAM的字符设置中。
图5.3给出了显示器32位字符位置的默认地址。字符的最上行存储在地址0X00与0X0F之间。第二行的字符存储在地址0X40与0X4F之间。
从物理上讲,DD RAM一共有80个字符位置,每行有40个字符。位置0X10到0X27和0X50到0X67之间的地址用来存储其它非显示数据。此外,这些位置也可以存储只有使用控制器的显示移位功能才能显示的字符。
往DD RAM读或写之前,DD RAM 地址命令得初始化地址计数器。写DD RAM数据使用写数据到CG RAM 或DD RAM命令,读DD RAM 使用从CG RAM或DD RAM命令读数据。
DD RAM地址计数器要么在读或写之后保持常数,要么自动增加1或自动减1。 2) CG ROM
字符产生器ROM(CG ROM)包括每个事先定好的字符的字体位图,这样LCD屏才能显示,如图5.4。字符编码存储在DD RAM 中,每个字符的位置与CG ROM的位置按顺序对应。例如,0X53的一个16进制的字符编码存储在DD RAM中的位置显示字符是“S”。0X53最上面的轻咬位(高半位)等同于DB[7:4]=0101和最低的轻咬位(低半位)等同于DB[3:0]=0011。如图5.4所示,字符“S”就显示在屏幕上了。
英语/罗马字符存储在CG ROM相应的ASCII编码地址中。 字符ROM存储ASCII英文字符和日本字符。
控制器同样提供了8位自定义字符位图,存储在CG RAM中。这些8位的自定义字符编码显示时存储在DD RAM 的0X00与0X07之间。
30
3)CG RAM
字符产生器RAM(CG RAM)提供空间给8位的自定义字符位图。每个自定义字符位由8行位图的5个点组成,如图5.5所示。
往CG RAM读或写之前CG RAM 地址命令得初始化地址计数器。写CG RAM数据使用写数据到CG RAM 或DD RAM命令,读CG RAM 使用从CG RAM 或DD RAM命令读数据。CG RAM地址计数器要么在读或写之后保持常数,要么自动增加1或自动减1。
图5.5举了个例子,产生一个特殊的西洋跳棋盘字符。自定义字符存储在第四CG RAM字符位置中,当DD RAM的位置是0x03时,其显示。写自定义字符时,使用设置CG RAM地址命令初始化CG RAM地址。前三行的地址位对应自定义字符位。后三行位对应字符地址的行地址。写数据到CG RAM 或DD RAM命令用来写每个字符位行。“1”表示点亮。“0”表示熄灭。只有低5位的数据被用到。高三位的数据与位置无关。第8行的数据位一般为0以适于指针之用。
31
Command Set
表5.3简要的说明了LCD控制器的命令和位的定义。由于该显示屏是4位操作,每8位命令被送到2个4位的轻咬位(2个半位)。高半位先送,低半位后送。
1) 失能
如果LCD_E使能信号为低,所有其它输入LCD信号全被忽视。 2)清屏
清屏后指针返回到原始位置——最左上角。该命令写一个空白内容(ASCII/ANSI字符编码为0x20)给所有的DD RAM 地址。DD RAM的0X00地址计数器置0。清除所有的选择设置。I/D控制位置1(地址自动增加模式)。 执行时间:82us~1.64ms 3)返回指针原始位
32
指针返回原始位——最左上角。DD RAM的内容不受影响。所有的显示被移到原始位,如图5.3所示。DD RAM的0X00地址计数器置0。如果移位,显示返回原始状态。指针或光标移到字符位的最左上角。 执行时间:40us~1.6ms
4)进入模式设置
设置指针移动的方向,并规定是否移动显示。在读和写数据时,这些操作就完成了。 执行时间:40us
在每次写数据给CG RAM或DD RAM或从CG RAM 或DD RAM 读数据后,该位的DD RAM和CG RAM地址计数器要么自动增加1要么自动减少1.指针或光标的位置随之移动。
1) 显示关/断
显示关或断,控制所有的字符、指针和指针位置的字符光标。 执行时间:40us
指针使用字符最底行的5个点。指针出现在显示字符的下面。
2) 指针和显示移动
移动指针和显示并不改变DD RAM 的内容。移动指针位置或显示往左或往右时并不需要写或读显示数据。
指针的位置功能是为了修改个别的字符,或向左或右滚动窗口来显示存储在DD RAM 中的额外数据,可以移到每行的第16个符。当它移到第一行的第40个字符之处时,指针自动移到第二行。两行的显示移动在同一时间进行。
当显示数据重复移动时,两行水平移动。第二行不会移到第一行。
33
执行时间:40us
3) 功能设置
设置接口数据的长度,每行显示的个数,字符的字体。入门实验板支持单功能设置,其值为0X28。
执行时间:40us 7)设置CG RAM地址
设置CG RAM的初始地址。该命令后,以后所有往显示屏的读或写操作的数据来自或去往CG RAM。
执行时间:40us 8)设置DD RAM 地址
设置DD RAM的初始地址。该命令后,以后所有往显示屏的读或写操作的数据来自或去往DD RAM。
执行时间:40us 9)读忙标志和地址
读忙标志(BF)用来判断内部操作是否在进行,并读当前地址计数器的内容。
BF=1说明内部操作在进行。下个指令不被接收直到BF被清0或直到当前指令达到最大的执行时间。
该命令返回当前地址计数器的值。地址计数器为CG RAM和DD RAM所用。具体内容取决于最新公布的设置CG RAM地址或设置DD RAM设置命令。
执行时间:1us
10)写数据给CG RAM或DD RAM
要是该命令在设置DD RAM 地址命令之后,则写数据给DD RAM;或是该命令在设置CGRAM 地址命令之后,则写数据给CGRAM。根据进入设置模式,在写操作之后,地址自动加1或自动减1。进入设置模式同样决定显示移动。
执行时间:40us
11)从CG RAM或DD RAM读数据
要是该命令在设置DD RAM 地址命令之后,则从DD RAM读数据;或是该命令在设置CGRAM 地址命令之后,从CG RAM读数据。根据进入设置模式,在写操作之后,地址自动加1或自动减1。进入设置模式同样决定显示移动。
执行时间:40us
Operation
Four-Bit Data Interface
该板使用4位数据接口给字符LCD。图5.6说明了向LCD写操作建立、保持允许的最小时间以及使能脉冲对时钟(50MHz 或T=20ns)的偏移时间。
34
DF_D<11:8>的数据值,寄存器选择信号(LCD_RS)以及读/写(LCD_RW)控制信号必须建立并在使能信号LCD_E转向高电平之前至少稳定40ns。使能信号必须保留高电平230ns或更长时间——等于或超过12时钟周期(50MHz)。
在许多应用中,LCD_RW信号可以永远置低,因为FPGA一般不会从显示屏读取数据。
Transferring 8-Bit Data over the 4-Bit Interface
在初始化显示屏和建立通信之后,所有的命令和数据以8位形式传送给字符显示屏——用2个连续的4位传送。每个8位传送必须分为2个4位,其间隔时间至少1us,如图5.6所示。先传高半位,再传低半位。一个8位的写操作在下个通信之前必须间隔至少40us。在清屏命令之后,该延时必须增至1.64ms。
Initializing the Display
上电后,显示屏必须初始化建立所需的通信协议。该初始化步骤简单,完全适合高效的8位PicoBlaze 嵌入式控制器。初始化之后,PicoBlaze 控制器除了简单驱动显示屏外,还用来更为复杂的控制或计算。
1) 上电初始化
初始化的第一步骤是建立FPGA与LCD的4位的数据接口,具体如下:
A:等待15ms或更长,尽管FPGA完成配置后显示屏一般处于准备就绪状态。在50MHz时,15ms时间等于750000时钟周期。
B:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。 C:等待4.1ms或更长,即在50MHz时,205000时钟周期。 D:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。 E:等待100us或更长,即在50MHz时,5000时钟周期。 F:写SF_D<11:8>=0x3,LCD_E保持高电平12时钟周期。 G:等待40us或更长,即在50MHz时,2000时钟周期。 H:写SF_D<11:8>=0x2,LCD_E保持高电平12时钟周期。 I:等待40us或更长,即在50MHz时,2000时钟周期。
35
2) 显示屏配置
上电初始化完成后,4位的数据接口就建立了。下一步就是配置显示屏了: A:发一个功能设置命令,0x28,配置显示屏。
B:发一个进入模式命令,0X06,设置显示屏自动增地址指针。 C:发一个显示开/断命令,0x0c,开显示屏并失能指针和光标。 D:最后,发清屏命令,此后等待至少1.64ms(82000时钟周期)。
Writing Data to the Display
写数据给显示屏,指定初始地址,紧接着是一个或多个数据值。写任何数据之前,发送一个设置DD RAM地址命令给DD RAM中指定的初始7位地址。见图5.3所示。
使用写数据给显示屏使用CG RAM 或DD RAM命令。8位数据值通过查表地址送给CG ROM或CG RAM,如图5.4所示。CG ROM 或CG RAM中存储的位图驱动5×8点阵给相应的字符。
如果地址计数器配置为自动增1,正如前面所说的,这种应用方法可以次序写多个字符编码,每个字符自动存储并显示在下个位置。
继续写字符,但是,在第一显示行的最后停止。剩余的数据不会自动在第二行显示,因为DD RAM的映射从第一行到第二行并不是连续的。
Disabling the Unused LCD
如果FPGA的应用不使用LCD显示屏,置低LCD_E管脚,失能它。同样,置低LCD_RW管脚,阻止LCD屏回传数据。
Chapter 6:VGA Display Port
入门实验板通过DB15连接器输出一个VGA显示端口。该端口通过标准的监视电缆直接连到PC监视器或平板LCD上。如图6.1所示,VGA连接器在板上的最左端。
36
FPGA通过串联电阻直接驱动5个VGA信号。每个颜色信号串一个电阻,每位的颜色信号分别是VGA_RED、VGA_BLUE、VGA_GREEN。每个电阻与终端的75欧电缆电阻相结合,确保颜色信号保持在VGA规定的0V~0.7V之间。VGA_HSYNC和VGA_VSYNC信号使用LVTTL或LVCMOS3I/O标准驱动电平。通过VGA_RED、VGA_BLUE、VGA_GREEN置高或低来产生8中颜色,如表6.1所示。
VGA信号的时序由视频电气标准委员会(VESA)规定。以下提供的VGA系统和时序信息作为例子来说明FPGA在640×480模式下是如何驱动VGA监视器的。
Signal Timing for a 60 Hz, 640x480 VGA Display
VGA显示器基于CRT,使用调幅模式,移动电子束(或阴极射线)在荧光屏上显示信息。LCD使用矩阵开关给液晶加压,在每个像素点上通过液晶来改变光的介电常数。尽管下面的描述仅限于CRT,LCD已经发展到可以同CRT使用同样的时序信号了。因此,下面的讨论均适合CRT和LCD。
在CRT显示器中,电流的波形通过蹄形磁铁产生磁场,使得电子束偏转,光栅在显示屏上横向显示,水平方向从左至右,垂直方向从上至下。如图6.2所示,当电子束向正方向移动时,信息才显示,即从左至右、从上至下。如果电子束从后返回左或顶边,显示屏并不显示任何信
37
息。在消隐周期——电子束重新分配和稳定于新的水平或垂直位时,丢失了许多信息。
显示协议定义了电子束的大小以及通过显示屏的频率,该频率是可调的。
现在的VGA显示屏支持多种显示协议,VGA控制器通过协议产生时序信号来控制光栅。控制器产生同步脉冲TTL电平来设置电流通过偏转磁铁的频率,以确保像素或视频数据在适当的时间送给电子枪。
视频数据一般来自重复显示存储器中一个或多个字节——它们被分配到每个像素单元。入门实验板使用每个像素中的3位,产生表6.1中可能的一种颜色。控制器指定视频数据缓冲器以备电子束通过显示屏。然后,控制器接收并利用视频数据在适当的时间显示,电子束移动到指定的像素点。
根据图6.2所示,VGA控制器产生水平同步时序信号(HS)和垂直同步时序信号(VS),调节在每个像素时钟视频数据的传送。像素时钟定义了显示像素信息的有效时间段。VS信号定义显示的更新频率,或刷新屏幕信息的频率。最小的刷新频率是取决于显示器的亮度和电子束的强度,实际频率一般在60~120Hz之间。给定的刷新频率的水平线的数量定义了水平折回频率。
VGA Signal Timing
表6.2的时序信号是640×480,像素时钟25Mhz,刷新频率60Hz±1。图6.3说明了每个时序的联系。同步脉冲的时序宽度(TPW)和前后门拱的间隔TFP和TBP)基于观察多种VGA的显示屏的结果。前后门拱的间隔是前后同步脉冲时间。在这些时段信息不能显示。
38
39
一般来说,时钟计数器通过像素时钟来控制水平时序信号。译码计数器的值产生HS信号。在指定的行,计数器产生当前像素显示的位置。
一个独立的计数器产生垂直时序信号。垂直同步计数器在每个HS脉冲信号来临时自动加1,译码值产生VS信号。计数器产生当前显示行。这两个计数器从地址到显示缓冲器连续计数。例如,入门实验板的DDR SDRAM 提供了一个足够的显示缓冲区。
在HS脉冲的开始和VS脉冲的开始没有具体规定相对的时序关系。因此,计数器被分配到简单格式的视频RAM地址,或分配到同步脉冲产生器的最小译码逻辑。
UCF Location Constraints
图6.4提供了VGA显示端口的UCF约束,包括I/O口管脚分配和I/O口使用标准,输出摆率和输出驱动电流。
40
Chapter 7:RS-232 Serial Ports
Overview
图7.1所示,入门实验板有2个RS-232串口:母口DB9 DCE和公口DTE连接器。DCE口通过标准的串口电缆直接连到PC和工作站上。没有经过调制解调器或交换电缆不能用。
DTE连接器用来控制其他的RS-232外围设备,如调制解调器、打印机或通过DCE连接器完成简单的环回测试。
图7.1给出了FPGA和2个DB9连接器之间的连接。FPGA使用LVTTL或LVCMOS电平提供串行数据给Maxim 器件——用来电平转换的,以满足RS-232电压的电平。反之,Maxim 器件转换相应的LVTTL电平以满足RS-232串行输入数据给FGPA。在Maxim与FPGA的RXD管脚之间串联一个电阻,以保护外部逻辑干扰。
连接器不支持硬件流控制。DCD、DTR和DSR信号连接一起,如图7.1所示。同样,端口的RTS和CTS信号连接在一起。
UCF Location Constraints
图7.2和7.3 分别为RS-232的DTE和DCE端口提供了UCF约束,包括I/O口管脚分配和I/O口使用标准。
41
Chapter 8
PS/2 Mouse/Keyboard Port
入门实验板包括一个PS/2的鼠标/键盘接口和标准的6管脚微DIN连接器——J14。图8.1给出了PS/2连接器,表8.1给出了连接信号。只有连接器的管脚1和5连到FPGA。
PC鼠标和键盘都采用2-线PS/2串行总线与主机进行通信,本入门实验板就属于此种情况。PS/2总线包括时钟和数据线。鼠标和键盘通过识别信号的时序来驱动总线,它们均采用11位的字包括一个起始位、停止位和奇检验位。但是,鼠标和键盘的数据包打包方式不同。此外,
42
键盘允许双向数据交换,所以主机可以点亮键盘的状态灯。
表8.2和图8.2说明了PS/2总线的时序。只有当数据转换发生时,时钟和数据信号才被驱动,否则,它们以高电平的形式处于空闲状态。时序定义了鼠标与主机通信的信号要求或键盘与主机的双向通信。图8.2所示,当时钟信号是高电平使,敲击键盘或鼠标时往数据线写1位字,在时钟低电平时,主机PC读该数据线。
Keyboard
键盘使用开集式驱动方式,这样键盘或主机均可以驱动2-线总线。如果主机无需传送数据给键盘,则可以单线输入方式。
PS/2式键盘采用扫描式编码来获取按键的数值。如今几乎所有的键盘都采用PS/2式。每个按键被按下时,都会产生一个独立的扫描码信号。按键的扫描码见图8.3。
如果按键按下并且按住不放,键盘则每隔100ms重复发送扫描码信号。当按键释放时,键盘在扫描码之后发送一个“F0”。不管有没有按下SHIF键,键盘都发送同样的字符扫描码。
一些扩展键,按下时在扫描码之前发送一个“E0”,而且它们可能会发送多于一个的扫描码。当一个扩展键释放时,在扫描码之后发送一个“E0 F0”。
主机可以发送命令和数据给键盘。表8.3提供了一些常用的命令清单。
43
只有在空闲状态,数据线和时钟线均为高时,键盘才发送数据或命令给主机。
由于总线控制器是主方,在驱动总线之前,由键盘检查主方是否正在发送数据。时钟线可以用作清除发送信号线。如果主方将时钟线置低,直到时钟线被释放,键盘才能发送数据。
键盘以11位字(包括0起始位,接着是8位的扫描码(最低位LSB先传),再接着是奇校验位和终止位1)发送数据给主机。当键盘发送数据时,它大约以20~30KHz的频率产生11个时钟周期的传送时间。在时钟的下降沿数据有效,如图8.2所示。
Mouse
鼠标移动时产生一个时钟和数据信号,否则,这些信号保持高电平,说明处于空闲状态。鼠标每次移动,都发送11位字给主机。每个11位的字包括起始位0,8位的扫描码(最低位LSB先传),奇校验位和终止位1。每个传送的数据总共包括33位,即第0、11、22位是起始位0,第10、21、32位是终止位1。三个数据域所包含的数据如图8.4所示。在时钟的下降沿数据有效,其时钟周期大约为20~30KHz。
44
PS/2式鼠标采用关联坐标体系,见图8.5。鼠标右移时,X域产生一个正值,左移时,产生负值。同理可得,鼠标上移时,Y域产生一个正值,下移时,产生负值。XS位和YS位为每个值的状态位,1表示负值。
X和Y值的大小代表鼠标移动速度的快慢。值越大,移动越快。状态字节的XV和YV位表示鼠标超出最大值,溢出。1表示溢出。此时如果鼠标继续移动,则第33位每隔50ms重复发送一次。
状态字节的L和R域代表左右键按下。1表示相应键按下。
Voltage Supply
键盘的供给电压是5V,而入门实验板的器件并不能承受5V电压,所以通信时串了个限流电阻,如图8.1所示。
UCF Location Constraints
Chapter 9
Digital to Analog Converter (DAC)
入门实验板包括一个兼容SPI,4通道,串行数字-模拟转换器(DAC)。该DAC器件是个线性工艺LTC2624-12位的。4个输出连到J5接头——使用Digilent 6管脚的外设模数格式。
45
SPI Communication
图9.2所示,FPGA通过SPI与DAC的输出通道进行数据通信。SPI总线是全双工、同步、定向通道——采用简单的4线接口。在本例中,FPGA作为主总线使用,驱动数据时钟信号(SPI_SCK)和传送串行数据(SPI_MOSI)给从数据线——本例为DAC。与此同时,从数据线提供串行数据(SPI_MISO)回传给主数据线。
46
Interface Signals
表9.1列出了FPGA 与DAC 之间的接口信号。SPI_MOSI、SPI_MISO和SPI_SCK信号与其它的器件复用SPI总线。DAC_CS信号低电平有效送给DAC。DAC_CLR信号低电平有效,同步复位送给DAC。
从DAC输出的串行数据主要送给多个DAC。在多数应用中,该信号可以被视,尽管它可以使用SPI总线的全双工方式通信。
Disable Other Devices on the SPI Bus to Avoid Contention
板上的SPI总线与其它器件复用。当FPGA与DAC进行数据通信时,要失能其它的器件,这点很重要,以避免总线冲突。表9.2提供了失能其它器件的信号与逻辑值。尽管StrataFlash PROM是个并行器件,它的最低数据位还是和和SPI_MISO信号线复用。
47
SPI Communication Details
表9.3说明了SPI总线时序的具体应用。每位的传输与接收均相对于SPI_SCK时钟信号。总线完全是静态的并支持最高的50MHz。但是,在最高速或接近最高速时,请使用LTC2624数据手册检查时序。
在从片选信号DAC_CS置低后,FPGA用SPI_MOSI信号传送数据,MSB位先传。LTC2624在SPI_SCK的上升沿采集输入数据(SPI_MOSI)。相对于时钟信号的上升沿,数据的有效时间至少是4ns。
LTC2624在SPI_SCK的下降沿采集输入数据(SPI_MISO)。FPGA在下个SPI_SCK的上升沿采集该数据。FPGA必须在DAC_CS变低后的SPI_SCK的第一个上升沿读取第一个SPI_MISO的值。否则,31位会丢失。
传完所有的32位数据后,FPGA完成SPI总线处理,置从片选信号DAC_CS为高。在高电平即去时,DAC内部开始进行数-模转换。
Communication Protocol
图9.4说明了LTC2624 DAC接口所需的通信协议。DAC支持24位和32位协议。32位的协议如下所示。在D/A转换器的内部,SPI接口由32位的移位寄存器组成。每个32位的指令字随在数据值之后组成一条指令,一个地址。随着新指令进入DAC,前32位指令字回送给主器件。从DAC回应回的信息可以被忽视,尽管它对确认正确的通信有用。
48
FPGA首先传送8个无效位或无关位,随后是4位的命令。最普通的使用命令是COMMAND[3:0]=0011,这指的是立即更新DAC的输出数据值。随后,FPGA通过4位的地址域选择一个或所有的输出通道。地址域之后,FPGA发送12位无符号数据——DAC转换成模拟值并输出到相应的输出端。最后,4个额外的无效位或无关位紧随在32位命令字之后。
Specifying the DAC Output Voltage
如图9.2所示,每个DAC输出电平与12位的无符号数字值D[11:0]相一致,FPGA经由SPI接口写给DAC。
电压的输出见等式9.1。参考电压VREFERENCE在4个输出通道之间有所差异。通道A和通道B的参考电压是3.3V,通道C和通道D是2.5V。参考电压本身有±5%的波动,所以输出电压会有相应的轻微波动。
DAC Outputs A and B
等式9.2提供了DAC输出通道A和B的输出电压。参考电压为3.3V±5%。
DAC Outputs C and D
等式9.3提供了DAC输出通道C和D的输出电压。参考电压为2.5V±5%。
UCF Location Constraints
49
Chapter 10: Analog Capture Circuit
入门实验板包括一个双通道的模拟信号采集电路,由可编程缩放预放大器和模-数转换器(DAC)组成,如图10.1所示。
模拟信号采集电路由线性工艺LTC6912-1可编程预放大器构成,其可以缩放从J7输入的模拟信号,如图10.2所示。预放大器的输出连接到线性工艺LTC1407A-1 ADC。预放大器和ADC由FPGA连续编程或控制。
50
Digital Outputs from Analog Inputs
采集电路通过VINA和VINB端口转换模拟电压,并用相应的14位数字表示,D[13:0],见等式10.1。
增益(GAIN)是当前设置的,并送给可编程预放大器。增益可以设置成多种值,VINA和VINB允许多种输入值,具体见表10.2所示。
放大器和ADC的参考电压是1.65V,一般由图10.2的分压电路产生。因而,1.65V要被输入电压VINA或VINB减去。
ADC的最大波动范围是±1.25V,中点在参考电压1.65V附近。因此,1.25V出现在分母上以缩放模拟输入信号。
最后,ADC输出一个14位-2个辅助数字输出值。14位-2个辅助数字代表的值
213~2131之间。因此,其分点的数量为8192。
Programmable Pre-Amplifier
LTC6912-1提供2个独立的可编程增益转换放大器。放大器的目的是缩放VINA或VINB的输入电压。DAC的最大转换范围是1.65±1.25V。
51
Interface
表10.1列出了FPGA和SPI_MOSI、SPI_MISO和SPI_SCK(这三个信号与其它器件复用SPI总线)之间的接口信号。AMP_CS是送给放大器的低电平有效的片选信号。
Programmable Gain
每个模拟通道有一个对应的可编程增益放大器,见图10.2。模拟信号出现在连接J7的VINA或VINB输入端口,其放大是相对于1.65V的。(gain*(vin-1.65)) 每个放大器的增益的编程范围是-1~-100,见表10.2。
SPI Control Interface
图10.3给出了基于SPI的与放大器的通信接口。每个放大器的增益设置成8位的命令字,由2个4位的部分组成。最高位B3先送。
从放大器输出的AMP_DOUT响应原先的增益设置。在大多数应用中,该值可以被忽视。 当FPGA声明AMP_CS为低时,SPI总线开始进行数据传输,见图10.4。放大器在SPI_SCK时钟信号的上升沿采集SPI_MOSI的串行数据。放大器在SPI_SCK的下降沿通过AMP_DOUT输出串行数据。
放大器接口的速率相对较低,支持10MHz的时钟频率。
52
UCF Location Constraints
Analog to Digital Converter (ADC)
LTC1407A-1提供两个ADC。当AD_CONV信号有效时,这两个模拟输入端口同时进行采样。
Interface
表10.3列出了FPGA和ADC的接口信号。SPI_MOSI、SPI_MISO和SPI_SCK这三个信号与其它器件复用SPI总线。送给DAC的从片选信号DAC_CS低电平有效。DAC_CLR异步复位信号低电平有效。
53
SPI Control Interface
图10.6提供了SPI总线传输给ADC的一个例子。
当AD_CONV信号变高时,ADC的两个通道同时采样。直到下个AD_CONV信号有效时采样结果才被送出,即保留了一个采样周期。最大的采样频率大约是1.5MHz。
ADC将采集到的模拟信号以14位-2个辅助二进制值的形式输出。
图10.7给出了具体的传输时序。AD_CONV信号不再是原来意义上的SPI从片选使能信号了。ADC让SPI_MISO信号处于高阻态以保证获得足够的SPI_SCK时钟周期。否则,ADC阻止与其它SPI外设进行通信。图10.6所示,一次通信使用了34个时钟周期。ADC在传输每个14位数据的前后使其输出保留2个时钟周期的三态状态。
54
UCF Location Constraints
Disable Other Devices on the SPI Bus to Avoid Contention
SPI总线与板上的其它器件复用。当FPGA与AMP 或ADC进行通信时失能其它的器件是很重要的,这样可以避免总线冲突。表10.4提供了失能其它器件的信号及其相应的逻辑值。尽管StrataFlash PROM是个并行器件,它的最低位还是与SPI_MISO信号线复用。如果FPGA设置为主串行配置模式时,Platform Flash PROM才有可能使能。
Connecting Analog Inputs
通过一个DC(直流)隔离电容连接AC信号与VINA或VINB。
55
Chapter 11:Intel StrataFlash Parallel
NOR Flash PROM
如图11.1所示,实验板包括一个128Mbit(16Mbyte)的Intel StrataFlash parallel NOR Flash PROM。如图所示,StrataFlash的一些连线与板上的其它一些元件复用。
StrataFlash PROM有以下多种功能: 1)存储单个FPGA的配置文件;2)存储两个不同的FPGA配置文件,并利用Spartan-3E FPGA’s MultiBoot的特点进行轮流转换;3)存储MicroBlaze处理器的代码;4)存储MicroBlaze处理器的代码并在执行代码之前将代码映射到DDR存储器;4)存储来自FPGA的永久数据。
StrataFlash Connections
表11.1说明了FPGA与StrataFlash之间的连接图。
虽然XC3S500E FPGA每个配置信息仅需要稍微多于2Mbit的容量,但FPGA-to-StrataFlash之间的接口支持高达256Mbit的StrataFlash。实验板用的是128Mbit元件。地址线SF_A24没用到。 一般来说,StrataFlash元件连到XC3S500E支持8位的外围接口(BPI)配置。从FPGA 出来的高4位并没有直接连到StrataFlash。相反,在配置时由XC2C64 CPLD控制这些管脚。正如表11.1所示,StrataFlash的一些连线与其它一些器件复用。
56
57
Shared Connections
除了StrataFlash的一些连线与其它一些器件复用外,StrataFlash的一些存储空间也与其它器件复用。
Character LCD
字符LCD采用4位的数据接口。显示数据的连线同样与StrataFlash PROM上的信号线
58
SF_D<11:8>复用。如表11.2所示,FPGA通过SF_CE0和LCD_RW信号线来控制StrataFlash PROM的访问通道或字符LCD的读状态。
Xilinx XC2C64A CPLD
在配置时,Xilinx XC2C64A CoolRunner CPLD用来控制StrataFlash高5位的地址线
SF_A<24:20>。在BPI模式的高4位地址线A<23:20>没有连接。相反,FPGA的4个I/O口连接到StrataFlash PROM的高位地址线SF_A<23:0>上。可以参阅16章了解CPLD更详细的信息。
16 Mbyte StrataFlash PROM并没有用到最高有效位地址线SF_A<24>。它是为同样封装形式更大容量的StrataFlash PROM提供扩展的。当然,SF_A<24>信号线也连到FX2扩展接头的FX2_IO<32>上。
SPI Data Line
最低有效位数据线SF_D<0>与来自串行SPI外设、SPI_MISO和Platform Flash PROM的串行输出信号线复用,见表11.3。 为了避免冲突,FPGA必须确保在任何时刻只能有一个数据线有效。
UCF Location Constraints
Address
图11.2是StrataFlash地址线管脚的UCF约束。
59
Data
图11.3是数据线管脚的UCF约束。
Control
图11.4是控制线管脚的UCF约束。
60
Setting the FPGA Mode Select Pins
可以将FPGA设置为BPI UP 或BPI DOWN模式,见表11.4。
61
Chapter 12:SPI Serial Flash
实验板包括一个STMicroelectronics M25P16 16 Mbit SPI serial Flash,其有多种应用。SPI Flash提供了可选的方案来配置FPGA——这是Spartan-3E FPGA 的一个新的特征,见图12.1所示。SPI Flash在配置后同样可以有其它的多种用途,如:1) 简单的永久性数据存储;2)存储识别码、串号以及IP地址等等;3)将存储的MicroBlaze处理器代码映射到DDR SDRAM上。
UCF Location Constraints
图12.2是SPI Flash PROM的UCF约束。
Configuring from SPI Flash
SPI Flash 的配置,FPGA的模式选择必须合理,SPI Flash必须包含一个有效的配置映射。
62
Setting the FPGA Mode Select Pins
对于SPI模式的FPGA配置管脚见图12.4。跳线的位置见图12.3。
Creating an SPI Serial Flash PROM File
Setting the Configuration Clock Rate
以下是如何将FPGA的位流文件配置到SPI Serial Flash PROM的步骤。
选择连接M25P16 SPI serial Flash时,FPGA支持12MHz的配置时钟,具体设置见图12.5。
63
Formatting an SPI Flash PROM File
产生配置文件之后,见图12.6操作。
启动IMPATC之后,双击PROM File Formatter,见图12.7。
64
接下来如图12.8、12.9、12.10、12.11所示进行相应的操作。
65
66
67
当PROM完成格式后,IMPACT会示出PROM的当前状态,所选的位流文件以及位流文件占用PROM的空间。图12.12就是XCF04S Platform Flash PROM存储一个位流文件的例子。
要产生当前PROM文件,如图12.13所示进行操作。
68
如图12.14所示,IMPACT示出PROM文件成功生成。见图12.8的设置,PROM Formatter产生一个输出文件。在本例中,输出文件名为MySPIFlash.mcs。
Downloading the Design to SPI Flash
对SPI Flash进行编程有多种方法,如下:1)采用带有XAPP445的XSPI编程软件。通过采用JTAG编程电缆(板上没有提供)由并行口下载到SPI Flash上;2)采用基于SPI Flash的PicoBlaze参考设计。使用终端模拟器,如Hyperlink,通过PC的串口将SPI Flash的编程数据下载到FPGA。嵌入式PicoBlaze处理器对SPI serial Flash进行编程;3)采用JTAG工具通过FPGA 的JTAG链接将SPI Flash编程到FPGA上。其链接见相应的参考资料;4)ISE8.2i提供有另外的编程支持。
Downloading the SPI Flash using XSPI
以下是使用XSPI编程下载到SPI Flash的步骤。
Download and Install the XSPI Programming Utility
XSPI编程软件的应用见应用笔记XAPP445。
Attach a JTAG Parallel Programming Cable
XSPI编程软件采用JTAG并口编程电缆,如:带飞行引线的Xilinx Parallel Cable IV和Digilent JTAG3 编程电缆。
这些电缆并没有随实验板一起提供,但可以单独购买。 首先,关掉实验板的电源。
如果板上连有USB电缆,拔掉。因为同时连接USB电缆和并口电缆会使IMPACT无法正确识别。
将JTAG的一端连到J12,如图12.15a所示。J12的物理位置见图12.3所示。将J12的连接头直接连到SPI Flash管脚上,并不是连到JTAG链上。
将JTAG3电缆直接连到J12上。JTAG3的标签对着J11跳线。如果使用飞行引线,它们必须如图12.15b和表12.2所示连接。注意引线的颜色。灰色的INIT引线留着不用。
69
Insert Jumper on JP8 and Hold PROG_B Low
JTAG并行编程电缆直接与SPI Flash管脚相连。为了避免与FPGA的信号相冲突,确保连接FPGA的管脚处于高阻态。在JP8(在PROG按钮附近)安装一个跳线迫使FPGA的PROG_B管脚为低,见图12.16所示。
将实验板重新上电。
Programming the SPI Flash with the XSPI Software
70
打开一个命令提示符或DOS窗口,改变XSPI安装路径。
XSPI安装软件会有一个使用向导,附在XAPP445上。提示符下敲打xspi查看快速帮助。 在提示符下敲打如下命令,使用事先生成的SPI-formatted Flash 文件来编程SPI Flash。这种读写SPI Flash需要一个M12P16 SPI Flash,然后擦除、编程,最后写Flash。
C:\\xspi>xspi -spi_dev m25p16 -spi_epv -mcs -i MySPIFlash.mcs -o output.txt
屏幕上会出现一个免责公告。按Enter键继续。整个编程过程大约1分钟多,如图12.17所示。
SPI Flash编程后,卸掉JP8,如图12.16a所示。如果编程正确,FPGA会从SPI Flash PROM自动配置,且DONE LED点亮。
Additional Design Details
图12.18提供了SPI Flash接口使用的一些其它细节。在大多数应用中,该接口的简单应用正如图12.1所示那样。但是,实验板支持多种配置方式并给出了Spartan-3E的一些其它性能。
71
Shared SPI Bus with Peripherals
配置之后,SPI Flash的配置管脚可以作为设计的其它应用。实验板上的SPI总线与其它的带有SPI的外围器件复用,如图12.18所示。配置后,要访问SPI Flash存储器,FPGA必须失能其它复用PCI总线的器件。表12.3给出了这些器件的信号名和失能值。
Other SPI Flash Control Signals
M25P16 SPI Flash有两个额外的输入控制。低电平有效的写保护输入信号W和总线保持输入信号没用,通过将外部上拉电阻置高来实现。
Variant Select Pins, VS[2:0]
处于SPI配置模式时,FPGA通过采样三个管脚VS[2:0]的值来判定哪个SPI的读命令送与SPI Flash。对于M25P16 Flash,VS[2:0]=111是其正确的命令字。VS[2:0]管脚通过外部的上拉电阻接到3.3V。在BPI配置模式时,VS[2:0]管脚是并行永久性Flash的地址线A[19:17],这些信号连接到StrataFlash parallel Flash PROM。在SPI配置后,VS[2:0]管脚变成用户编程I/O口,允许完全访问StrataFlash parallel Flash PROM,而不管来自SPI Flash的FGPA配置。
Jumper Block J11
在SPI配置模式时,FPGA通过置低CSO_B管脚来选中SPI Flash。CSO_B连到J11跳线上。该
72
跳线提供一个选项来移动板上的SPI Flash到不同的选择线上(SPI_ALT_CS_JP11)。通过改变J11的设置以及将要使用的SPI Flash连到JP12上就可以测试不同的SPI Flash器件。默认下,这两个跳线都置在J11里头。
Programming Header J12
如图12.15所示,J12使用一个JTAG编程电缆来编程板上的SPI Flash。
Multi-Package Layout
STMicroelectronics能够自动识别M25Pxx SPI系列Flash的封装。实验板支持16Mbit器件所有的三种封装类型,如图12.19所示。默认情况下,实验板以8-lead, 8x6 mm MLP封装形式进行工作。多封装同样支持8-pin SOIC 和16-pin SOIC的封装。8-pin SOIC的管脚1和MLP在板上的左上角。然而,16-pin SOIC的管脚1却在右上角,原因是这种封装是90度的。16-pin SOIC封装形式的每个面有4个管脚没有连接到板上。这些管脚必须悬空。为何要支持多封装形式?一句话,灵活性。多封装布局提供了:
1)在小密度和大密度的SPI Flash PROM之间轻松实现密度移植。并非所有的SPI Flash 的密度都可以在不同的封装形式里用。SPI Flash 的移植策略取决于FPGA提供的移植输出管脚的精细程度。
2)在FPGA的密度移植之间实现PROM配置的兼容性(一致性)。Spartan-3E FPGA’s FG320的管脚封装形式支持XC3S500E、XC3S1200E和XC3S1600E 的FPGA器件,而无须修改。SPI Flash的多种封装形式允许在相关联的PROM之间实现灵活的兼容。从而在板上为FPGA运行最优尺寸的SPI Flash。
3)提供安全措施。如果一种特定的SPI Flash密度在想要的封装里不可用,则可以安全地转换到不同的封装形式或不同的密度。
73
Chapter 13:DDR SDRAM
实验板包括一个16位接口的512 Mbit (32M x 16) Micron Technology DDR SDRAM
(MT46V32M16),如图13.1所示。所有的 DDR SDRAM 接口的管脚连接到 FPGA’s I/O Bank 3。 I/O Bank 3 和DDR SDRAM 均由2.5V供电,由板上5V的输入电压经LTC3412调整得到。1.25V的参考电压一般由2.5V电压经电阻分压得到,供给FPGA 和 DDR SDRAM。
所有的DDR SDRAM接口信号都是终端的。
差分时钟管脚SD_CK_P反馈给FPGA I/O Bank 0的管脚B9,以获得最佳通向FPGA’s Digital Clock Managers (DCMs)的路径。当使用到MicroBlaze OPB DDR控制器时就要用到该路径了。从EDK 8.1i 开发软件同样可以获得MicroBlaze OPB DDR SDRAM 控制器的IP 核。
DDR SDRAM Connections
表13.1给出了FPGA与DDR SDRAM之间的连接。
74
75
76
UCF Location Constraints
Address
图13.2给出了DDR SDRAM地址线管脚的UCF约束。
Data
图13.3给出了DDR SDRAM数据线管脚的UCF约束。
Control
图13.4给出了DDR SDRAM控制线管脚的UCF约束。
77
Reserve FPGA VREF Pins
图13.5是I/O Bank 3 五个参考输入电压VREF的管脚约束。这些管脚不能用于通用I/O。禁止软件使用这些管脚,其约束如下。
78
Chapter 14
10/100 Ethernet Physical Layer Interface
入门实验板包括一个标准的微系统——LAN83C185 10/100以太物理层(PHY)接口和一个RJ-45连接器,如图14.1所示。FPGA内置一个以太介质控制器(MAC),入门实验板便可以连到标准的以太网上。板上的25M晶振控制所有的时序。
Ethernet PHY Connections
FPGA通过MII连接到LAN83C185 Ethernet PHY,如图14.2。详细信息看表14.1。
79
80
MicroBlaze Ethernet IP Cores
PHY主要为MicroBlaze 所用。例如,MAC是EDK开发平台的一部分。
81
MAC核需要设计约束以满足任务要求。细节请参考OPB-以太MAC数据手册。OPB总线的时钟频率必须是65MHz或高于100Mbps以太传输速率和6.5MHz或快于10Mbps以太传输速率。
UCF Location Constraints
图14.4是10/100 Ethernet PHY interface接口的UCF约束,包括I/O管脚分配和标准。
82
Chapter 15:Expansion Connectors
实验板提供一个多样的扩展连接器,以便于与其它板外的器件轻松连接。其扩展I/O的连接头如下:
1)一个100管脚hirose扩展连接器与FPGA的43个用户I/O口相连,包括15个差分LVDS I/O对和2个只输入对;
2)三个6管脚扩展连接器;
3)为Agilent or Tektronix无线探针提供的焊盘垫。
Hirose 100-pin FX2 Edge Connector (J3)
100管脚扩展连接器在板上的右边沿,见图15.1所示。该连接器是FX2-100P-1.27DS Hirose1.27mm的接头。本文中简称其为FX2连接器。
图15.2所示,43个FPGA的I/O管脚与FX2连接器相连。除了其中的5个只输入管脚外,双向的I/O均可驱动或接收信号。这5个管脚是:FX2_IP<38:35>和FX2_IP<40>。见表15.1,这些管脚中标为绿颜色的不能驱动FX2连接器,但可以接收信号。
尽管所有的三个连接到全I/O管脚,但这三个信号主要保留作为实验板与FX2连接器之间的时钟信号。
83
Voltage Supplies to the Connector
实验板通过两个供给电源给100管脚hirose FX扩展连接器以及其它的板上附件提供电源,见图15.2。5.0V的电压给所有的板上附件的5V逻辑或调节器。
一个分离的电源单独供给FPGA的0号I/O口同样的电压。连接到Hirose 的FPGA的 I/O 接口都在0号上。默认下,0号的I/O的供给电压是3.3V。但是,使用JP9可以将电压转变为2.5V。一些FPGA的I/O标准,特别是差分标准诸如RSDS和LVDS——需要2.5V的输出电压。
为支持高速信号通过该连接器,FX2 连接器B面的大多数管脚接地。
Connector Pinout and FPGA Connections
表15.1给出了100管脚hirose FX扩展连接器输出管脚与FPGA管脚的连线。FX2有2排连接器,每排有50个管脚,见表15.1淡黄色部分。
表15.1同样给出了与8位LED、3个6-管脚的附属接头(J1、J2、J4)以及无线调试接头J6的复用的连线。
84
85
Compatible Board
与Spartan-3E实验板的FX2相兼容的是来自Digilent的VDEC1 Video Decoder Board 。
Mating Receptacle Connectors
实验板使用Hirose FX2-100P-1.27DS的连接器。该接头可以连接到其它任何兼容的100管脚的连接器,包括贴板的和非带锁电缆的连接器。
Differential I/O
FX2、J3支持高达15个差分I/O对和两对采用LVDS或RSDS I/O标准的只输入对,见表15.2所示。所有的I/O对支持差分终端输入(DIFF_TERM)。选择对可通过外部终端电阻随意匹配。
这些信号并不布线到匹配差分阻抗,这需要考虑到最终的性能。但是,所有的路径对于最小的偏移有相似的长度。
86
Using Differential Inputs
LVDS和RSDS差分输入需要输入终端。有两种可选措施。其一是使用外部终端电阻,见图15.3a。实验板为100欧的外部终端电阻提供焊盘垫。这些电阻并没有焊在板上。电阻的参考设计标在印刷纸上,见标15.2所示。焊盘垫分布在实验板的正反两面,在FPGA与FX2连接器之间。这些电阻并没有焊在板上。使用差分对15和16时,需要外部的终端电阻。
其二见图15.3b所示,利用Spartan-3E的特点——片上差分终端,它是使用差分I/O信号的DIFF_TERM属性。每个差分I/O管脚包含一个类似于内部大约120欧的终端电阻的线路。片上差
87
分终端只能在差分I/O对上使用,不能用在只输入对上,如15和16对。
图15.4和图15.5给出了输入差分终端电阻在板上正反两面的焊接位置。表15.2给出了哪个电阻连接具体的差分对。
Using Differential Outputs
差分输入信号并要求任何特定的电压。然而,LVDS和RSDS差分输出信号需要I/O Bank 0
88
的2.5V供给电压。实验板提供方案给I/O Bank 0供给3.3V或2.5V的电压。
如果在FX2连接器上使用差分输出,将JP9设置为2.5V。如果跳线设置错误,输出开关正确,信号电平则于规定的不符合。
UCF Location Constraints
图15.7给出了FX2连接器管脚的UCF约束。
89
Six-Pin Accessory Headers
6管脚扩展连接器使用Digilent Peripheral Modules提供了简易的I/O扩展接口。
Header J1
如图15.8所示,在板上的右边缘顶部是6管脚扩展连接器的J1。它采用6管脚90度的插槽。4个FPGA管脚(FX2_IO<4:1>)连接到J1。这四个信号与FX2连接器复用。实验板向贴在J1的
90
扩展板提供3.3V的电压。
Header J2
如图15.9所示,在板上的右边缘底部是6管脚扩展连接器的J2。它采用6管脚90度的插槽。4个FPGA管脚(FX2_IO<8:5>)连接到J2。这四个信号与FX2连接器复用。实验板向贴在J2的扩展板提供3.3V的电压。
Header J4
如图15.10所示,J4紧挨着J1。它采用0.1英尺圆心桩脚组成6管脚连接器。4个FPGA管脚(FX2_IO<12:9>)连接到J4。这四个信号与FX2连接器复用。实验板向贴在J4的扩展板提供3.3V的电压。
91
UCF Location Constraints
图15.11是扩展连接器的UCF约束。
Connectorless Debugging Port Landing Pads (J6)
见图15.1,和J6连接器一样,实验板为无线连接器调试接口提供了焊盘垫。板上没有实物的连接器,相反,只是无线连接探针。像Agilent一样,向逻辑分析仪提供了一个接口。该调试接口主要为采用Agilent’s FPGA动态探针的Xilinx ChipScope Pro软件所用。当然,也可使用FPGA Editor命令来使用Agilent 或Tektronix的探针,而无需ChipScope Pro软件。
表15.3给出了连接器的输出管脚。只有18个FPGA管脚连接到连接器上,连接器上的其它焊盘垫没有用到。这18个管脚与FX2连接器(J3)和6管脚扩展连接器(J1、J2、J4)。
92
93
Chapter 16:
XC2C64A CoolRunner-II CPLD
入门实验板包括一个Xilinx XC2C64A CoolRunner-II CPLD。CPLD是个用户可编程以及适于消费应用。CPLD的部分功能保留,以调整各种FPGA的配置存储器,即Xilinx Platform Flash PROM和Intel StrataFlash PROM。CPLD必须为用户的应用提供了一下功能。
1)当FPGA为主串行配置模式(FPGA_M<2:0>=000)时,向XCF04S Platform Flash PROM提供一个低电平有效的使能信号。Platform Flash PROM在其它任何模式都失能。CPLD减少了跳线的个数,简化了FPGA配置存储器的相互连接。
2)在BPI-UP配置模式(FPGA_M<2:0>=010)FPGA有效时,置StrataFlash PROM 地址线的5个最高位 A[24:20]为二进制的 00000。在BPI-DOWN配置模式(FPGA_M<2:0>=011)FPGA有效时,置StrataFlash PROM 地址线的5个最高位 A[24:20]为二进制的11111。在非BPI配置模式或FPGA的DONE管脚为高时,置A[24:20]为ZZZZZ。在BPI模式时,根据5位地址的配置来识别FPGA的实现形式。为什么要增加一个CPLD来模这种实现形式呢?以后的参考设计将说明了这一独特的配置性能。在典型的BPI模式应用中,CPLD并不需要用到。
除了需要CPLD外,用户I/O口管脚13~21和58个宏单元可为用户所用。
跳线JP10(WDT_EN)定义了CPLD的 XC_WDT_EN信号的状态。默认情况下,该跳线为空,信号线置为高电平。
XC_PROG_B从CPLD输出,如果用到的话,必须配置为开漏输出(如:要么置低有效,要么悬空为高阻态,不能为高)。该信号直接连到FPGA的PROG_B可编程管脚。
StrataFlash PROM地址的最高位是SF_A<24>,同FX2连接器的信号FX2_IO<32>一致。16M字节的StrataFlash PROM只用到低24位,SF_A<23:0>,SF_A<24>用来提供给更大容量的StrataFlash PROM。
94
UCF Location Constraints
FPGA Connections to CPLD
95
CPLD
96
Chapter 17
DS2432 1-Wire SHA-1 EEPROM
入门实验板包括一个集成了SHA-1的Maxim DS2432串行EEPROM。图17.1所示,DS2432 EEPROM使用Maxim的1-Wire接口,顾名思义,它是用单线进行电源和串行通信的。(1-Wire/ SHA-1器件是移动式令牌,可以基于随机质询使用加密性能完善的散列算法生成信息认证代码(MAC))
DS2432 EEPROM提供一个保护FPGA配置位流的方法(当然这种保护方法有很多),使得要复制其信息有困难。根据Xilinx应用笔记XAPP780,提供了一个可行的方案。
UCF Location Constraints
97
因篇幅问题不能全部显示,请点此查看更多更全内容