毕业设计(论文)-基于FPGA的图像采集系统设计与实现

上传人:na****u 文档编号:56504713 上传时间:2022-02-21 格式:DOC 页数:34 大小:7.95MB
收藏 版权申诉 举报 下载
毕业设计(论文)-基于FPGA的图像采集系统设计与实现_第1页
第1页 / 共34页
毕业设计(论文)-基于FPGA的图像采集系统设计与实现_第2页
第2页 / 共34页
毕业设计(论文)-基于FPGA的图像采集系统设计与实现_第3页
第3页 / 共34页
资源描述:

《毕业设计(论文)-基于FPGA的图像采集系统设计与实现》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于FPGA的图像采集系统设计与实现(34页珍藏版)》请在装配图网上搜索。

1、 基于 FPGA 的图像采集系统设计与实现摘要 现在是科技迅速发展的年代,数字图像处理技术在这个年代中得到了迅猛的发展并在各行各业得到了广泛的应用。可编程逻辑器件(FPGA)凭借其较低的开发成本、较高的并行处理速度、较大的灵活性及其较短的开发周期等特点,在图像处理系统中有独特的优势。针对视频图像采集的可靠性和实时性,本设计采用Altera公司生产的CycloneEP2C8Q208C8NK芯片,先由CCD图像传感器采集模拟信号,在经过芯片TVP5150将模拟量转换为标准的YUV4:2:2的数据信号,把数据信号输入到FPGA芯片中并在其中将该数据转换到RGB色域后在输出到ADV7123芯片进行D/

2、A转换,最后经过VGA接口电路把处理过的图像呈现在显示屏上。经过相关的调试工作,系统通用性比较好,并且移动性能也不错。该系统的软件部分采用自顶向下的设计方法,模块化设计思想,硬件语言编程,只修改源程序,不必更改硬件电路,就可实现在线编程,实时控制,从而有效地减少系统的体积,不但增加了系统可靠性,降低研制成本,并且能够对控制逻辑进行修改升级,十分灵活。该系统包括三个功能模块:图像采集模块、图像处理模块、图像显示模块。关键词:FPGA;TVP5150;RGB 色域;ADV7123 芯片Image acquisition system based on FPGA design and impleme

3、ntationAbstractIt is the rapid development of science and technology, digital image processing technology has been rapid development in this era and has been widely used in all walks of life, and the maturity of FPGA technology has changed the commonly used parallel computer or digital signal proces

4、sor (DSP), a special integrated circuit (ASIC) as the embedded processor usage. Programmable logic device (FPGA) with its low cost, high parallel processing speed, flexibility and short development cycle and other characteristics, has its unique advantages in image processing system. The project dem

5、and, this paper presents a solution of image acquisition and processing system based on FPGA, and the use of low cost and high performance of Altera companys CyclonelI series FPGA EP2C8Q208C8N as the core, design and development of integrated system of hardware and software of image acquisition and

6、processing.In view of the reliability of video image acquisition and real-time performance, this paper describes how to FPGA for video acquisition system control. Using Cyclone EP2C8Q208C8NK chip produced by Altera company, is responsible for receiving and processing video data from the TVP5150 deco

7、ding, converts the data into RGB color gamut in the output to the ADV7123 chip. After debugging, the system better generality, and mobile performance is also good.Keywords: FPGA;TVP5150;RGB color gamut;ADV7123 chip目录1前言.11.课题背景与意义.11.2研究的现状及特点.21.研究的主要内容.22图像采集系统的硬件电路设计.32.采集系统硬件的总体设计.32.2FPGA 核心模块

8、.52.3外围电路.62.4 图像采集电路 .72.4.1图像传感器.72.4.2A/D 转换电路 .82.5图像显示电路.83图像采集系统的软件设计.113.1系统的设计环境.113.2 设计的主要流程.123.3设计内部数据量的变换.133.3.1IIC 数据总线 .134调试.17参考文献.18致谢.19附录.2011前言1.1课题背景与意义随着多媒体技术在各个应用领域不断普及,用户会不断要求新产品具有更大的图像容量、更高的图像质量和更快的图像处理速度,这为图像的存储和处理提出了更高的要求。在数字图像处理可视电话通信、数字电视等应用中,遇到的首要难题就是数据量过大,导致图像传输和存储成问

