module vga_display(
clk,
data,
vga_clk,
rst_n,
byte,
done,
state,
x_pixel,
y_pixel,
pixel_data,
add
);
input clk ;
input [15:0] data ;
input vga_clk ;
input rst_n ;
input [9:0] x_pixel ;
input [9:0] y_pixel ;
input [7:0] byte ;
input done ;
input state ;
//---------------------------------
output reg [23:0] pixel_data;
output reg [7:0] add ;
//---------------------------------
//---------------------------------
parameter white = 24'b1111_1111__1111_1111__1111_1111;
parameter black = 24'b0000_0000__0000_0000__0000_0000;
parameter red = 24'b1111_1111__0000_0000__0000_0000;
parameter green = 24'b0000_0000__1111_1111__0000_0000;
parameter bule = 24'b0000_0000__0000_0000__1111_1111;
//---------------------------------
//28*63
reg [79:0] char [15:0];
reg [79:0] char1 [15:0];
reg [7:0] cnt ;
reg [8:0] cnt2;
reg [7:0] cnt3;
reg [3:0] cnt4;
wire [7:0] max;
reg [3:0] a;
reg [7:0] rcnt ;
reg [8:0] rcnt2;
reg [7:0] rcnt3;
reg [3:0] rcnt4;
wire [7:0] rmax;
reg [3:0] ra;
reg sta;
reg [19:0] tim;
always @(posedge clk)
if(!rst_n)
sta <= 'd0;
else if(done == 'd1)
sta <= 'd1;
always @(posedge clk)
if (sta == 0) begin
tim <= 'd0;
end
else if(sta == 'd1)
begin
if(tim == 'd750_000)
tim <= tim;
else
tim <= tim + 1'b1;
end
//--------------------------------------
reg [15:0] china [4:0];
reg [7:0] english [4:0];
reg [3:0] dccnt;
reg [1:0] dccnt1;
reg [3:0] decnt;
reg [7:0] dadd1[4:0];
reg [7:0] dadd2[4:0];
always @(posedge clk or negedge rst_n)
if(!rst_n)
begin
dccnt <= 'd0;
dccnt1 <= 'd0;
decnt <= 'd0;
end
else if(done == 1'b1 && byte[7] == 1'b1)
begin
dccnt1 <= dccnt1 + 1'b1;
if( dccnt1 == 'd1)
china[dccnt][15:8] <= byte;
else if( dccnt1 == 'd2)
begin
china[dccnt][7:0] <= byte;
dccnt <= dccnt + 1'b1;
dccnt1 <= 'd0;
end
end
else if(done == 1'b1 && byte[7] == 1'b0)
begin
english[decnt][7:0] <= byte;
decnt <= decnt + 1'b1;
end
reg [3:0] drcnt;
always @(posedge clk or negedge rst_n)
if(!rst_n)
drcnt <= 'd0;
else if(drcnt < dccnt)
begin
if(china[drcnt][15:0] == "你")
dadd1[drcnt][7:0]<= 'd0;
else if(china[drcnt][15:0] == "好")
dadd1[drcnt][7:0]<= 'd16;
else if(china[drcnt][15:0] == "王")
dadd1[drcnt][7:0]<= 'd32;
else if(china[drcnt][15:0] == "鑫")
dadd1[drcnt][7:0]<= 'd48;
else if(china[drcnt][15:0] == "哲")
dadd1[drcnt][7:0]<= 'd64;
else
begin
end
drcnt <= drcnt + 1'b1;
end
reg [3:0] dlcnt;
always @(posedge clk or negedge rst_n)
if(!rst_n)
dlcnt <= 'd0;
else if(dlcnt < decnt)
begin
if(english[dlcnt][7:0] == "F")
dadd2[dlcnt][7:0]<= 'd80;
else if(english[dlcnt][7:0] == "P")
dadd2[dlcnt][7:0]<= 'd96;
else if(english[dlcnt][7:0] == "G")
dadd2[dlcnt][7:0]<= 'd112;
else if(english[dlcnt][7:0] == "A")
dadd2[dlcnt][7:0]<= 'd128;
else if(english[dlcnt][7:0] == "!")
dadd2[dlcnt][7:0]<= 'd144;
else
begin
end
dlcnt <= dlcnt + 1'b1;
end
//------------------------------------------
assign max = (dccnt >'d0)?(dccnt * 'd16 - 'd1):'d0;
assign rmax = (decnt >'d0)?(decnt * 'd16 - 'd1):'d0;
always@(posedge vga_clk)
if(tim < 'd749_990)
begin
cnt2 <= 'd0;
end
else
begin
if(cnt2 == max + 1'b1)
begin
cnt2 <= cnt2;
end
else
begin
cnt2 <= cnt2 + 1'b1;
end
end
always@(posedge vga_clk)
if(tim < 'd749_990)
begin
rcnt2 <= 'd0;
end
else
if(cnt2 == max + 1'b1)
begin
if(rcnt2 == rmax + 1'b1)
begin
rcnt2 <= rcnt2;
end
else
begin
rcnt2 <= rcnt2 + 1'b1;
end
end
else
rcnt2 <= rcnt2;
always@(posedge vga_clk)
if(tim < 'd749_990)
begin
add[7:0] <= dadd1[0][7:0];
cnt3 <= 'd0;
cnt4 <= 'd0;
rcnt3 <= 'd0;
rcnt4 <= 'd0;
a <= 'd0;
ra <='d0;
end
else
begin
if(cnt3 == max)
begin
cnt3 <= cnt3;
cnt4 <= cnt4;
if(rcnt3 == rmax)
begin
rcnt3 <= rcnt3;
add <= add;
end
else
if(ra == 'd0)
begin
add[7:0] <= dadd2[0][7:0];
ra <= ra +1'b1;
rcnt4 <= 'd0;
end
else if(ra == 'd1 && rcnt4 == 'd15)
begin
add[7:0] <= dadd2[1][7:0];
ra <= ra +1'b1;
rcnt4 <= 'd0;
end
else if(ra == 'd2 && rcnt4 == 'd15)
begin
add[7:0] <= dadd2[2][7:0];
ra <= ra +1'b1;
rcnt4 <= 'd0;
end
else if(ra == 'd3 && rcnt4 == 'd15)
begin
add[7:0] <= dadd2[3][7:0];
ra <= ra +1'b1;
rcnt4 <= 'd0;
end
else if(ra == 'd4 && rcnt4 == 'd15)
begin
add[7:0] <= dadd2[4][7:0];
ra <= ra +1'b1;
rcnt4 <= 'd0;
end
else
begin
add[7:0] <= add[7:0] + 1'b1;
rcnt3 <= rcnt3 + 1'b1;
rcnt4 <= rcnt4 + 1'b1;
end
end
else
if(a == 'd0 && cnt4 == 'd15)
begin
add[7:0] <= dadd1[1][7:0];
a <= a + 1'b1;
cnt4 <= 'd0;
end
else if(a == 'd1 && cnt4 == 'd15)
begin
add[7:0] <= dadd1[2][7:0];
a <= a + 1'b1;
cnt4 <= 'd0;
end
else if(a == 'd2 && cnt4 == 'd15)
begin
add[7:0] <= dadd1[3][7:0];
a <= a + 1'b1;
cnt4 <= 'd0;
end
else if(a == 'd3 && cnt4 == 'd15)
begin
add[7:0] <= dadd1[4][7:0];
a <= a + 1'b1;
cnt4 <= 'd0;
end
else
begin
cnt3 <= cnt3 + 1'b1;
add[7:0] <= add[7:0] + 1'b1;
cnt4 <= cnt4 +1'b1;
end
end
always@(posedge vga_clk or negedge rst_n)
if(!rst_n)
cnt <= 'd0;
else
case(cnt)
0:if(cnt2 == 'd1)
begin
char[0 ][79:64] <= data;
cnt <= 'd1;
end
1:if(cnt2 == 'd2)
begin
char[1 ][79:64] <= data;
cnt <='d2;
end
2:if(cnt2 == 'd3)
begin
char[2 ][79:64] <= data;
cnt<='d3;
end
3:if(cnt2 == 'd4)
begin
char[3 ][79:64] <= data;
cnt <= 'd4;
end
4:if(cnt2 == 'd5)
begin
char[4 ][79:64] <= data;
cnt <= 'd5;
end
5:if(cnt2 == 'd6)
begin
char[5 ][79:64] <= data;
cnt <= 'd6;
end
6:if(cnt2 == 'd7)
begin
char[6 ][79:64] <= data;
cnt <= 'd7;
end
7:if(cnt2 == 'd8)
begin
char[7 ][79:64] <= data;
cnt <= 'd8;
end
8:if(cnt2 == 'd9)
begin
char[8 ][79:64] <= data;
cnt <= 'd9;
end
9:if(cnt2 == 'd10)
begin
char[9 ][79:64] <= data;
cnt <= 'd10;
end
10:if(cnt2 == 'd11)
begin
char[10][79:64] <= data;
cnt <= 'd11;
end
11:if(cnt2 == 'd12)
begin
char[11][79:64] <= data;
cnt <= 'd12;
end
12:if(cnt2 == 'd13)
begin
char[12][79:64] <= data;
cnt <= 'd13;
end
13:if(cnt2 == 'd14)
begin
char[13][79:64] <= data;
cnt <= 'd14;
end
14:if(cnt2 == 'd15)
begin
char[14][79:64] <= data;
cnt <= 'd15;
end
15:if(cnt2 == 'd16)
begin
char[15][79:64] <= data;
if(cnt3 == max)
cnt <= 'd0;
else
cnt <='d16;
end
16:if(cnt2 == 'd17)
begin
char[0][63:48] <= data;
cnt <= 'd17;
end
17:if(cnt2 == 'd18)
begin
char[1][63:48] <= data;
cnt <= 'd18;
end
18:if(cnt2 == 'd19)
begin
char[2][63:48] <= data;
cnt <= 'd19;
end
19:if(cnt2 == 'd20)
begin
char[3][63:48] <= data;
cnt <= 'd20;
end
20:if(cnt2 == 'd21)
begin
char[4][63:48] <= data;
cnt <= 'd21;
end
21:if(cnt2 == 'd22)
begin
char[5][63:48] <= data;
cnt <= 'd22;
end
22:if(cnt2 == 'd23)
begin
char[6][63:48] <= data;
cnt <= 'd23;
end
23:if(cnt2 == 'd24)
begin
char[7][63:48] <= data;
cnt <= 'd24;
end
24:if(cnt2 == 'd25)
begin
char[8][63:48] <= data;
cnt <= 'd25;
end
25:if(cnt2 == 'd26)
begin
char[9][63:48] <= data;
cnt <= 'd26;
end
26:if(cnt2 == 'd27)
begin
char[10][63:48] <= data;
cnt <= 'd27;
end
27:if(cnt2 == 'd28)
begin
char[11][63:48] <= data;
cnt <= 'd28;
end
28:if(cnt2 == 'd29)
begin
char[12][63:48] <= data;
cnt <= 'd29;
end
29:if(cnt2 == 'd30)
begin
char[13][63:48] <= data;
cnt <= 'd30;
end
30:if(cnt2 == 'd31)
begin
char[14][63:48] <= data;
cnt <= 'd31;
end
31:if(cnt2 == 'd32)
begin
char[15][63:48] <= data;
if(cnt3 == max)
cnt <= 'd0;
else
cnt <='d32;
end
32:if(cnt2 == 'd33)
begin
char[0][47:32] <= data;
cnt <= 'd33;
end
33:if(cnt2 == 'd34)
begin
char[1][47:32] <= data;
cnt <= 'd34;
end
34:if(cnt2 == 'd35)
begin
char[2][47:32] <= data;
cnt <= 'd35;
end
35:if(cnt2 == 'd36)
begin
char[3][47:32] <= data;
cnt <= 'd36;
end
36:if(cnt2 == 'd37)
begin
char[4][47:32] <= data;
cnt <= 'd37;
end
37:if(cnt2 == 'd38)
begin
char[5][47:32] <= data;
cnt <= 'd38;
end
38:if(cnt2 == 'd39)
begin
char[6][47:32] <= data;
cnt <= 'd39;
end
39:if(cnt2 == 'd40)
begin
char[7][47:32] <= data;
cnt <= 'd40;
end
40:if(cnt2 == 'd41)
begin
char[8][47:32] <= data;
cnt <= 'd41;
end
41:if(cnt2 == 'd42)
begin
char[9][47:32] <= data;
cnt <= 'd42;
end
42:if(cnt2 == 'd43)
begin
char[10][47:32] <= data;
cnt <= 'd43;
end
43:if(cnt2 == 'd44)
begin
char[11][47:32] <= data;
cnt <= 'd44;
end
44:if(cnt2 == 'd45)
begin
char[12][47:32] <= data;
cnt <= 'd45;
end
45:if(cnt2 == 'd46)
begin
char[13][47:32] <= data;
cnt <= 'd46;
end
46:if(cnt2 == 'd47)
begin
char[14][47:32] <= data;
cnt <= 'd47;
end
47:if(cnt2 == 'd48)
begin
char[15][47:32] <= data;
if(cnt3 == max)
cnt <= 'd0;
else
cnt <='d48;
end
48:if(cnt2 == 'd49)
begin
char[0 ][31:16] <= data;
cnt <= 'd49;
end
49:if(cnt2 == 'd50)
begin
char[1 ][31:16] <= data;
cnt <='d50;
end
50:if(cnt2 == 'd51)
begin
char[2 ][31:16] <= data;
cnt<='d51;
end
51:if(cnt2 == 'd52)
begin
char[3 ][31:16] <= data;
cnt <= 'd52;
end
52:if(cnt2 == 'd53)
begin
char[4 ][31:16] <= data;
cnt <= 'd53;
end
53:if(cnt2 == 'd54)
begin
char[5 ][31:16] <= data;
cnt <= 'd54;
end
54:if(cnt2 == 'd55)
begin
char[6 ][31:16] <= data;
cnt <= 'd55;
end
55:if(cnt2 == 'd56)
begin
char[7 ][31:16] <= data;
cnt <= 'd56;
end
56:if(cnt2 == 'd57)
begin
char[8 ][31:16] <= data;
cnt <= 'd57;
end
57:if(cnt2 == 'd58)
begin
char[9 ][31:16] <= data;
cnt <= 'd58;
end
58:if(cnt2 == 'd59)
begin
char[10][31:16] <= data;
cnt <= 'd59;
end
59:if(cnt2 == 'd60)
begin
char[11][31:16] <= data;
cnt <= 'd60;
end
60:if(cnt2 == 'd61)
begin
char[12][31:16] <= data;
cnt <= 'd61;
end
61:if(cnt2 == 'd62)
begin
char[13][31:16] <= data;
cnt <= 'd62;
end
62:if(cnt2 == 'd63)
begin
char[14][31:16] <= data;
cnt <= 'd63;
end
63:if(cnt2 == 'd64)
begin
char[15][31:16] <= data;
if(cnt3 == max)
cnt <= 'd0;
else
cnt <='d64;
end
64:if(cnt2 == 'd65)
begin
char[0][15:0] <= data;
cnt <= 'd65;
end
65:if(cnt2 == 'd66)
begin
char[1][15:0] <= data;
cnt <= 'd66;
end
66:if(cnt2 == 'd67)
begin
char[2][15:0] <= data;
cnt <= 'd67;
end
67:if(cnt2 == 'd68)
begin
char[3][15:0] <= data;
cnt <= 'd68;
end
68:if(cnt2 == 'd69)
begin
char[4][15:0] <= data;
cnt <= 'd69;
end
69:if(cnt2 == 'd70)
begin
char[5][15:0] <= data;
cnt <= 'd70;
end
70:if(cnt2 == 'd71)
begin
char[6][15:0] <= data;
cnt <= 'd71;
end
71:if(cnt2 == 'd72)
begin
char[7][15:0] <= data;
cnt <= 'd72;
end
72:if(cnt2 == 'd73)
begin
char[8][15:0] <= data;
cnt <= 'd73;
end
73:if(cnt2 == 'd74)
begin
char[9][15:0] <= data;
cnt <= 'd74;
end
74:if(cnt2 == 'd75)
begin
char[10][15:0] <= data;
cnt <= 'd75;
end
75:if(cnt2 == 'd76)
begin
char[11][15:0] <= data;
cnt <= 'd76;
end
76:if(cnt2 == 'd77)
begin
char[12][15:0] <= data;
cnt <= 'd77;
end
77:if(cnt2 == 'd78)
begin
char[13][15:0] <= data;
cnt <= 'd78;
end
78:if(cnt2 == 'd79)
begin
char[14][15:0] <= data;
cnt <= 'd79;
end
79:if(cnt2 == 'd80)
begin
char[15][15:0] <= data;
if(cnt3 == max)
cnt <= 'd0;
else
cnt <='d80;
end
endcase
always@(posedge vga_clk or negedge rst_n)
if(!rst_n)
rcnt <= 'd0;
else
case(rcnt)
0:if(rcnt2 == 'd1)
begin
char1[0 ][79:64] <= data;
rcnt <= 'd1;
end
1:if(rcnt2 == 'd2)
begin
char1[1 ][79:64] <= data;
rcnt <='d2;
end
2:if(rcnt2 == 'd3)
begin
char1[2 ][79:64] <= data;
rcnt<='d3;
end
3:if(rcnt2 == 'd4)
begin
char1[3 ][79:64] <= data;
rcnt <= 'd4;
end
4:if(rcnt2 == 'd5)
begin
char1[4 ][79:64] <= data;
rcnt <= 'd5;
end
5:if(rcnt2 == 'd6)
begin
char1[5 ][79:64] <= data;
rcnt <= 'd6;
end
6:if(rcnt2 == 'd7)
begin
char1[6 ][79:64] <= data;
rcnt <= 'd7;
end
7:if(rcnt2 == 'd8)
begin
char1[7 ][79:64] <= data;
rcnt <= 'd8;
end
8:if(rcnt2 == 'd9)
begin
char1[8 ][79:64] <= data;
rcnt <= 'd9;
end
9:if(rcnt2 == 'd10)
begin
char1[9 ][79:64] <= data;
rcnt <= 'd10;
end
10:if(rcnt2 == 'd11)
begin
char1[10][79:64] <= data;
rcnt <= 'd11;
end
11:if(rcnt2 == 'd12)
begin
char1[11][79:64] <= data;
rcnt <= 'd12;
end
12:if(rcnt2 == 'd13)
begin
char1[12][79:64] <= data;
rcnt <= 'd13;
end
13:if(rcnt2 == 'd14)
begin
char1[13][79:64] <= data;
rcnt <= 'd14;
end
14:if(rcnt2 == 'd15)
begin
char1[14][79:64] <= data;
rcnt <= 'd15;
end
15:if(rcnt2 == 'd16)
begin
char1[15][79:64] <= data;
if(rcnt3 == rmax)
rcnt <= 'd0;
else
rcnt <='d16;
end
16:if(rcnt2 == 'd17)
begin
char1[0][63:48] <= data;
rcnt <= 'd17;
end
17:if(rcnt2 == 'd18)
begin
char1[1][63:48] <= data;
rcnt <= 'd18;
end
18:if(rcnt2 == 'd19)
begin
char1[2][63:48] <= data;
rcnt <= 'd19;
end
19:if(rcnt2 == 'd20)
begin
char1[3][63:48] <= data;
rcnt <= 'd20;
end
20:if(rcnt2 == 'd21)
begin
char1[4][63:48] <= data;
rcnt <= 'd21;
end
21:if(rcnt2 == 'd22)
begin
char1[5][63:48] <= data;
rcnt <= 'd22;
end
22:if(rcnt2 == 'd23)
begin
char1[6][63:48] <= data;
rcnt <= 'd23;
end
23:if(rcnt2 == 'd24)
begin
char1[7][63:48] <= data;
rcnt <= 'd24;
end
24:if(rcnt2 == 'd25)
begin
char1[8][63:48] <= data;
rcnt <= 'd25;
end
25:if(rcnt2 == 'd26)
begin
char1[9][63:48] <= data;
rcnt <= 'd26;
end
26:if(rcnt2 == 'd27)
begin
char1[10][63:48] <= data;
rcnt <= 'd27;
end
27:if(rcnt2 == 'd28)
begin
char1[11][63:48] <= data;
rcnt <= 'd28;
end
28:if(rcnt2 == 'd29)
begin
char1[12][63:48] <= data;
rcnt <= 'd29;
end
29:if(rcnt2 == 'd30)
begin
char1[13][63:48] <= data;
rcnt <= 'd30;
end
30:if(rcnt2 == 'd31)
begin
char1[14][63:48] <= data;
rcnt <= 'd31;
end
31:if(rcnt2 == 'd32)
begin
char1[15][63:48] <= data;
if(rcnt3 == rmax)
rcnt <= 'd0;
else
rcnt <='d32;
end
32:if(rcnt2 == 'd33)
begin
char1[0][47:32] <= data;
rcnt <= 'd33;
end
33:if(rcnt2 == 'd34)
begin
char1[1][47:32] <= data;
rcnt <= 'd34;
end
34:if(rcnt2 == 'd35)
begin
char1[2][47:32] <= data;
rcnt <= 'd35;
end
35:if(rcnt2 == 'd36)
begin
char1[3][47:32] <= data;
rcnt <= 'd36;
end
36:if(rcnt2 == 'd37)
begin
char1[4][47:32] <= data;
rcnt <= 'd37;
end
37:if(rcnt2 == 'd38)
begin
char1[5][47:32] <= data;
rcnt <= 'd38;
end
38:if(rcnt2 == 'd39)
begin
char1[6][47:32] <= data;
rcnt <= 'd39;
end
39:if(rcnt2 == 'd40)
begin
char1[7][47:32] <= data;
rcnt <= 'd40;
end
40:if(rcnt2 == 'd41)
begin
char1[8][47:32] <= data;
rcnt <= 'd41;
end
41:if(rcnt2 == 'd42)
begin
char1[9][47:32] <= data;
rcnt <= 'd42;
end
42:if(rcnt2 == 'd43)
begin
char1[10][47:32] <= data;
rcnt <= 'd43;
end
43:if(rcnt2 == 'd44)
begin
char1[11][47:32] <= data;
rcnt <= 'd44;
end
44:if(rcnt2 == 'd45)
begin
char1[12][47:32] <= data;
rcnt <= 'd45;
end
45:if(rcnt2 == 'd46)
begin
char1[13][47:32] <= data;
rcnt <= 'd46;
end
46:if(rcnt2 == 'd47)
begin
char1[14][47:32] <= data;
rcnt <= 'd47;
end
47:if(rcnt2 == 'd48)
begin
char1[15][47:32] <= data;
if(rcnt3 == rmax)
rcnt <= 'd0;
else
rcnt <='d48;
end
48:if(rcnt2 == 'd49)
begin
char1[0 ][31:16] <= data;
rcnt <= 'd49;
end
49:if(rcnt2 == 'd50)
begin
char1[1 ][31:16] <= data;
rcnt <='d50;
end
50:if(rcnt2 == 'd51)
begin
char1[2 ][31:16] <= data;
rcnt<='d51;
end
51:if(rcnt2 == 'd52)
begin
char1[3 ][31:16] <= data;
rcnt <= 'd52;
end
52:if(rcnt2 == 'd53)
begin
char1[4 ][31:16] <= data;
rcnt <= 'd53;
end
53:if(rcnt2 == 'd54)
begin
char1[5 ][31:16] <= data;
rcnt <= 'd54;
end
54:if(rcnt2 == 'd55)
begin
char1[6 ][31:16] <= data;
rcnt <= 'd55;
end
55:if(rcnt2 == 'd56)
begin
char1[7 ][31:16] <= data;
rcnt <= 'd56;
end
56:if(rcnt2 == 'd57)
begin
char1[8 ][31:16] <= data;
rcnt <= 'd57;
end
57:if(rcnt2 == 'd58)
begin
char1[9 ][31:16] <= data;
rcnt <= 'd58;
end
58:if(rcnt2 == 'd59)
begin
char1[10][31:16] <= data;
rcnt <= 'd59;
end
59:if(rcnt2 == 'd60)
begin
char1[11][31:16] <= data;
rcnt <= 'd60;
end
60:if(rcnt2 == 'd61)
begin
char1[12][31:16] <= data;
rcnt <= 'd61;
end
61:if(rcnt2 == 'd62)
begin
char1[13][31:16] <= data;
rcnt <= 'd62;
end
62:if(rcnt2 == 'd63)
begin
char1[14][31:16] <= data;
rcnt <= 'd63;
end
63:if(rcnt2 == 'd64)
begin
char1[15][31:16] <= data;
if(rcnt3 == rmax)
rcnt <= 'd0;
else
rcnt <='d64;
end
64:if(rcnt2 == 'd65)
begin
char1[0][15:0] <= data;
rcnt <= 'd65;
end
65:if(rcnt2 == 'd66)
begin
char1[1][15:0] <= data;
rcnt <= 'd66;
end
66:if(rcnt2 == 'd67)
begin
char1[2][15:0] <= data;
rcnt <= 'd67;
end
67:if(rcnt2 == 'd68)
begin
char1[3][15:0] <= data;
rcnt <= 'd68;
end
68:if(rcnt2 == 'd69)
begin
char1[4][15:0] <= data;
rcnt <= 'd69;
end
69:if(rcnt2 == 'd70)
begin
char1[5][15:0] <= data;
rcnt <= 'd70;
end
70:if(rcnt2 == 'd71)
begin
char1[6][15:0] <= data;
rcnt <= 'd71;
end
71:if(rcnt2 == 'd72)
begin
char1[7][15:0] <= data;
rcnt <= 'd72;
end
72:if(rcnt2 == 'd73)
begin
char1[8][15:0] <= data;
rcnt <= 'd73;
end
73:if(rcnt2 == 'd74)
begin
char1[9][15:0] <= data;
rcnt <= 'd74;
end
74:if(rcnt2 == 'd75)
begin
char1[10][15:0] <= data;
rcnt <= 'd75;
end
75:if(rcnt2 == 'd76)
begin
char1[11][15:0] <= data;
rcnt <= 'd76;
end
76:if(rcnt2 == 'd77)
begin
char1[12][15:0] <= data;
rcnt <= 'd77;
end
77:if(rcnt2 == 'd78)
begin
char1[13][15:0] <= data;
rcnt <= 'd78;
end
78:if(rcnt2 == 'd79)
begin
char1[14][15:0] <= data;
rcnt <= 'd79;
end
79:if(rcnt2 == 'd80)
begin
char1[15][15:0] <= data;
if(rcnt3 == rmax)
rcnt <= 'd0;
else
rcnt <='d80;
end
endcase
//开一个绿色方框,为320*240的大小,其余部分为蓝色
/*字为白底黑字,这里可以将很多字看成一个通过子模显示,所以这个方法也是可以用来显示多个字符的*/
always@(posedge vga_clk or negedge rst_n)
begin
if(!rst_n)
pixel_data <= black;
else
if(x_pixel <= 320 && y_pixel <= 480)
if(x_pixel <= 80 && y_pixel <= 16)
if(char1[y_pixel-1][80-x_pixel])
pixel_data <= black;
else
pixel_data <= white;
else
pixel_data <= green;
else
if(x_pixel >= 320 && x_pixel <= 400 && y_pixel <= 16)
if(char[y_pixel-1][400-x_pixel])
pixel_data <= black;
else
pixel_data <= white;
else
pixel_data <= bule;
end
endmodule
学习python序列识别。
add初始值出了问题,不知为什么出现了问题,可能是初始值出现了问题。