📄 vga4.v
字号:
`include "vga_sram.v"
module vga4(
//input
clk,//50.350Mhz
//output
hor_clk,
ver_clk,
red,
green,
blue,
vlcsp1,
vblnp,
//
rscs1,radc1,ra1,rd1,rbw1,rwe1,roe1,
//input
write,mouse_row,mouse_column,
clk2,change_row,change_column,
//communicate with main
//input
next_state,got_next_state,
//output
send_next_state,
next_row_state,next_column_state
);
//communicate with main
input [3:0]next_state;
input got_next_state;
output [3:0]next_row_state,next_column_state;
output send_next_state;
reg [3:0]next_row_state,next_column_state;
reg send_next_state;
reg [3:0]row,column;
input [3:0]change_row,change_column;
//
input clk;
output clk2;
output hor_clk,ver_clk,vlcsp1,vblnp;
output [7:0]red,green,blue;
//sram
inout [31:0]rd1;
wire [31:0]rd1;
output rscs1,radc1,rwe1,roe1;
output [3:0]rbw1;
output [15:0]ra1;
input write;
reg read,rscs1,radc1,rwe1,roe1,clk2;
reg [15:0]radd,ra1;
wire [3:0]rbw1;
reg [31:0]datain;
//
reg hor_clk,ver_clk;
reg [7:0]red;
reg [7:0]green;
reg [7:0]blue;
reg [9:0]pixel_counter;
reg [9:0]line_counter;
//
reg [3:0]color;
//
reg [3:0]counter1;
reg [4:0]counter2;
reg counter3;
reg [3:0]temp1,temp2,temp3,temp4,temp5;
reg [31:0]out;
input [3:0]mouse_row,mouse_column;//mouse
reg change_state;
//
reg count;
//
assign vlcsp1=1;
assign vblnp=1;
/////
reg [3:0]row_state,column_state;
reg [4:0]row_counter;
reg [3:0]state;
reg [3:0]main_state;
//reg [63:0]main_state;
//reg [63:0]row1,row2,row3,row4,row5,row6,row7,row8,row9,row10,row11,row12,row13,row14,row15,row16;
/////
/*
reg [5:0]data_counter;
reg [5:0]data_counter2;
reg [5:0]data_counter3;
reg [5:0]data_counter4;
reg [5:0]data_counter5;
reg [5:0]data_counter6;
reg [5:0]data_counter7;
reg [5:0]data_counter8;
reg write2;
reg [2:0]counter;
*/
reg write2;
vga_sram vga_sram(clk,read,radd,datain,rscs1,radc1,ra1,rd1,rbw1,rwe1,roe1);
///////////50350 clk ///////// 25175k clk2
always@(rd1)
begin
out=rd1;
end
always@(posedge clk)
begin
if(count==0)
begin
clk2=1;
end
else if(count==1)
begin
clk2=0;
end
count=count+1;
//row1={12'd0,4'd13,4'd12,4'd11,4'd10,4'd9,4'd8,4'd7,4'd6,4'd5,4'd1,4'd2,4'd3,4'd4};
//row2=1;row3=1;row4=0;row5=0;row6=0;row7=0;row8=0;
//row9=0;row10=0;row11=0;row12=0;row13=0;row14=0;row15=0;row16=0;
//mouse_row=5;
//mouse_column=9;
end
/////////clk end
always@(posedge clk2)
begin//2
////aaa
if(write==1)
begin
/*
read=0;
if(write2==0)
begin
////2
case(counter)
0:begin
case(data_counter)
0:
begin
radd=0;
datain=32'd0;
end
1:
begin
radd=601;
datain={4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000};
end
2:
begin
radd=602;
datain={4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0001,4'b0000,4'b0000};
end
//2
3:
begin
radd=603;
datain={4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000,4'b0000};
end
4:
begin
radd=604;
datain={4'b0000,4'b0000,4'b0000,4'b0000,4'b0001,4'b0010,4'b0000,4'b0000};
end
//3
5:
begin
radd=605;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001};
end
6:
begin
radd=606;
datain={4'b0001,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//4
7:
begin
radd=607;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'd3,4'd3,4'd3};
end
8:
begin
radd=608;
datain={4'd3,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//5
9:
begin
radd=609;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'd3,4'd3,4'b0001,4'b0001};
end
10:
begin
radd=610;
datain={4'd3,4'd3,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//6
11:
begin
radd=611;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'd3,4'd3,4'b0001,4'b0001};
end
12:
begin
radd=612;
datain={4'd3,4'd3,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//7
13:
begin
radd=613;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001};
end
14:
begin
radd=614;
datain={4'd3,4'd3,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//8
15:
begin
radd=615;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001,4'd3};
end
16:
begin
radd=616;
datain={4'd3,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//9
17:
begin
radd=617;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'd3,4'd3};
end
18:
begin
radd=618;
datain={4'b0001,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//10
19:
begin
radd=619;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001,4'b0001};
end
20:
begin
radd=620;
datain={4'b0001,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//11
21:
begin
radd=621;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'd3,4'd3};
end
22:
begin
radd=622;
datain={4'b0001,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//12
23:
begin
radd=623;
datain={4'b0000,4'b0000,4'b0001,4'b0001,4'b0001,4'b0001,4'd3,4'd3};
end
24:
begin
radd=624;
datain={4'b0001,4'b0001,4'b0001,4'b0001,4'b0010,4'b0010,4'b0000,4'b0000};
end
//13
25:
begin
radd=625;
datain={4'b0000,4'b0001,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010};
end
26:
begin
radd=626;
datain={4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0000,4'b0000};
end
//14
27:
begin
radd=627;
datain={4'b0001,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010};
end
28:
begin
radd=628;
datain={4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0010,4'b0000,4'b0000};
end
//display 1
//1
29:
begin
radd=29;
datain={4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd2};
end
30:
begin
radd=30;
datain={4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd0,4'd0};
end
//2
31:
begin
radd=31;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
32:
begin
radd=32;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//3
33:
begin
radd=33;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
34:
begin
radd=34;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//4
35:
begin
radd=35;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
36:
begin
radd=36;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//5
37:
begin
radd=37;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd8};
end
38:
begin
radd=38;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//6
39:
begin
radd=39;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd8,4'd8};
end
40:
begin
radd=40;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//7
41:
begin
radd=41;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd8,4'd8,4'd8};
end
42:
begin
radd=42;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//8
43:
begin
radd=43;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd8};
end
44:
begin
radd=44;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//9
45:
begin
radd=45;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd8};
end
46:
begin
radd=46;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//10
47:
begin
radd=47;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd8};
end
48:
begin
radd=48;
datain={4'd8,4'd8,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//11
49:
begin
radd=49;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd8,4'd8,4'd8};
end
50:
begin
radd=50;
datain={4'd8,4'd8,4'd8,4'd8,4'd1,4'd1,4'd0,4'd0};
end
endcase
data_counter=data_counter+1;
if(data_counter==51)
counter=1;
end
1:begin
case(data_counter2)
//12
1:
begin
radd=51;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd8,4'd8,4'd8};
end
2:
begin
radd=52;
datain={4'd8,4'd8,4'd8,4'd8,4'd1,4'd1,4'd0,4'd0};
end
//13
3:
begin
radd=53;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
4:
begin
radd=54;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//14
5:
begin
radd=55;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
6:
begin
radd=56;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//display 2
//1
7:
begin
radd=57;
datain={4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd2};
end
8:
begin
radd=58;
datain={4'd2,4'd2,4'd2,4'd2,4'd2,4'd2,4'd0,4'd0};
end
//2
9:
begin
radd=59;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
10:
begin
radd=60;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//3
11:
begin
radd=61;
datain={4'd2,4'd1,4'd1,4'd6,4'd6,4'd6,4'd6,4'd6};
end
12:
begin
radd=62;
datain={4'd6,4'd6,4'd6,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//4
13:
begin
radd=63;
datain={4'd2,4'd1,4'd6,4'd6,4'd6,4'd6,4'd6,4'd6};
end
14:
begin
radd=64;
datain={4'd6,4'd6,4'd6,4'd6,4'd1,4'd1,4'd0,4'd0};
end
//5
15:
begin
radd=65;
datain={4'd2,4'd1,4'd6,4'd6,4'd6,4'd1,4'd1,4'd1};
end
16:
begin
radd=66;
datain={4'd1,4'd6,4'd6,4'd6,4'd1,4'd1,4'd0,4'd0};
end
//6
17:
begin
radd=67;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
18:
begin
radd=68;
datain={4'd1,4'd6,4'd6,4'd6,4'd1,4'd1,4'd0,4'd0};
end
//7
19:
begin
radd=69;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd6};
end
20:
begin
radd=70;
datain={4'd6,4'd6,4'd6,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//8
21:
begin
radd=71;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd6,4'd6,4'd6};
end
22:
begin
radd=72;
datain={4'd6,4'd6,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//9
23:
begin
radd=73;
datain={4'd2,4'd1,4'd1,4'd6,4'd6,4'd6,4'd6,4'd6};
end
24:
begin
radd=74;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//10
25:
begin
radd=75;
datain={4'd2,4'd1,4'd6,4'd6,4'd6,4'd6,4'd1,4'd1};
end
26:
begin
radd=76;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//11
27:
begin
radd=77;
datain={4'd2,4'd1,4'd6,4'd6,4'd6,4'd6,4'd6,4'd6};
end
28:
begin
radd=78;
datain={4'd6,4'd6,4'd6,4'd6,4'd1,4'd1,4'd0,4'd0};
end
//12
29:
begin
radd=79;
datain={4'd2,4'd1,4'd6,4'd6,4'd6,4'd6,4'd6,4'd6};
end
30:
begin
radd=80;
datain={4'd6,4'd6,4'd6,4'd6,4'd1,4'd1,4'd0,4'd0};
end
//13
31:
begin
radd=81;
datain={4'd2,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd1};
end
32:
begin
radd=82;
datain={4'd1,4'd1,4'd1,4'd1,4'd1,4'd1,4'd0,4'd0};
end
//14
33:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -