基于fpga的vga彩条图像显示内容摘要:

output c1。 wire [5:0] sub_wire0。 wire [0:0] sub_wire5 = 139。 h0。 wire [1:1] sub_wire2 = sub_wire0[1:1]。 wire [0:0] sub_wire1 = sub_wire0[0:0]。 wire c0 = sub_wire1。 wire c1 = sub_wire2。 wire sub_wire3 = inclk0。 wire [1:0] sub_wire4 = {sub_wire5, sub_wire3}。 altpll altpll_ponent ( .inclk (sub_wire4), .clk (sub_wire0), .activeclock (), .areset (139。 b0), .clkbad (), .clkena ({6{139。 b1}}), .clkloss (), .clkswitch (139。 b0), .configupdate (139。 b0), .enable0 (), .enable1 (), .extclk (), .extclkena ({4{139。 b1}}), .fbin (139。 b1), .fbmimicbidir (), .fbout (), .locked (), .pfdena (139。 b1), .phasecounterselect ({4{139。 b1}}), .phasedone (), .phasestep (139。 b1), .phaseupdown (139。 b1), .pllena (139。 b1), .scanaclr (139。 b0), .scanclk (139。 b0), .scanclkena (139。 b1), 11 .scandata (139。 b0), .scandataout (), .scandone (), .scanread (139。 b0), .scanwrite (139。 b0), .sclkout0 (), .sclkout1 (), .vcooverrange (), .vcounderrange ())。 defparam = 1, = 50, = 1, = 0, = 1, = 50, = 1, = 0, = 50000, = Cyclone II, = CBX_MODULE_PREFIX=pll, = altpll, = NO_COMPENSATION, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_USED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, 12 = PORT_USED, = PORT_USED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED, = PORT_UNUSED。 endmodule 显示 模块 VGA 显示 模块用于产生 彩条图像 , 实现横彩条、竖彩条、棋盘彩条转换, 并控制显示范围和消隐范围以及产生水平同步时序信号 hs 和垂直同步时序信号 vs 的值。 一般来说,时钟计数器通过像素时钟来控制水平时序信号。 译码计数器的值产生 HS 信号。 在指定的行,计数器产生当前像素显示的位置。 一个独立的计数器产生垂直时序信号。 垂直同步计数器在每个 HS 脉冲信号来临时自动加1,译码值产生 VS 信号。 计数器产生当前显示行。 这两个计数器从地址到显示缓冲器连续计数。 开发板的 DDR SDRAM 提供了一个足够的显示缓冲区。 在 HS 脉冲的开始和 VS 脉冲的开始没有具体规定相对的时序关系。 因此,计数器被分配到简单格式的视频 RAM 地址,或分配到同步脉冲产生器的最小译码逻辑。 设计 部分代码如下 : module vga_A(clock, switch, disp_RGB, hsync, vsync )。 input clock。 //系统输入时钟 input [1:0]switch。 output [2:0]disp_RGB。 //VGA 数据输出 //disp_RGB[0]:蓝 //disp_RGB[1]:红 //disp_RGB[2]:绿 output hsync。 //VGA 行同步信号 output vsync。 //VGA 场同步信号 reg [11:0] hcount。 //VGA 行扫描计数器 reg [11:0] vcount。 //VGA 场扫描计数器 reg [2:0] data。 reg [2:0] h_dat。 reg [2:0] v_dat。 wire dat_act。 13 wire hsync。 wire vsync。 //VGA 行、场扫描时序参数表 parameter //1024*768@60Hz//65M h_Front_porch = 1239。 d24, h_Sync_pulse = 1239。 d136, h_Back_porch = 1239。 d160, Whole_line = 1239。 d1344, v_Front_porch = 1239。 d3, v_Sync_pulse = 1239。 d6, v_Back_porch = 1239。 d29, Whole_frame = 1239。 d806。 //************************VGA 驱动部分 ******************************* //行场扫描 //行扫描 hcount 从 0 开始计数到 Whole_line //场扫描 vcount 从 0 开始计数到 Whole_frame always @(posedge clock) begin // if (hcount == Whole_line) //行扫描计数到 Whole line if (hcount == 1239。 d1344) //行扫描计数到 Whole line begin hcount = 139。 d0。 // if (vcount == Whole_frame) //场扫描计数到 Whole frame if (vcount == 1239。 d806) //场扫描计数到 Whole frame vcount = 139。 d0。 else vcount = vcount + 139。 d1。 end else begin hcount = (hcount + 139。 d1)。 end end //同步信号输出 reg hsync_r,vsync_r。 always @(posedge clock) begin hsync_r = (hcount h_Sync_pulse)。 vsync_r = (vcount v_Sync_pulse)。 end assign hsync = hsync_r。 //产生行同步信号 (低电平 ) 14 assign vsync = vsync_r。 //产生场同步信号 (低电平 ) //数据输出 assign dat_act = ((hcount = (h_Sync_pulse + h_Back_porch)) amp。 amp。 (hcount (Whole_line h_Front_porch))) amp。 amp。 ((vcount = (v_Sync_pulse + v_Back_porch)) amp。 amp。 (vcount (Whole_frame v_Front_porch)))。 assign disp_RGB = (dat_act) ? data : 339。 h00。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。