9、题。现场可编程门阵列(FPGA),与传统逻辑电路和门阵列相比 FPGA 具有不同的结构它增强了电路设计的灵活性。不但降低了开发成本,而且也减小了设计风险,并且充分挖掘图像处理算法中的并行性,在较低主频下能获得可观的执行速度。因此,在信号处理方面得到了广泛的应用。FPGA 作为系统以及图像采集处理板卡的核心器件,外围器件的电路和功能已经得到尽可能的简化,许多外围的功能器件的接口都不需要单独的接口芯片来完成,均由 FPGA来实现.整个系统中仅仅需要 FPGA 以及 FPGA 配置芯片、SDRAM、PCI 接口芯片三个主要的芯片,整体上看提高了电路的稳定性,而且其先进的开发工具使整个系统的设计调试周

10、期大大缩短。因此 FPGA 内部逻辑设计就成为图像采集处理系统设计的核心和关键。1.2研究的现状及特点20 世纪 20 年代,图像处理首次得到应用。20 世纪 60 年代中期,随电子计算机的发展得到普遍应用。60 年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容:傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。随着技术的发展,数字图像处理主要应用于通讯技

11、术、宇宙探索遥感技术和生物工程等领域。数字图像处理因易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强、精度高、处理方法灵活、信息保存、传送可靠的图像处理技术。主要用于图像变换、量测、模式识别、模拟以及图像产生,并广泛应用在遥感、宇宙观测、影像医学、通信、刑侦及多种工业领域1。而在对图像处理这一技术上 FPGA 具有以下几种特点:(1):高性能,可以在一片 FPGA 中完成多种处理功能(2):灵活性高使产品快速面市,方便产品跟新,满足不断发展的需求(3):低开发成本并且结构化容易操作(4):不会过时,其拥有非常广泛的客户基础,而且 FPGA 可以很容易的从一个工作节点移植到下一个工作

12、节点。21.3研究的主要内容先利用 CCD 图像传感器采集图像模拟量输入给 TVP5150 芯片,再利用 Altera 公司的CyclonelI 系列 FPGA EP2C8Q208C8N 芯片,负责接受和处理来自 TVP5150 解码后的视频数据,将该数据转换到 RGB 色域后在输出到 ADV7123 芯片再传输到液晶显示器。在系统设计过程中需要研究以下问题:(1):制定图像采集系统的整体的设计方案.。(2):设计图像采集模块,图像处理模块,图像显示模块,和 FPGA 主控制模块。(3):程序的编译与仿真,通过对程序的编译与仿真实现了对 FPGA 芯片控制,将数据转换到 RGB 色域后输出。系

13、统设计过程中主要通过 Quartus9.1 的开发环境编译系统的程序,然后使用下载软件将程序下载到单片机运行,通过运行情况修改程序再进行调试。调试的是从单个模块开始,然后进行综合调试至系统功能的实现。32图像采集系统的硬件电路设计2.1采集系统硬件的总体设计如图 2-1 所示:该系统包括几个功能模块:图像采集模块、图像处理模块、图像显示模块。其中图像采集模块主要由外接摄像头和 TVP5150 解码芯片组成,完成视频信号的采集和硬件解码能,并以 ITU-656 标准输出 YUV 4:2:2 信号;图像处理模块选用的FPGA 是 Altera 公司生产的 Cyclone EP2C8Q208C8N

