一、RTL视图

二、
sync_module
module vga_module( input CLOCK_50, input[3:0] KEY, output VGA_CLK, output[7:0] VGA_R,VGA_G,VGA_B, output VGA_HS,VGA_VS, output VGA_BLANK_N, output VGA_SYNC_N ); assign VGA_SYNC_N=1'b0; //If not SOG,Sync input should be tied to 0; assign VGA_BLANK_N=VGA_HS&&VGA_VS; pll_module u1( .inclk0 ( CLOCK_50 ), .c0 ( VGA_CLK ) ); wire[10:0] X,Y; wire valid; wire RST_N; assign RST_N=KEY[0]; sync_module u2( .VGA_CLK(VGA_CLK), .RST_N(RST_N), .VGA_HS(VGA_HS), .VGA_VS(VGA_VS), .X(X), .Y(Y), .valid(valid) ); wire[63:0] Rom_Data; wire[5:0] Rom_Addr; rom_module u4( .clock(VGA_CLK), .address(Rom_Addr), .q(Rom_Data) ); vga_control_module u3( .VGA_CLK(VGA_CLK), .RST_N(RST_N), .VGA_R(VGA_R), .VGA_G(VGA_G), .VGA_B(VGA_B), .X(X), .Y(Y), .valid(valid), .Rom_Addr(Rom_Addr), .Rom_Data(Rom_Data) ); endmodule
vga_control_module
module vga_control_module(
input VGA_CLK,
input RST_N,
input[10:0] X,Y,
input valid,
input[63:0] Rom_Data,
output[5:0] Rom_Addr,
output[7:0] VGA_R,VGA_G,VGA_B
);
reg[5:0] m;
always@(posedge VGA_CLK or negedge RST_N)
if(!RST_N)
m<=6'b0;
else if(valid && Y<64)
m<=Y[5:0];
reg[5:0] n;
always@(posedge VGA_CLK or negedge RST_N)
if(!RST_N)
n<=6'b0;
else if(valid && X<64)
n<=X[5:0];
assign Rom_Addr=m;
assign VGA_R=valid ? {Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n]} : 8'b0;
assign VGA_G=valid ? {Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n]} : 8'b0;
assign VGA_B=valid ? {Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n],Rom_Data[6'd63-n]} : 8'b0;
endmodule
vga_module
//* Display a photo pika.bmp(64x64) module vga_module( input CLOCK_50, input[3:0] KEY, output VGA_CLK, output[7:0] VGA_R,VGA_G,VGA_B, output VGA_HS,VGA_VS, output VGA_BLANK_N, output VGA_SYNC_N ); assign VGA_SYNC_N=1'b0; //If not SOG,Sync input should be tied to 0; assign VGA_BLANK_N=VGA_HS&&VGA_VS; pll_module u1( .inclk0 ( CLOCK_50 ), .c0 ( VGA_CLK ) ); wire[10:0] X,Y; wire valid; wire RST_N; assign RST_N=KEY[0]; sync_module u2( .VGA_CLK(VGA_CLK), .RST_N(RST_N), .VGA_HS(VGA_HS), .VGA_VS(VGA_VS), .X(X), .Y(Y), .valid(valid) ); wire[63:0] Rom_Data; wire[5:0] Rom_Addr; rom_module u4( .clock(VGA_CLK), .address(Rom_Addr), .q(Rom_Data) ); vga_control_module u3( .VGA_CLK(VGA_CLK), .RST_N(RST_N), .VGA_R(VGA_R), .VGA_G(VGA_G), .VGA_B(VGA_B), .X(X), .Y(Y), .valid(valid), .Rom_Addr(Rom_Addr), .Rom_Data(Rom_Data) ); endmodule