1. 程式人生 > 其它 >第七天 多字元顯示對於uart識別連線

第七天 多字元顯示對於uart識別連線

技術標籤:學習筆記

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;

[email protected]
(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 [email protected](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;
[email protected]
(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
[email protected]
(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 [email protected](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的大小,其餘部分為藍色 /*字為白底黑字,這裡可以將很多字看成一個通過子模顯示,所以這個方法也是可以用來顯示多個字元的*/ [email protected](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初始值出了問題,不知為什麼出現了問題,可能是初始值出現了問題。