14、芯片构成,完成系统控制,视频信号的采集以及后续处理等工作;图像显示模块主要由 ADV7123 芯片、VGA 接口和 CRT 显示器等组成,主要完成视频信号的数模转换,输出并显示视频信号。CCD 摄像头AD 转换及视频解码FPGA 解码色域转换控制 A/D 芯片控制 D/A 芯片控制 VGA 输出D/A 转换VGA 接口CRT显示图 2-1图像采集系统的硬件总体设计在图2-1所示视频图像的采集与处理过程中,FPGA作为整个系统的控制与处理核心,主要是通过该芯片的I/O 管脚来控制数据采集芯片TVP5150和高速D/A 转换芯片ADV7123,并且负责接受和处理来自TVP5150解码后的视频数据,

15、将该数据转换到RGB 色域后输出到ADV7123芯片。实物如图2-2所示:4图2-2硬件实物2.2FPGA 核心模块在充分考虑性价比和设计功能的基础上,决定采用Altera公司CycloneII系列的FPGA,它是Altera公司最新一代SRAMI艺、中等规模的低成本FPGA,与Stratix结构类似,是目前的主流产品。它支持各种单端I/O标准(如LVlvrL、LVCOS、和SSTL.2/3),通过LVDS和RSDS标准提供多达227个通道的差分I/O支持,LVDS通道高达640Mbps。它具有生成时钟锁相环以及DDR、SDR和快速RAM(FCRAM)存储器所需的专用双数据率(DDR)接口等。

16、它完全支持Altera公司的NiosII处理器,支持通过SOPC(可编程片上系统)软件对这个系列的芯片进行专门优化,使其性能得到进一步提高。其芯片如图2-3所示:5图2-3核心芯片引脚图2.3外围电路外围电路包括多种电路模块例如电源电路模块,晶振电路模块,复位电路模块等等。在众多电路模块中最重要的是电源模块,电源模块是整个系统的基础,它为其它各个硬件系统模块提供其所需的工作电源。而且由于系统采用的芯片较多,需要电源模块提供多种不同的电源信号,例如为数字电路芯片提供数字电压,而对模拟电力模块提供模拟电压,根据此要求电源模块的设计就需要能够输出多种不同标准的电压。所以采用AC/DC电源模块,把交流

17、220V转换成5V直流电再采用转换电路,转变成系统需要的电源,如数字电压1.2V、1.5V、2.5V、3.3V等,模拟电压2.5V。其电源转换电路如图2-4所示:6图2-4电源电路图2.4 图像采集电路2.4.1图像传感器目前来讲图像传感器可分为模拟视频摄像头和数字视频摄像头、彩色摄像头和黑白摄像头、CMOS 图像传感器和 CCD 图像传感器。其中 CCD 图像传感器以及 CMOS 图像传感器是当今常用的两种模拟/数字图像传感器。 在CCD与CMOS进行对比基本上两者都是利用矽感光二极体(photodiode)进行光与电的转换。光线越强、电力越强;反之,光线越弱、电力也越弱的道理,将光影像转换

18、为电子数字信号。由于构造上的基本差异,我们可以表列出两者在性能上的表现之不同。CCD的特色在于充分保持信号在传输时不失真(专属通道设计) ,透过每一个像素集合至单一放大器上再做统一处理,可以保持资料的完整性;CMOS的制程较简单,没有专属通道的设计,因此必须先行放大再整合各个像素的资料。因此在本次实验中决定采用CCD图像传感器。如图2-5所示:7图2-5CCD图像传感器2.4.2A/D 转换电路本设计采用的A/D转换芯片是TVP5150芯片。此芯片采用四面32脚封装。TVP5150是超低功耗,支持NTSC/PAL/SECAM等高格式的高性能视频解码器,它正常工作时,功耗仅115MW。它可以接受

19、两路CVBS或一路S-VIDEO信号,通过IIC总线设置其内部寄存器,可以输出8位4:2:2的ITUBT.656信号。TVP51510芯片采用14.13818MHZ晶振作为输入时钟,数字和模拟量均为1.8V,IO口电压为3.3V;信号输入有IP1A和IP1B两路,并且都进行阻抗匹配设计,防止对输入量信号的反射;YOUT【0:7】输出8路YCbCr信号,行场同步信号选择引脚HSYNC和VSYNC输出;SCLK引脚向DM644芯片输出27MHZ时钟信号,用来同步采集。其电路如图2-6所示:8图2-6A/D转换电路2.5图像显示电路图像显示电路包括了 D/A 转换电路和 VGA 接口电路。本实验采用

