一、实验目的和任务

学习VGA图像显示控制电路设计。

二、设计代码(或原理图)、仿真波形及分析

1、rom 为图像数据存储模块

// megafunction wizard: %ROM: 1-PORT%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: altsyncram // ============================================================
// File Name: rom.v
// Megafunction Name(s):
//          altsyncram
//
// Simulation Library Files(s):
//          altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 13.1.0 Build 162 10/23/2013 SJ Full Version
// ************************************************************//Copyright (C) 1991-2013 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors.  Please refer to the
//applicable agreement for further details.// synopsys translate_off
`timescale 1 ps / 1 ps
// synopsys translate_on
module rom (address,clock,q);input  [16:0]  address;input     clock;output  [23:0]  q;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endiftri1   clock;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endifwire [23:0] sub_wire0;wire [23:0] q = sub_wire0[23:0];altsyncram    altsyncram_component (.address_a (address),.clock0 (clock),.q_a (sub_wire0),.aclr0 (1'b0),.aclr1 (1'b0),.address_b (1'b1),.addressstall_a (1'b0),.addressstall_b (1'b0),.byteena_a (1'b1),.byteena_b (1'b1),.clock1 (1'b1),.clocken0 (1'b1),.clocken1 (1'b1),.clocken2 (1'b1),.clocken3 (1'b1),.data_a ({24{1'b1}}),.data_b (1'b1),.eccstatus (),.q_b (),.rden_a (1'b1),.rden_b (1'b1),.wren_a (1'b0),.wren_b (1'b0));defparamaltsyncram_component.address_aclr_a = "NONE",altsyncram_component.clock_enable_input_a = "BYPASS",altsyncram_component.clock_enable_output_a = "BYPASS",altsyncram_component.init_file = "../timg.mif",altsyncram_component.intended_device_family = "Cyclone V",altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",altsyncram_component.lpm_type = "altsyncram",altsyncram_component.numwords_a = 131072,altsyncram_component.operation_mode = "ROM",altsyncram_component.outdata_aclr_a = "NONE",altsyncram_component.outdata_reg_a = "CLOCK0",altsyncram_component.widthad_a = 17,altsyncram_component.width_a = 24,altsyncram_component.width_byteena_a = 1;endmodule// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: ADDRESSSTALL_A NUMERIC "0"
// Retrieval info: PRIVATE: AclrAddr NUMERIC "0"
// Retrieval info: PRIVATE: AclrByte NUMERIC "0"
// Retrieval info: PRIVATE: AclrOutput NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_ENABLE NUMERIC "0"
// Retrieval info: PRIVATE: BYTE_SIZE NUMERIC "8"
// Retrieval info: PRIVATE: BlankMemory NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_INPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: CLOCK_ENABLE_OUTPUT_A NUMERIC "0"
// Retrieval info: PRIVATE: Clken NUMERIC "0"
// Retrieval info: PRIVATE: IMPLEMENT_IN_LES NUMERIC "0"
// Retrieval info: PRIVATE: INIT_FILE_LAYOUT STRING "PORT_A"
// Retrieval info: PRIVATE: INIT_TO_SIM_X NUMERIC "0"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: PRIVATE: JTAG_ENABLED NUMERIC "0"
// Retrieval info: PRIVATE: JTAG_ID STRING "NONE"
// Retrieval info: PRIVATE: MAXIMUM_DEPTH NUMERIC "0"
// Retrieval info: PRIVATE: MIFfilename STRING "../timg.mif"
// Retrieval info: PRIVATE: NUMWORDS_A NUMERIC "131072"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: RegAddr NUMERIC "1"
// Retrieval info: PRIVATE: RegOutput NUMERIC "1"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: SingleClock NUMERIC "1"
// Retrieval info: PRIVATE: UseDQRAM NUMERIC "0"
// Retrieval info: PRIVATE: WidthAddr NUMERIC "17"
// Retrieval info: PRIVATE: WidthData NUMERIC "24"
// Retrieval info: PRIVATE: rden NUMERIC "0"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: ADDRESS_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: CLOCK_ENABLE_INPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: CLOCK_ENABLE_OUTPUT_A STRING "BYPASS"
// Retrieval info: CONSTANT: INIT_FILE STRING "../timg.mif"
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone V"
// Retrieval info: CONSTANT: LPM_HINT STRING "ENABLE_RUNTIME_MOD=NO"
// Retrieval info: CONSTANT: LPM_TYPE STRING "altsyncram"
// Retrieval info: CONSTANT: NUMWORDS_A NUMERIC "131072"
// Retrieval info: CONSTANT: OPERATION_MODE STRING "ROM"
// Retrieval info: CONSTANT: OUTDATA_ACLR_A STRING "NONE"
// Retrieval info: CONSTANT: OUTDATA_REG_A STRING "CLOCK0"
// Retrieval info: CONSTANT: WIDTHAD_A NUMERIC "17"
// Retrieval info: CONSTANT: WIDTH_A NUMERIC "24"
// Retrieval info: CONSTANT: WIDTH_BYTEENA_A NUMERIC "1"
// Retrieval info: USED_PORT: address 0 0 17 0 INPUT NODEFVAL "address[16..0]"
// Retrieval info: USED_PORT: clock 0 0 0 0 INPUT VCC "clock"
// Retrieval info: USED_PORT: q 0 0 24 0 OUTPUT NODEFVAL "q[23..0]"
// Retrieval info: CONNECT: @address_a 0 0 17 0 address 0 0 17 0
// Retrieval info: CONNECT: @clock0 0 0 0 0 clock 0 0 0 0
// Retrieval info: CONNECT: q 0 0 24 0 @q_a 0 0 24 0
// Retrieval info: GEN_FILE: TYPE_NORMAL rom.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL rom.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL rom.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL rom.bsf TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL rom_inst.v FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL rom_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf

2、VGA模块扫描显示功能,代码如下所示

module VGA(clk,hs,vs,rgbout,rgbin,vc,hc,blank,sync);input clk;input [23:0]rgbin;output hs,vs;output blank,sync;output [23:0]rgbout;output[9:0]hc,vc;reg [9:0]hcnt,vcnt;reg hs,vs;reg [9:0]x;reg [9:0]y;reg [23:0]rgbout;assign hc=hcnt,vc=vcnt;assign sync=1'b1;assign blank =~((hcnt>799)||(vcnt>524));always@(posedge clk) // 行计数800begin if(hcnt==10'd799)hcnt<=10'd0;else hcnt<=hcnt+1'b1;endalways@(posedge clk) // 场计数525begin if(hcnt==10'd639+10'd8)begin if(vcnt==10'd524)vcnt<=10'd0;else vcnt<=vcnt+1'b1;endendalways@(posedge clk)    // 产生行同步有效信号 begin if ((hcnt > (10'd640+10'd8+10'd8)) && (hcnt < (10'd640+10'd8+10'd8+10'd96)))hs<=1'b0;elsehs<=1'b1;endalways@(vcnt)          // 产生场同步有效信号  beginif ((vcnt > (10'd480+10'd8+10'd2)) && (vcnt < (10'd480+10'd8+10'd2+10'd2)))vs<=1'b0;elsevs<=1'b1;endalways@(posedge clk)    // 送行图像beginif ((hcnt<10'd640)&&(vcnt<480))rgbout=rgbin;else rgbout=24'h000000;endendmodule

3、clock模块实现将输入时钟二分频后输出功能,代码如下所示

module clock(clkin,clkout);input clkin;output clkout;reg clkout;always @(posedge clkin) clkout=~clkout;
endmodule

4、顶层文件,上述各模块连接成的原理图,如下所示

5、实验结果截图及原理分析

原理分析:首先根据VGA图像的扫描时序与实验箱核心板原理图的VGA端口用VerilogHDL语言写出VGA模块,然后新建一个ROM模块把原本已经准备的mif格式的图片加入其中,最后写一个clock模块并生成电路模块进行电路连接。在烧录代码后,FPGA会不断地根据VGA图像的扫描时序来读取图片中的每个像素点RGB,通过时钟信号一直扫描下去,由此能显示出整张图片。

FPGA综合实验 05 - | VGA彩条信号显示控制电路设计相关推荐

  1. 简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc

    VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. 熟悉 VGA 接口协议规范. 4.通 ...

  2. 简单的eda实验vga在linux系统中,《EDA实验报告VGA彩条显示.doc

    <EDA实验报告VGA彩条显示 VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. ...

  3. 基于Quartus II软件的FPGA综合实验——多功能数字钟

    有很多自制元器件,内部电路附在文章中 文章目录 前言 一.设计要求 二.设计原理 三.设计过程 1.数码管扫描模块 2.计时模块 3.闹钟模块 4.闹钟响铃模块 5.数码管显示模块 6.整点报时功能 ...

  4. PLC实验:LED 数码显示控制

    实验项目名称:LED 数码显示控制 一.实验控制要求 置位启动开关 K0 为 ON 时,LED 数码显示管依次循环显示 0.1.2.3-9.A.B.C- F: 二.端口分配 三.实验程序梯形图 PLC ...

  5. led数码显示控制plc实验_实验三 LED数码显示控制 PLC实验报告

    广州大学学生实验报告 开课学院及实验室:工程北 529 2015 年 5 月 28 日 学院 机械与电气 工程 年级. 专 业.班 姓名 学号 实验课程名称 电气控制与可编程控制器 成绩 实验项目名称 ...

  6. led数码显示控制plc实验_实验三led数码显示控制plc实验报告

    开课学院及实验室:工程北 529 2015 年 5 月 28 日 学院 机械与电气 工程 年级. 专 业.班 姓名 学号 实验课程名称 电气控制与可编程控制器 成绩 实验项目名称 实验三 LED 数码 ...

  7. led数码显示控制plc实验_实验三LED数码显示控制PLC实验报告.doc

    实验三LED数码显示控制PLC实验报告 广州大学学生实验报告 开课学院及实验室:工程北529 2015年 5 月28 日 学院机械与电气工程年级.专业.班姓名学号实验课程名称 电气控制与可编程控制器成 ...

  8. 单片机综合实验 - 05 | 简易电子钟设计

    一.实验目的和任务 1.熟悉电子钟的基本工作原理. 2.掌握简易电子钟的硬件结构及程序设计方法. 二.实验原理简介 电子钟是人们日常生活中不可或缺的计时工具.与数字集成电路纯硬件实现相比,采用单片机实 ...

  9. FPGA—VGA 显示器显示彩条(附代码)

    目录 1. 理论 2. 实操 2.1 顶层设计 2.1.1 模块框图 2.1.2 代码编写 2.1.3 仿真验证 2.2 时钟生成模块 2.3 VGA时序控制模块 2.3.1 模块框图 2.3.2 波 ...

最新文章

  1. 双系统安装的流程记录
  2. 将图片读取为像素格式
  3. mysql 查询多边形_mysql中判断一个点是否在多边形中
  4. 七月在线 《关键点检测概览与环境配置》
  5. vue 实现 web端滚动刷新 自定义指令
  6. idea springboot一直卡在启动 没有日志输出
  7. 0基础学python做什么工作好-零基础自学python到什么程度才有机会去小公司实习?...
  8. bzoj 1015: [JSOI2008]星球大战starwar
  9. Kotlin中文开发者文档(一)
  10. 程序员入门:三本必看的书
  11. UE4 Datasmith 格式简述
  12. 经纬度(度分秒)坐标转换为小数格式(weixin公众号【图说GIS】)
  13. 情迁机器人Tim_情迁机器人插件-情迁机器人app下载V1.5.0安卓版-西西软件下载
  14. Hi3531添加16GByte(128Gbit) NAND Flash支持
  15. 趁你年轻快来学学如何搭建一个小说网站,这里有超详细教程,快进来看看吧,错过了可不要后悔哟。
  16. graphpad两组t检验_GraphPad prism -- t检验操作步骤解析~
  17. 奥卡姆剃刀:让事情回归简单
  18. typedef和define
  19. 物联16:4 ISO/IEC 14443-3 防冲突、防碰撞算法、Type A、Type B
  20. Spring Security和 JWT两大利器来打造一个简易的权限系统。

热门文章

  1. 【VTK】VTK删除三维模型指定三角形面片
  2. SpringCloud第11讲:用Nacos远程管理配置
  3. 代码编辑快捷键使用说明
  4. 天池冠军比赛心得体会
  5. 自定义Gallery实现QQ附近的人和京东金融选择存款时间效果
  6. Elasticsearch:基于文件的用户认证
  7. C++编程法则365天一天一条(200)using用法之声明
  8. javascript实用小技巧—实现分栏显示
  9. 十一、OpenGL的坐标系统
  10. (4)(4.6.5) 加速度计校准