2.5 本书配套FPGA开发平台硬件介绍
为了能够更好地配合本书关于FPGA逻辑电路的开发,在实践中介绍“FPGA设计技巧与案例开发详解”,帮助读者动手验证并掌握每一个例程的设计(从软件的构思到硬件设计,再回到软件的优化设计),笔者专门设计了一套与本书完全匹配的开发套件,名为VIP_Board,板卡照片如图2.45所示。
一个稳定的FPGA开发平台能达到事半功倍的效果。为了加速初学者的学习进程,以及有能力者的进阶设计开发,笔者完全配套本书而设计了FPGA开发平台(VIP_Board),希望能帮助读者更好地学习并掌握FPGA。有兴趣的读者可以在CrazyFPGA官方网站(www.crazyfpga.com)了解VIP_Board FPGA开发板卡,更多信息请在官网查询。
图2.45 与本书完全配套的FPGA板卡—VIP_Board
2.5.1 VIP_Board硬件资源介绍
VIP_Board是专为本书配套设计开发的板卡,该板卡主控采用了Altera Cyclone IV E系列FPGA—EP4CE15F17C8N。关于Cyclone IV FPGA核心电路设计内容,上文已经进行了基本的讲解。Cyclone IV系列FPGA具有性能、价格、资源及市场占有率等优势,因此选择该系列器件是毋庸置疑的。
此外,本书2.3节中已经从手册和电路设计方面完整地介绍了Cyclone IV FPGA的电路设计方案,因此这里只对VIP_Board的硬件资源,以及相关的外设资源进行简单的介绍。VIP_Board板卡核心器件与外设电路主要有14个部分,VIP_Board硬件资源如表2.5所示。
表2.5 VIP_Board硬件资源
其中,选用的EP4CE15F17C8N FPGA的资源如表2.6所示。
表2.6 EP4CE15F17C8N FPGA资源
该款FPGA具有4个能级联、具有动态配置功能的PLL,能生成20个全局时钟,给用户的设计提供了极大的灵活性;具有112个嵌入式9bit乘法器,以及31.5K×16bit的存储器,丰富了片内资源;具有166个用户I/O,足够支持本书所有例程中相关电路的需求。
2.5.2 VIP_Board相关外设实物介绍
由于后续章节的设计中将使用VIP_Board板卡的每一个外设,因此具体的电路设计将在后续章节中的实际电路的设计与例程开发中给出。这里,笔者仅针对外设进行基本功能及选型的介绍。
1.电源转换部分电路
如图2.46所示为VIP_Board的电源转换部分电路实物图,电源设计方案与2.2.3节中关于Cyclone IV FPGA电源方案的选型设计完全保持一致。这部分电路将外部输入的5V直流电压转换为3.3V I/O电压、1.2V内核电压,以及2.5V PLL供电电压。采用MP2214 DC/DC方案(最大提供3A)及PAM3101DAB250 LDO方案(最大提供300mA),是FPGA驱动电源模块设计中值得参考的设计模式。
图2.46 电源转换部分电路实物图
2.JTAG接口及Flash驱动电路
如图2.47所示为VIP_Board板卡的JTAG下载接口及SPI-Flash存储器的实物图。其中,JTAG不仅用于FPGA的SRAM测试,而且通过“SOF→jic”方式,可以用来固化SPI-Flash。而SPI-Flash选用EPCS4/M25P40,4Mbit的存储容量,对于EP4CE15F17C8N的逻辑开发而言,存放硬件(二进制文件)的容量绰绰有余。
图2.47 JTAG下载接口及SPI-Flash存储器的实物图
3.串转并8位LED驱动电路
本书中设计的LED驱动电路,并非简单的8位LED灯,而是采用74HC595,通过串转并实现的8位LED驱动电路,如图2.48所示。
图2.48 串转并8位LED驱动电路实物图
笔者采用这种稍微复杂的设计方案,并非因为FPGA的I/O不够用,而是想通过串转并的思路,让读者在学会驱动外设IC的同时,掌握另一种LED驱动方案。
4.按键功能驱动电路
VIP_Board板卡的用户按键选用了常规的轻触按键,共由三个部分组成,如图2.49所示。其中,包括1个独立的全局复位按键,4个独立按键,以及1个4×4的矩阵键盘。本书后续章节将详细介绍异步复位信号,以及独立/矩阵键盘的驱动。这几部分内容将强化读者对HDL设计及状态机描述的认知与设计方式。
图2.49 板载3部分按键实物图
5.LCD1602驱动电路
如图2.50所示为VIP_Board的LCD1602驱动电路实物图。本书设计了LCD1602的驱动,目的在于打破MCU驱动LCD1602的常规,同时帮助读者更深层次地掌握时序电路的驱动,以及三段式状态机的驱动。
图2.50 LCD1602驱动电路实物图
其中,LCD1602选用了深圳科飞研公司推出的5cm×3.15cm迷你型封装,用户可以通过RP1来调节LCD的对比度。同时,由于驱动电路具有兼容性,所以其接口支持市场上标准8cm×3.6cm的LCD1602。
6.USB转UART驱动电路
关于UART电路,VIP_Board选择了CP2102 USB转UART方案。该方案电路简单,IC成熟稳定,实物图如图2.51所示。
图2.51 基于CP2102的USB转UART驱动电路实物图
掌握UART通信协议的设计,不仅对于开发者掌握时序电路的设计,增强HDL的设计能力有一定的帮助,同时,尝试并努力设计一个稳定的串口通信模块将对初学者有一定的挑战。利用FPGA并行加速功能,将易于实现并行多串口的电路,使电路具有极高的扩展性,因此值得读者一学。
7.CMOS接口驱动电路
如图2.52所示为VIP_Board板卡的CMOS Sensor驱动电路实物图。CMOS摄像头的驱动是本书后续章节中非常重要的一部分,本书后续将介绍OmniVision公司的OV7725,以设计完整的初始化、缓存、视频显示功能。板卡默认安装了笔者设计的OV7725,也可以更换CrazyFPGA中任意型号的摄像头模块。
图2.52 CMOS Sensor驱动电路实物图
8.RGB888 VGA驱动电路
视频可以在显示器上显示,通用的接口有VGA、HDMI等。如图2.53所示为VIP_Board板载的HDMI与VGA驱动电路,即RGB888 VGA接口实物图。其中,HDMI采用Silicon Image的SII9022转换芯片,而VGA采用ADI的ADV7123转换芯片。另外,板载STM8 MCU完成了SII9022芯片的初始化,默认配置为RGB888同步时序,如果没有特殊的需求,用户无须再对此进行编程。
图2.53 RGB888 VGA接口实物图
由于两者的驱动时序完全相同,均为RGB888的同步信号,因此在与FPGA互联时采用一分为二的结构,即同一套驱动程序可以同时在VGA或HMDI接口显示器上显示。
本书将基于VGA接口,详细介绍任意分辨率的VGA控制器的驱动设计、VGA字符显示设计,以及实时图像显示的实现,所有功能均可用于VGA或HDMI输出。
9.STM8模块的集成
如图2.54所示,为VIP_Board集成的实物图板载STM8模块电路,型号为STM8S103F3P6。该模块主要用于完成本书第9章中,关于MCU与FPGA之间进行SPI通信协议的测试与实现。此外,该模块还负责了HDMI驱动芯片SII9022的IIC初始化,使得HDMI与VGA可以采用完全一样的同步时序,并且无须关注初始化内容。
图2.54 实物图板载STM8S103F3P6模块电路
10.SDRAM驱动电路
为了实现CMOS Sensor的图像采集,以及VGA的显示,需要实现大容量数据的跨时钟数据交互,因此需要一个大容量存储设备。同时,由于VGA接口设计了RGB88824位模式,支持256级灰度,因此需要选择24位的SDRAM。不过,24位的SDRAM并不常见,这里笔者选用了Micron的MT48L4M32B2(或Hynix的HY57V283220T),这一款4Bank×1M×32bit的32位SDRAM驱动电路实物图如图2.55所示。
图2.55 32位SDRAM驱动电路实物图
在实际硬件电路中,由于使用了24位模式的RGB图像,因此只需要24位的存储深度,则截取SDRAM的低24位作为数据的存储通道。SDRAM的驱动是本书中非常重要的部分,相关的内容请仔细阅读后续章节。
11.用户接口的扩展
如图2.56所示是VIP_Board提供的用户扩展接口,该接口作为板卡的扩展接口,与Terasic板卡的DC3-40定义完全兼容。扩展接口作为板卡的外接通道,可用于扩展双目相机子卡、LCD子卡、USB2.0子卡或用户自定义子卡等。
图2.56 VIP_Board DC-40用户扩展I/O接口
在本书的后续章节中,笔者将基于VIP_Board板卡,在1.5万个LEs中采用Verilog HDL硬件描述语言,驱动所有外设电路,最大限度地利用FPGA的资源,最大限度地发挥其速度与性能的特性,引领读者了解FPGA。最后,笔者将从OV7725摄像头入手,通过基于SDRAM的VGA控制器的设计、跨时钟海量数据的处理,以及实时数据的采集,同步实现VGA的显示。
但是,这只是一个开始,本书也许能够带领读者学会基于FPGA的逻辑电路开发,学会时序电路的驱动,学会CMOS相机的采集与同步显示功能,但要想掌握本书DUT的设计精髓,还有很长的路要走。希望读者能够在掌握本书设计宗旨的基础上,融会贯通。希望本书后续基于VIP_Board的设计,能够给读者带来一定的帮助。