20、的D/A转换芯片是ADV7123芯片。ADV7123是三路高速、10位输入的视频DA转换器,具有330MHz的最大采样速度,与多种高精度的显示系统兼容,包括RS2343A和RS2 170,可以广泛应用于如HDTV、数字视频系统(16001200100Hz)、高分辨率的彩色图片图像处理、视频信号再现等,因此能够满足我们多方面应用需求。VGA接口是一种D型接口,上面共有15针孔,分成三排,每排五个。 其中,除了2根NC(Not Connect)信号、3根显示数据总线和5个GND信号,比较重要的是3根RGB彩色分量信号和2根扫描同步信号HSYNC和VSYNC针。VGA接口中彩色分量采用RS343电平

21、标准。其总体电路如图2-7所示:9图2-7D/A转换电路103图像采集系统的软件设计3.1系统的设计环境本次实验采用的是Quartus II9.1软件提供的多平台设计环境。Altera公司的Quartus II软件提供了可编程片上系统设计的一个综合开发环境,是进行EDA设计的基础工具。Quartus II集成开发环境包括以下内容:系统级设计,嵌入式软件开发,可编程逻辑器件(PLD)设计,综合,布局和布线,验证和仿真。Quartus II设计软件根据设计者需要提供了一个完整的多平台开发环境,它包含整个FPGA和CPLD设计阶段的解决方案。与以往的EDA工具相比,它更适合于设计团队基于模块的层次化

22、设计方法。Quartus II软件的典型设计流程一般可分为设计输入、设计实现和器件编程三个设计步骤及相应的功能仿真、时序仿真和器件测试三个设计验证过程:设计输入:设计输入有多种方式,目前最常用的有电路图和硬件描述语言两种。对于简单的设计,可采用原理图或ABEL语言设计。对于复杂的设计,可使用原理图或硬件描述语言(如VHDL,Verilog语言等),或两者混用,采用层次化设计方法,分模块、分层次地进行描述。设计输入软件在设计输入时会检查语法错误,产生网表文件,供设计实现和设计校验用。设计实现:设计实现是指从设计输入文件到位流文件的编译过程。在该过程中,编译软件自动地对设计文件进行综合、优化并针对

23、所选中的器件进行映射、布局和布线,产生相应的位流数据文件。器件编程:器件的编程也称为器件的配置,就是将位流数据文件配置到相应的FPGA器件中。FPGA器件的配置方式分为两大类;主动配置方式和被动配置方式。主动配置方式是由GAL器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置是由外部机或控制器控制配置过程。设计校验:对应于功能仿真、时序仿真、器件测试组成的设计验证过程。功能仿真验证设计的逻辑功能。在设计输入过程中,对部分功能或整个设计均可进行功能仿真。时序仿真是在设计实现后,针对器件的布局、布线方案进行的时延仿真,分析定时关系。器件测试是在器件编程后,通过实验或借助于测试工具,测

24、试器件最终功能和性能指标。开发环境如图3-1所示:11图3-1Quartus开发环境3.2 设计的主要流程本次实验其主要流程7如图3-2所示: 设计输入综合适配时序分析仿真下载CCD 摄像头约束图 3-2设计流程图具体设计步骤:一是设计输入,可以原理图输入,也可以用 VHDL 语言输入;输入完成后,就综合(其实综合就是编译,点击 COMPILE 图标就可以了,软件会自动实现综合过程) ;编译成功后,就开始时序仿真,通过创建输入信号波形(也就是激励文件) ,自12动产生输出波形,看输出波形否和我们设计的一致,是否正确,正确的话,通过 JTAG 下载。3.3设计内部数据量的变换根据视频图像采集系统

