实验9VGA显示控制器实验.docx
- 文档编号:13262733
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:13
- 大小:342.24KB
实验9VGA显示控制器实验.docx
《实验9VGA显示控制器实验.docx》由会员分享,可在线阅读,更多相关《实验9VGA显示控制器实验.docx(13页珍藏版)》请在冰点文库上搜索。
实验9VGA显示控制器实验
实验9VGA显示控制器实验
1、实验目的:
1)理解VGA显示的基本原理。
2)学习计数器和LPM_ROM的使用方法
2、实验原理:
图1VGA显示控制器的原理框图
3、实验内容
1)彩条信号实验
a)创建锁相环,把输入的50MHz时钟变成25MHz,并创建元件。
b)利用所给的VGA_Pattern和VGA_Ctrl,创建元件。
c)完成顶层原理图,在QuartusⅡ上进行编译、综合、适配。
引脚锁定以及硬件下载测试。
2)显示自己的姓实验。
修改VGA_Pattern,利用if语句控制相应区域的相应值,在QuartusⅡ上进行编译、综合、适配。
引脚锁定以及硬件下载测试。
3)显示数字实验
a)创建lpm_rom,手动输入“0”的mif文件。
b)顶层文件为numTop.v,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
4)计数显示实验
a)创建“1~9”的lpm_rom,mif文件已给出。
b)加入计数器。
c)完成顶层文件,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
5)数字钟实验
在4)基础上加入位置控制,完成顶层文件,在QuartusⅡ上进行编译、综合、适配,硬件下载测试。
6)显示理工校徽实验
(2)moduleVGA_Pattern(//HostSideoRed,oGreen,oBlue,iCurrent_X,iCurrent_Y,iVGA_CLK,iRST_N);
//HostSide
outputregoRed;
outputregoGreen;
outputregoBlue;
input[9:
0]iCurrent_X;
input[9:
0]iCurrent_Y;
//ControlSignal
inputiVGA_CLK;
inputiRST_N;
always@(posedgeiVGA_CLKornegedgeiRST_N)
begin
if(!
iRST_N)
begin
oRed<=0;
oGreen<=0;
oBlue<=0;
end
else
begin
if(((iCurrent_Y>60)&&(iCurrent_Y<80))&&((iCurrent_X>200)&&(iCurrent_X<400)))
begin
oRed<=1;
oGreen<=0;
oBlue<=0;
end
elseif(((iCurrent_Y>80)&&(iCurrent_Y<240))&&((iCurrent_X>200)&&(iCurrent_X<240)))
begin
oRed<=1;
oGreen<=0;
oBlue<=0;
end
/*elseif(((iCurrent_Y>150)&&(iCurrent_Y<170))&&((iCurrent_X>260)&&(iCurrent_X<340)))
/*elseif((150 begin oRed<=1; oGreen<=0; oBlue<=0; end elseif(((iCurrent_Y>170)&&(iCurrent_Y<240))&&((iCurrent_X>290)&&(iCurrent_X<310))) /*elseif((170 begin oRed<=1; oGreen<=0; oBlue<=0; end*/ elseif(((iCurrent_Y>240)&&(iCurrent_Y<260))&&((iCurrent_X>200)&&(iCurrent_X<400))) /*elseif((240 begin oRed<=1; oGreen<=0; oBlue<=0; end else begin oRed<=0; oGreen<=0; oBlue<=0; end end end endmodule (3) (4)modulenumTop1(CLK,RST,R,G,B,HS,VS); inputCLK,RST; outputR,G,B,HS,VS; wireclk25Mhz,vga_clk; wire[9: 0]ram_data; wire[9: 0]X,Y; wire[6: 0]ram_addr; wire[3: 0]COUNT; wirecarry1; wireCLK1HZ; regvga_data; assignram_addr={Y[5: 2],X[4: 2]}; altPLL0u1(CLK,clk25Mhz); VGA_Ctrlu2( .iRed(vga_data), .iGreen(vga_data), .iBlue(vga_data), .oCurrent_X(X), .oCurrent_Y(Y), //VGASide .oVGA_R(R), .oVGA_G(G), .oVGA_B(B), .oVGA_HS(HS), .oVGA_VS(VS), .oVGA_CLK(vga_clk), //ControlSignal .iCLK(clk25Mhz), .iRST_N(RST)); demo_shuziu17(ram_addr,vga_clk,ram_data[0]); ROM1u21(ram_addr,vga_clk,ram_data[1]); ROM2u14(ram_addr,vga_clk,ram_data[2]); ROM3u15(ram_addr,vga_clk,ram_data[3]); ROM4u6(ram_addr,vga_clk,ram_data[4]); ROM5u7(ram_addr,vga_clk,ram_data[5]); ROM6u8(ram_addr,vga_clk,ram_data[6]); ROM7u9(ram_addr,vga_clk,ram_data[7]); ROM8u10(ram_addr,vga_clk,ram_data[8]); ROM9u11(ram_addr,vga_clk,ram_data[9]); /*demo_shuziu3(ram_addr,vga_clk,ram_data);*/ GeneralCnt#(4,9)u4(CLK1HZ,RST,1,COUNT,carry1); ClkDiv#(26,50000000)u5(CLK,RST,CLK1HZ); always@(X,Y) if(X<32&&Y<64) vga_data=ram_data[COUNT]; elseif(X<64&&Y<64) vga_data=ram_data[COUNT]; else vga_data=0; endmodule //任意倍整数分频器 moduleClkDiv(clk_in,rst_n,clk_out); parameterMSB=4,DIV_TIMES=10; inputclk_in,rst_n; outputclk_out; regclk_out; reg[MSB-1: 0]count; always@(negedgerst_norposedgeclk_in) begin if(rst_n==0) begin count<=0; end else begin if(count<(DIV_TIMES-1)) count<=count+1'b1; else count<=0; end end always@(negedgerst_norposedgeclk_in) begin if(rst_n==0) begin clk_out<=1'b0; end else begin if(count<(DIV_TIMES>>1)) clk_out<=1'b0; else clk_out<=1'b1; end end endmodule //通用计数器 moduleGeneralCnt(clk,reset_n, ena, cnt, carry_out ); parameterMSB=4,CNT_END=9; inputclk; inputreset_n; inputena; output[MSB-1: 0]cnt; outputcarry_out; reg[MSB-1: 0]cnt; regcarry_out; //计数 always@(posedgeclkornegedgereset_n) begin if(! reset_n) cnt<=0; elseif(ena&&cnt==CNT_END) cnt<=0; elseif(ena&&cnt cnt<=cnt+1'b1; end //产生进位输出 always@(posedgeclkornegedgereset_n)begin if(! reset_n) carry_out<=1'b0; elseif(ena&&cnt==CNT_END) carry_out<=1'b1; else carry_out<=1'b0; end endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验9 VGA显示控制器实验 实验 VGA 显示 控制器