六安网站制作找哪家,什么是网站主机,网站建设设计设计公司哪家好,绵阳网站网站建设您需要一块带视频输出的 FPGA 板。 我们将在 640x480 下工作#xff0c;几乎任何视频输出都可以在此像素工作。 它有助于轻松地对 FPGA 板进行编程并相当熟悉 Verilog。 如果您没有开发板#xff0c;请不要担心#xff0c;您可以使用 Verilator 模拟器。
材料
Lattice iCE…您需要一块带视频输出的 FPGA 板。 我们将在 640x480 下工作几乎任何视频输出都可以在此像素工作。 它有助于轻松地对 FPGA 板进行编程并相当熟悉 Verilog。 如果您没有开发板请不要担心您可以使用 Verilator 模拟器。
材料
Lattice iCE40即用型开发平台Xilinx Artix-7视频板Xilinx Artix-7使用 SDL简单直接媒体层 进行 Verilator 模拟
屏幕是一个微型宇宙有自己的空间和时间。从远处看屏幕显示出平滑的二维图像。 近距离观察它会分解成许多单独的色块红色、绿色和蓝色。 我们将这种复杂性隐藏在像素的抽象概念后面我们可以控制的屏幕的最小部分。 典型的高清屏幕为 1920 x 1080总共 200 万像素。 即使 640x480 的显示屏也有超过 300,000 个像素。屏幕每秒刷新多次从而产生运动的错觉。 在 60 Hz 频率下1920x1080 屏幕每秒绘制 1.24 亿像素 快速处理大量数据的需求是在硬件级别处理图形的一大挑战。
显示连接器和布线各不相同但 VGA、HDMI 和 DisplayPort 具有相似的数据设计。 颜色有三个通道通常是红色、绿色和蓝色以及水平和垂直同步信号。 可能还有音频和配置数据但现在这并不重要。红、绿、蓝通道依次承载每个像素的颜色。当屏幕接收到水平同步和垂直同步上的新帧时屏幕开始新的一行。同步信号是消隐间隔的一部分。
消隐间隔允许阴极射线管 (CRT) 中的电子枪移动到下一行水平回扫或屏幕顶部垂直回扫。 现代数字显示器保留了消隐间隔并将其重新用于传输音频和其他数据。
驱动显示器
选择显示时序后我们就可以创建视频信号了。有四个阶段
像素时钟显示信号绘制图形视频输出VGA、HDMI、DisplayPort
像素时钟
我们知道我们需要 25.2 MHz 的频率但是如何实现它呢
FPGA 包括锁相环 (PLL)用于生成自定义时钟频率。遗憾的是并没有配置 PLL 的标准方法。我们需要特定于供应商的设计。
我已经为我们的板子提供了实施方案
iCE40板子
module clock_480p (input wire logic clk_12m, // input clock (12 MHz)input wire logic rst, // resetoutput logic clk_pix, // pixel clockoutput logic clk_pix_locked // pixel clock locked?);localparam FEEDBACK_PATHSIMPLE;localparam DIVR4b0000;localparam DIVF7b1000010;localparam DIVQ3b101;localparam FILTER_RANGE3b001;logic locked;SB_PLL40_PAD #(.FEEDBACK_PATH(FEEDBACK_PATH),.DIVR(DIVR),.DIVF(DIVF),.DIVQ(DIVQ),.FILTER_RANGE(FILTER_RANGE)) SB_PLL40_PAD_inst (.PACKAGEPIN(clk_12m),.PLLOUTGLOBAL(clk_pix), // use global clock network.RESETB(rst),.BYPASS(1b0),.LOCK(locked));endmodule开发平台
module clock_480p (input wire logic clk_12m, // input clock (12 MHz)input wire logic rst, // resetoutput logic clk_pix, // pixel clockoutput logic clk_pix_locked // pixel clock locked?);localparam FEEDBACK_PATHSIMPLE;localparam DIVR4b0000;localparam DIVF7b1000010;localparam DIVQ3b101;localparam FILTER_RANGE3b001;logic locked;SB_PLL40_PAD #(.FEEDBACK_PATH(FEEDBACK_PATH),.DIVR(DIVR),.DIVF(DIVF),.DIVQ(DIVQ),.FILTER_RANGE(FILTER_RANGE)) SB_PLL40_PAD_inst (.PACKAGEPIN(clk_12m),.PLLOUTGLOBAL(clk_pix), // use global clock network.RESETB(rst),.BYPASS(1b0),.LOCK(locked));endmodule显示信号
我们可以从像素时钟和显示时序生成同步信号。我们还想报告当前的屏幕位置以了解何时绘制内容。
我们用一个简单的显示模块来完成这两件事
module sim_480p (input wire logic clk_pix, input wire logic rst_pix, output logic [9:0] sx, output logic [9:0] sy, output logic hsync, output logic vsync, output logic de );parameter HA_END 639; parameter HS_STA HA_END 16; parameter HS_END HS_STA 96; parameter LINE 799; parameter VA_END 479; parameter VS_STA VA_END 10; parameter VS_END VS_STA 2; parameter SCREEN 524; always_comb beginhsync ~(sx HS_STA sx HS_END); vsync ~(sy VS_STA sy VS_END); de (sx HA_END sy VA_END);endalways_ff (posedge clk_pix) beginif (sx LINE) begin // last pixel on line?sx 0;sy (sy SCREEN) ? 0 : sy 1; // last line on screen?end else beginsx sx 1;endif (rst_pix) beginsx 0;sy 0;endend
endmodule测试台
绘制图形
视频输出
Verilator仿真
关联项目
驱动 32×32 RGB LED 矩阵FPGA游戏台VGA时钟光束射线追踪器赛车FPGA 媒体播放器
参阅一亚图跨际
参阅二亚图跨际