25、软件设计的功能可以推测出本实验包括的主要模块有IIC_CONFIG 模块和 TV_TO_VGA 模块。其中 IIC_CONFIG 模块主要是用来通过给 TVP5150赋值来控制 TVP5150 工作模式 。TVP5150 采用 IIC 总线接口配置,采用 Verilog HDL 硬件描述语言设计实现,集成了一个视频解码器,能够满足高达 6 通道模拟视频输入,可以自动检测标准模拟基带电视信号,包括 NTSC,PAL,SECAM 视频制式,转换为符合CCIR601/CCIR656 的 4:2:2 分量数字视频数据。对 TVP5150 的配置,只需将数据写入TVP5150 的寄存器中,所以 IIC

26、控制器只需实现 IIC 的写数据控制。整个功能由两个模块来完成,IIC_Controller 模块用来产生 IIC 总线规范的时序,IIC_Config 模块用来产生需要配置的寄存器的地址和配置参数5。TV_TO_VGA 模块主要包括 ITU_R656 解码模块、视频图像存储模块、YUV 到 RGB 色域模块,完成的功能包含视频信号的采集、分配、存储以及色度空间的转换。ITU_R656 解码模块对电视解码器芯片 TVP5150 解码得到的 YCrCb(4:4:2) 数据源在插值之后得到 YCrCb(4:4:4)信号,同时生成 13.5MHz 的像素时钟及消隐信号。其中双端口线路缓冲器模块和 H

27、SYNC2 模块可以实现去交织操作,时钟像素从 13.5MHz 变为 27MHz,HSYNC 信号从 31.4kHz 降到 15.7kHz。双端口吸纳路缓冲器模块内部使用一个 1K 字节长的双口 SRAM 将 YCrCb 数据量加倍。最终YCrCb2RGB 模块将 YCrCb2 数据送到 VGA 显示器上输出,VGA 时序发生器模块用来生成单独的 VGA 同步信号 VGA_HS 和 VGA_VS,以便 VGA 显示器显示输出数据8。3.3.1IIC 数据总线IIC 总线是用于连接微控制器及外围设备的。其主要特征有以下几点:(1):只要求两条总线线路:一条串行数据线 SDA,一条串行时钟线 SC

28、L。(2):每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;(3):它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;(4):串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s,快速模式下可达 400kbit/s,高速模式下可达 3.4Mbit/s;(5):连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制。而实现实现 IIC 总线通信协议主要有两种方法:利用 MCU 对两根 I/O 口线进行软件编程,模拟 IIC 总线的 SCL 和

29、SDA 时序要求;使用专用 IIC 总线控制核,但受其主机接口方式和时钟频率的限制,在有些场合应用并不方便。本设计中用 VHDL 对 FPGA 的两根I/O 口进行 IIC 总线控制核设计。13IIC控制模块的设计按照的是自顶而下的方法。其可分成三个模块: 12C_TOP模块、IIC_CMD模块、12C_CORE模块。其大致结构如图3-3所示: IIC_TOP模块IIC_CMD模块IIC_CORE模块CCD外部采集设备图3-3IIC模块内部设计此图中IIC_TOP是顶层控制模块主要负责接受FPGA发来的控制信号、命令及数据;发送由从设备读出的数据和确认位到FPGA;实现IIC控制核与FPGA的

30、中断通信机制;提供当前IIC的工作状态;把FPGA发出的命令信号IIC_cmd模块。IIC控制设计的核心工作是对IIC总线命令及时序的状态发送到划分。在控制核内设置了两个状态机,分别称为命令状态机和时序状态机,其中命令状态机用于管理IIC总线具体的读写操作的命令状态转移过程;时序状态机用于实现IIC总线上启动、停止、读、写、确认等命令的具体时序关系。IIC的工作原理:IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,

31、所以每个电路和模块都有唯一的地址,在信息的传输过程中,IIC总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。 IIC总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束

