差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
book_excise_vga_if [2021/08/24 11:16]
zili
book_excise_vga_if [2021/08/24 12:18] (当前版本)
zili
行 223: 行 223:
 </​code>​ </​code>​
  
 +#### 3.5 VGA_OSD_RAM模块(VGA_OSD_RAM.v)
 +这里需要说明的是因为FPGA内部的RAM大小有限,无法存储10位三基色的图像数据,所以这里只存储了黑白2值图像。VGA_OSD_RAM模块根据读取出来的2值图像的值,也即是根据读取出来的是0还是1而给出相应的10位的三基色。其接口如下所示:
 +<code verilog> ​
  
-\\ +output reg [9:​0] oRed;//​输出像素色彩信号 
-\\ +output reg [9:​0] oGreen;​ //​输出像素色彩信号 
-### 4仿真结果+output reg [9:​0] oBlue;​ //​输出像素色彩信号 
 +input [18:​0] iVGA_ADDR;​ //​输出像素值存储的地址信号 
 +input iVGA_CLK;​ //​ VGA时钟:25.2MHz 
 +input [18:​0] iWR_ADDR;​ //​输入写地址信号 
 +input iWR_DATA;//​输入待写入数据 
 +input iWR_EN;//​输入写使能 
 +input iWR_CLK;//​输入写时钟 
 +input [9:​0] iON_R;//​当存储的像素点数据位1’b1时,对应的RGB三色值 
 +input [9:​0] iON_G;​ 
 +input [9:​0] iON_B;​ 
 +input [9:​0] iOFF_R;​ //​当存储的像素点数据位1’b0时,对应的RGB三色值 
 +input [9:​0] iOFF_G;​ 
 +input [9:​0] iOFF_B;​ 
 +input iRST_N;​ 
 +具体程序如下所示: 
 +reg [2:​0] ADDR_d;//​存储输入地址信号的低3位 
 +reg [2:​0] ADDR_dd;//​为时序需要将ADDR_d延时一个时钟周期 
 +always@(posedge iVGA_CLK or negedge iRST_N) begin 
 + if(!iRST_N) begin 
 + oRed <​= 0;​ 
 + oGreen <​= 0;​ 
 + oBlue <​= 0;​ 
 + ADDR_d <​= 0;​ 
 + ADDR_dd<​= 0;​
  
 + end
 + else begin
 + ADDR_d <​= iVGA_ADDR[2:​0];​
 +ADDR_dd <​= ~ADDR_d;  ​
 + oRed <​= ROM_DATA[ADDR_dd]?​ iON_R : iOFF_R; //​根据该像素对应
 +//​在存储器的值为0还是为1,输出项对应的10为RGB三色信号
  
 + oGreen <​= ROM_DATA[ADDR_dd]?​ iON_G : iOFF_G;
 + oBlue <​= ROM_DATA[ADDR_dd]?​ iON_B : iOFF_B;
 +end
 +end
 +//​存储了图像的RAM。
 +Img_RAM u0 ( //​写入接口,目前没有使用
 + .data(iWR_DATA),​
 + .wren(iWR_EN),​
 + .wraddress({iWR_ADDR[18:​3],​~iWR_ADDR[2:​0]}),​
 + .wrclock(iWR_CLK),​
 + //​ Read Out Side
 + .rdaddress(iVGA_ADDR[18:​3]),​
 + .rdclock(iVGA_CLK),​
 + .q(ROM_DATA));​
  
 +</​code>​
 +
 +读取出来的数据为8位宽,而8位宽的数据中的每一位对应一个像素点,同时8位位宽数据的低位对应的像素应该先显示在屏幕上,截取输入地址信号iVGA_ADDR的低3位作为MUX,输出相应的像素信息。
  
 \\ \\
 \\ \\
-### 5文件说明 +### 4运行结果 
 +通过SignalTap看到的FPGA内部场行同步信号如图 18 7所,其中VGA_HS为图 18 4所示时,而VGA_R为红色信号线,而VGA_VS为场同步信号线。
  
 +{{ :​图18-7.jpg |图18-7 运行结果}}
 +<WRAP centeralign>​
 +**图18-7 运行结果**
 +</​WRAP>​
  
 +\\
 +\\
 +### 5. 演示程序文件说明
 +|文件名|功能|
 +|TE3_Default.v|顶层模块。|
 +|Reset_Delay.v|延时模块。|
 +|VGA_Controller.v|VGA控制逻辑模块|
 +|VGA_OSD_RAM.v|存储显示数据模块。|
 +|VGA_PLL.v|产生频率为25.2MHz的VGA时序所需的主时钟。|
  
 \\ \\
 \\ \\
 ### 6. 演示程序使用 ### 6. 演示程序使用
 +演示设备:核心板、扩展板、带VGA接口的显示器。
  
 +演示方法:将显示器连接到开发板上面的VGA接口上,然后把程序下载到开发板上既可以看到显示器上显示的图像。