32、传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答14信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。IIC时序模块的电平交换如图3-4所示: 图3-4IIC时序模块的电平交换目前有很多半导体集成电路上都集成了IIC接口。带有IIC接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供II

33、C接口。3.3.2数据扫描程序水平线像素计数:在计数过程中先给与一个信号,如果是下降沿信号则像素计数器清零,如果不是则检查是否为最后一行,如果是则像素计数器清零,不是的话开始计数。always (posedge pixel_clock or negedge_reset_n) beginif (!reset_n) begin/ 寄存器清0pixel_count = 11h000;endelse if (pixel_count = (H_TOTAL - 1) begin/ 最后一行pixel_count = 11h000;/ 寄存器清0endelse beginpixel_count = pixe

34、l_count +1;endend创建水平同步脉冲:always (posedge pixel_clock or negedge reset_n) begin15if (!reset_n) beginhs = 1b0;/ 计数器清0endelse if (pixel_count = (H_ACTIVE + H_FRONT_PORCH -1) begin/ 开始计数hs = 1b1;endelse if (pixel_count = (H_TOTAL - H_BACK_PORCH -1) begin/ 停止计数hs = 4) & (SD_COUNTER =30)? CLOCK :0 );wire

35、 IIC_SDAT=SDO?1bz:0 ;21reg ACK1,ACK2,ACK3;wire ACK=ACK1 | ACK2 |ACK3;/-IIC COUNTERalways (negedge RESET or posedge CLOCK ) beginif (!RESET) SD_COUNTER=8b11111111;else beginif (GO=0) SD_COUNTER=8d0;else if (SD_COUNTER 8b11111111) SD_COUNTER=SD_COUNTER+1;endend/-always (negedge RESET or posedge CLOCK

36、) beginif (!RESET) begin IIC_SCLK=1;SDO=1; ACK1=0;ACK2=0;ACK3=0; END=1; endelsecase (SD_COUNTER)8d0 : begin ACK1=1 ;ACK2=1 ;ACK3=1 ; END=0; SDO=1; IIC_SCLK=1;end/start8d1 : begin SD=#1 IIC_DATA;SDO=#1 1;end8d2 : begin SDO= #1 0;end/SLAVE ADDR8d3 : begin IIC_SCLK=#1 0;end8d4: begin SDO=#1 SD23; end8d

37、5 : begin IIC_SCLK=#1 1;end8d6 : begin IIC_SCLK=#1 0;end8d7 : SDO= #1 SD22;8d8 : begin IIC_SCLK=#1 1;end8d9 : begin IIC_SCLK=#1 0;end8d10 : SDO= #1 SD21;8d11 : begin IIC_SCLK= #1 1;end8d12 : begin IIC_SCLK= #1 0;end8d13 : SDO= #1 SD20;8d14 : begin IIC_SCLK= #1 1;end8d15 : begin IIC_SCLK= #1 0;end8d1

38、6 : SDO= #1 SD19;8d17 : begin IIC_SCLK= #1 1;end8d18 : begin IIC_SCLK= #1 0;end8d19 : SDO= #1 SD18;8d20 : begin IIC_SCLK= #1 1;end8d21 : begin IIC_SCLK= #1 0;end228d22 : SDO= #1 SD17;8d23 : begin IIC_SCLK= #1 1;end8d24 : begin IIC_SCLK= #1 0;end8d25 : SDO=#1 SD16;8d26 : begin IIC_SCLK= #1 1;end8d27

39、: begin IIC_SCLK= #1 0;end8d28 : begin SDO= #1 1b1;end8d29:ACK1= #1 IIC_SDAT; /ACK8d30 : begin IIC_SCLK= #1 1;end8d31 : begin IIC_SCLK= #1 0;end/SUB ADDR8d32 : begin SDO=#1 SD15; end8d33 : begin IIC_SCLK= #1 1;end8d34 : begin IIC_SCLK= #1 0;end8d35 : SDO= #1 SD14;8d36 : begin IIC_SCLK= #1 1;end8d37

40、: begin IIC_SCLK= #1 0;end8d38 : SDO= #1 SD13;8d39 : begin IIC_SCLK= #1 1;end8d40 : begin IIC_SCLK= #1 0;end8d41 : SDO= #1 SD12;8d42 : begin IIC_SCLK= #1 1;end8d43 : begin IIC_SCLK= #1 0;end8d44 : SDO= #1 SD11;8d45 : begin IIC_SCLK= #1 1;end8d46 : begin IIC_SCLK= #1 0;end8d47 : SDO= #1 SD10;8d48 : b

41、egin IIC_SCLK= #1 1;end8d49 : begin IIC_SCLK= #1 0;end8d50 : SDO= #1 SD9;8d51 : begin IIC_SCLK= #1 1;end8d52 : begin IIC_SCLK= #1 0;end8d53 : SDO= #1 SD8;8d54 : begin IIC_SCLK= #1 1;end8d55 : begin IIC_SCLK= #1 0;end8d56 : begin SDO=#1 1b1;end8d57: begin ACK2=#1 IIC_SDAT;end/ACK8d58 : begin IIC_SCLK

42、= #1 1;end8d59 : begin IIC_SCLK= #1 0;end/DATA8d60 : begin SDO= #1 SD7; end8d61 : begin IIC_SCLK= #1 1;end8d62 : begin IIC_SCLK= #1 0;end8d63 : SDO= #1 SD6;238d64 : begin IIC_SCLK= #1 1;end8d65 : begin IIC_SCLK= #1 0;end8d66 : SDO= #1 SD5;8d67 : begin IIC_SCLK= #1 1;end8d68 : begin IIC_SCLK= #1 0;en

43、d8d69 : SDO= #1 SD4;8d70 : begin IIC_SCLK= #1 1;end8d71 : begin IIC_SCLK= #1 0;end8d72 : SDO= #1 SD3;8d73 : begin IIC_SCLK= #1 1;end8d74 : begin IIC_SCLK= #1 0;end8d75 : SDO= #1 SD2;8d76 : begin IIC_SCLK= #1 1;end8d77 : begin IIC_SCLK= #1 0;end8d78 : SDO= #1 SD1;8d79 : begin IIC_SCLK= #1 1;end8d80 :

44、 begin IIC_SCLK= #1 0;end8d81 : SDO= #1 SD0;8d82 : begin IIC_SCLK= #1 1;end8d83 : begin IIC_SCLK= #1 0;end8d84 : begin SDO=#1 1b1;end8d85:begin ACK3=#1 IIC_SDAT; end/ACK8d86 : begin IIC_SCLK= #1 1;end8d87 : begin IIC_SCLK= #1 0;end/stop 8d88 : beginSDO=#1 1b0; end8d89:begin IIC_SCLK= #1 1b1; end 8d9

45、0 : begin SDO= #1 1b1; END= #1 1; end default:begin SDO= #1 1b1;IIC_SCLK= #1 1b1; end endcaseendendmodule24VGA.vVGA.vinclude svga_defines.vmodule VGA(input reset_n,input pixel_clock,output reg hs,output reg vs,output reg blank,output reg DE,output reg 23:0 rgb);reg 10:0 pixel_count;reg 10:0 line_cou

46、nt;reg h_blank;reg v_blank;reg DE_d;/ CREATE THE HORIZONTAL LINE PIXEL COUNTERalways (posedge pixel_clock or negedge reset_n) beginif (!reset_n) begin/ on reset_n set pixel counter to 0pixel_count = 11h000;endelse if (pixel_count = (H_TOTAL - 1) begin/ last pixel in the linepixel_count = 11h000;/ re

47、set_n pixel counterendelse beginpixel_count = pixel_count +1;endend/ CREATE THE HORIZONTAL SYNCH PULSEalways (posedge pixel_clock or negedge reset_n) begin25if (!reset_n) begin/ on reset_nhs = 1b0;/ remove h_synchendelse if (pixel_count = (H_ACTIVE + H_FRONT_PORCH -1) begin/ start of h_synchhs = 1b1

48、;endelse if (pixel_count = (H_TOTAL - H_BACK_PORCH -1) begin/ end of h_synchhs = 1b0;endend/ CREATE THE VERTICAL FRAME LINE COUNTERalways (posedge pixel_clock or negedge reset_n) beginif (!reset_n) begin/ on reset_n set line counter to 0line_count = 10h000;endelse if (line_count = (V_TOTAL - 1)& (pi

49、xel_count = (H_TOTAL - 1)begin/ last pixel in last line of frame line_count = 10h000;/ reset_n line counterendelse if (pixel_count = (H_TOTAL - 1)begin/ last pixel but not last lineline_count = line_count + 1;/ increment line counterendend/ CREATE THE VERTICAL SYNCH PULSEalways (posedge pixel_clock

50、or negedge reset_n) beginif (!reset_n) begin/ on reset_nvs = 1b0;/ remove v_synchendelse if (line_count = (V_ACTIVE + V_FRONT_PORCH -1) & (pixel_count = H_TOTAL - 1) 26 begin/ start of v_synchvs = 1b1;endelse if (line_count = (V_TOTAL - V_BACK_PORCH - 1)& (pixel_count = (H_TOTAL - 1) begin/ end of v

51、_synchvs = 1b0;endend/ CREATE THE VERTICAL BLANKING SIGNALalways (posedge pixel_clock or negedge reset_n) beginif (!reset_n) begin/ on resetDE = 1b0; /DE_d = 1b0;endelse begin/DE_d = !blank;DE = DE_d;endendalways (posedge pixel_clock or negedge reset_n) beginif (!reset_n) begin/ on reseth_blank = 1b

52、0;/ remove the h_blankendelse if (pixel_count = (H_ACTIVE -2) begin/ start of HBIh_blank = 1b1;endelse if (pixel_count = (H_TOTAL -2) begin/ end of HBIh_blank = 1b0;endend/ CREATE THE VERTICAL BLANKING SIGNAL27/ the -2 is used instead of -1 in the horizontal factor because of the extra/ register del

53、ay for the composite blanking signal always (posedge pixel_clock or negedge reset_n) beginif (!reset_n) begin/ on resetv_blank = 1b0;/ remove v_blankendelse if (line_count = (V_ACTIVE - 1) & (pixel_count = H_TOTAL - 2) begin/ start of VBIv_blank = 1b1;endelse if (line_count = (V_TOTAL - 1) & (pixel_

54、count = (H_TOTAL - 2) begin/ end of VBIv_blank = 1b0;endend/ CREATE THE COMPOSITE BANKING SIGNALalways (posedge pixel_clock or negedge reset_n) beginif (!reset_n)begin/ on resetblank = 1b0;/ remove blankendelse if (h_blank | v_blank)/ blank during HBI or VBI beginblank = 1b1;endelse beginblank = 1b0

55、;/ active video do not blankendend/ CREATE THE COLOUR BAR SIGNAL/*always (posedge pixel_clock or negedge reset_n) beginif(!reset_n)beginrgb = 24b0;end28/else if(line_count = 1)/begin/rgb = 24hff00ff;/end/else if(pixel_count = 0)/begin/rgb = 24hffffff;/endelse if(pixel_count= 159)beginrgb 159 & pixel

56、_count = 319)beginrgb 319 & pixel_count = 479)beginrgb 479 & pixel_count = 639)beginrgb 639 & pixel_count = 799)beginrgb 799& pixel_count = 959)beginrgb 959 & pixel_count = 1119)beginrgb 1119 & pixel_count = 1279)beginrgb = 24hff00ff;endelsebeginrgb = 24b0;end29end*/always (posedge pixel_clock or negedge reset_n) beginif(!reset_n)beginrgb = 24b0;endelsebeginrgb = pixel_count10:3,8b0,pixel_count10:3;end/else/begin/rgb = 24b0;/endendendmodule30

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!