亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? altera_up_avalon_character_lcd.v

?? 這是一個 NIOSII系統的 1602LCD 控制IP核
?? V
字號:
/*****************************************************************************
 *                                                                           *
 * Module:       Altera_UP_Avalon_Character_LCD                              *
 * Description:                                                              *
 *      This module controls 16x2 character LCD on the Altera DE2 Board.     *
 *                                                                           *
 *****************************************************************************/

module Altera_UP_Avalon_Character_LCD (
	// Inputs
	clk,
	reset,

	address,
	chipselect,
	read,
	write,
	writedata,

	// Bidirectionals
	LCD_DATA,

	// Outputs
	LCD_ON,
	LCD_BLON,

	LCD_EN,
	LCD_RS,
	LCD_RW,

	readdata,
//	readdatavalid,
	waitrequest
);


/*****************************************************************************
 *                           Parameter Declarations                          *
 *****************************************************************************/

parameter	CURSOR_ON	= 1'b1;
parameter	BLINKING_ON	= 1'b1;

/*****************************************************************************
 *                             Port Declarations                             *
 *****************************************************************************/
// Inputs
input				clk;
input				reset;

input				address;
input				chipselect;
input				read;
//wire				read;
input				write;
input		[31:0]	writedata;

// Bidirectionals
inout		[7:0]	LCD_DATA;			//	LCD Data bus 8 bits

// Outputs
output				LCD_ON;				//	LCD Power ON/OFF
output				LCD_BLON;			//	LCD Back Light ON/OFF

output				LCD_EN;				//	LCD Enable
output				LCD_RS;				//	LCD 0-Command/1-Data Select
output				LCD_RW;				//	LCD 1-Read/0-Write Select

output		[31:0]	readdata;
//output				readdatavalid;
output				waitrequest;
//wire		[31:0]	readdata;
//wire				readdatavalid;
//wire				waitrequest;

/*****************************************************************************
 *                           Constant Declarations                           *
 *****************************************************************************/
// states
localparam	LCD_STATE_0_IDLE				= 3'h0,
			LCD_STATE_1_INITIALIZE			= 3'h1,
			LCD_STATE_2_START_CHECK_BUSY	= 3'h2,
			LCD_STATE_3_CHECK_BUSY			= 3'h3,
			LCD_STATE_4_BEGIN_TRANSFER		= 3'h4,
			LCD_STATE_5_TRANSFER			= 3'h5,
			LCD_STATE_6_COMPLETE			= 3'h6;

/*****************************************************************************
 *                 Internal Wires and Registers Declarations                 *
 *****************************************************************************/

// Internal Wires
//reg				done_current_state;

wire				transfer_complete;
wire				done_initialization;

wire				init_send_command;
wire		[8:0]	init_command;

wire				send_data;

wire		[7:0]	data_received;


// Internal Registers
//reg					begin_data_transfer;
reg					initialize_lcd_display;

reg			[7:0]	data_to_send;
reg					rs;
reg					rw;

//reg					has_pending_transfer;
//reg			[9:0]	pending_transfer;

// State Machine Registers
reg			[2:0]	ns_lcd_controller;
reg			[2:0]	s_lcd_controller;

/*****************************************************************************
 *                         Finite State Machine(s)                           *
 *****************************************************************************/

always @(posedge clk)
begin
	if (reset == 1'b1)
	begin
		s_lcd_controller <= LCD_STATE_0_IDLE;
	end
	else
	begin
		s_lcd_controller <= ns_lcd_controller;
	end
end

always @(*)
begin
	// Defaults
	ns_lcd_controller = LCD_STATE_0_IDLE;

    case (s_lcd_controller)
	LCD_STATE_0_IDLE:
		begin
			if (initialize_lcd_display == 1'b1)
			begin
				ns_lcd_controller = LCD_STATE_1_INITIALIZE;
			end
			else if (chipselect == 1'b1) // if (begin_data_transfer == 1'b1)
			begin
				ns_lcd_controller = LCD_STATE_2_START_CHECK_BUSY; 
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_0_IDLE;
			end
		end
	LCD_STATE_1_INITIALIZE:
		begin
			if (done_initialization == 1'b1)
			begin
				ns_lcd_controller = LCD_STATE_0_IDLE;
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_1_INITIALIZE;
			end
		end
	LCD_STATE_2_START_CHECK_BUSY:
		begin
			if (transfer_complete == 1'b0)
			begin
				ns_lcd_controller = LCD_STATE_3_CHECK_BUSY;
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_2_START_CHECK_BUSY;
			end
		end
	LCD_STATE_3_CHECK_BUSY:
		begin
			if ((transfer_complete == 1'b1) && (data_received[7] == 1'b1))
			begin
				ns_lcd_controller = LCD_STATE_2_START_CHECK_BUSY;
			end
			else if ((transfer_complete == 1'b1) && (data_received[7] == 1'b0))
			begin
				ns_lcd_controller = LCD_STATE_4_BEGIN_TRANSFER;
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_3_CHECK_BUSY;
			end
		end
	LCD_STATE_4_BEGIN_TRANSFER:
		begin
			if (transfer_complete == 1'b0)
			begin
				ns_lcd_controller = LCD_STATE_5_TRANSFER;
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_4_BEGIN_TRANSFER;
			end
		end
	LCD_STATE_5_TRANSFER:
		begin
			if (transfer_complete == 1'b1)
			begin
				ns_lcd_controller = LCD_STATE_6_COMPLETE;
			end
			else
			begin
				ns_lcd_controller = LCD_STATE_5_TRANSFER;
			end
		end
	LCD_STATE_6_COMPLETE:
		begin
			ns_lcd_controller = LCD_STATE_0_IDLE;
		end
	default:
		begin
			ns_lcd_controller = LCD_STATE_0_IDLE;
		end
	endcase
end

/*****************************************************************************
 *                             Sequential Logic                              *
 *****************************************************************************/

always @(posedge clk)
begin
	if (reset == 1'b1)
	begin
		initialize_lcd_display <= 1'b1;
	end
	else if (done_initialization == 1'b1)
	begin
		initialize_lcd_display <= 1'b0;
	end
end

//always @(posedge clk)
//begin
//	if (reset == 1'b1)
//	begin
//		has_pending_transfer	<= 1'b0;
//		pending_transfer		<= 10'h000;
//	end
//	else if ((chipselect == 1'b1) && (has_pending_transfer == 1'b0))
//	begin
//		has_pending_transfer	<= 1'b1;
//		pending_transfer		<= {address,~write,writedata[7:0]};
//	end
////	else if ((s_lcd_controller == LCD_STATE_4_BEGIN_TRANSFER) &&
////			(transfer_complete == 1'b0) &&
////			(pending_transfer[8] == 1'b0))
////	begin
////		has_pending_transfer	<= 1'b0;
////	end
//	else if (readdatavalid == 1'b1)
//	begin
//		has_pending_transfer	<= 1'b0;
//	end
//end

//always @(posedge clk)
//begin
//	begin_data_transfer <= has_pending_transfer;
////	if (reset == 1'b1)
////	begin
////		begin_data_transfer <= 1'b0;
////	end
////	else if ((has_pending_transfer == 1'b1) && (readdatavalid == 1'b0))
////	begin
////		begin_data_transfer <= 1'b1;
////	end
////	else if (transfer_complete == 1'b1)
////	begin
////		begin_data_transfer <= 1'b0;
////	end
//end

always @(posedge clk)
begin
	if (reset == 1'b1)
	begin
		data_to_send <= 8'h00;
	end
	else if (s_lcd_controller == LCD_STATE_1_INITIALIZE)
	begin
		data_to_send <= init_command[7:0];
	end
	else if (s_lcd_controller == LCD_STATE_4_BEGIN_TRANSFER)
	begin
		data_to_send <= writedata[7:0]; //pending_transfer[7:0];
	end
end

always @(posedge clk)
begin
	if (reset == 1'b1)
	begin
		rs <= 1'b0;
	end
	else if (s_lcd_controller == LCD_STATE_1_INITIALIZE)
	begin
		rs <= init_command[8];
	end
	else if (s_lcd_controller == LCD_STATE_2_START_CHECK_BUSY)
	begin
		rs <= 1'b0;
	end
	else if (s_lcd_controller == LCD_STATE_4_BEGIN_TRANSFER)
	begin
		rs <= address; // pending_transfer[9];
	end
end

always @(posedge clk)
begin
	if (reset == 1'b1)
	begin
		rw <= 1'b0;
	end
	else if (s_lcd_controller == LCD_STATE_2_START_CHECK_BUSY)
	begin
		rw <= 1'b1;
	end
	else if (s_lcd_controller == LCD_STATE_4_BEGIN_TRANSFER)
	begin
		rw <= ~write;// pending_transfer[8];
	end
end

/*****************************************************************************
 *                            Combinational Logic                            *
 *****************************************************************************/

assign readdata			= {24'h000000, data_received};

//assign readdatavalid	= //pending_transfer[8] & transfer_complete &
//		(s_lcd_controller == LCD_STATE_6_COMPLETE);
assign waitrequest		= chipselect & (s_lcd_controller != LCD_STATE_6_COMPLETE);
//	(chipselect & (read | has_pending_transfer) & ~readdatavalid)/* | 
//	(chipselect & read & ~readdatavalid)*/; 

assign send_data		= 
	(s_lcd_controller == LCD_STATE_1_INITIALIZE) ?	init_send_command :
	(s_lcd_controller == LCD_STATE_3_CHECK_BUSY) ?	1'b1 :
	(s_lcd_controller == LCD_STATE_5_TRANSFER) ?	1'b1 : 1'b0;

/*****************************************************************************
 *                              Internal Modules                             *
 *****************************************************************************/

Altera_UP_Character_LCD_Communication Char_LCD_Comm (
	// Inputs
	.clk				(clk),
	.reset				(reset),

	.data_in			(data_to_send),
	.enable				(send_data),
	.rs					(rs),
	.rw					(rw),

	.on					(1'b1),
	.back_light_on		(1'b1),

	// Bidirectionals
	.LCD_DATA			(LCD_DATA),

	// Outputs
	.LCD_ON				(LCD_ON),
	.LCD_BLON			(LCD_BLON),

	.LCD_EN				(LCD_EN),
	.LCD_RS				(LCD_RS),
	.LCD_RW				(LCD_RW),

	.data_out			(data_received),
	.transfer_complete	(transfer_complete)
);

Altera_UP_Character_LCD_Initialization Char_LCD_Init (
	// Inputs
	.clk					(clk),
	.reset					(reset),

	.initialize_LCD_display	(initialize_lcd_display),

	.command_was_sent		(transfer_complete),
	
	// Bidirectionals

	// Outputs
	.done_initialization	(done_initialization),

	.send_command			(init_send_command),
	.the_command			(init_command)
);
	defparam
		Char_LCD_Init.CURSOR_ON			= CURSOR_ON,
		Char_LCD_Init.BLINKING_ON		= BLINKING_ON;

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区在线观看| 成人爽a毛片一区二区免费| 日本一区二区视频在线观看| 69堂精品视频| 在线成人午夜影院| 欧美色爱综合网| 欧美三级日韩三级| 精品视频一区三区九区| 欧美色老头old∨ideo| 欧美精品在线一区二区| 欧美日韩精品一二三区| 精品视频在线免费观看| 欧美不卡激情三级在线观看| 精品久久久久久久久久久久包黑料 | 亚洲成人1区2区| 亚洲一二三四久久| 亚洲成人一二三| 日韩中文字幕亚洲一区二区va在线 | 中文字幕的久久| 久久久综合激的五月天| 久久欧美一区二区| 欧美精品一区男女天堂| 久久婷婷国产综合精品青草| 欧美精品一区二区三区视频| 久久精品夜色噜噜亚洲aⅴ| 国产农村妇女毛片精品久久麻豆 | 日韩视频在线观看一区二区| 日韩你懂的在线观看| 国产日韩欧美一区二区三区综合| 欧美高清在线视频| 久久网站热最新地址| **性色生活片久久毛片| 亚洲午夜精品在线| 日本不卡视频一二三区| 成人黄色免费短视频| 欧美在线观看一二区| www国产精品av| 亚洲欧美综合网| 久久精品噜噜噜成人av农村| 91在线精品一区二区| 91精品欧美一区二区三区综合在 | 日本一区二区三区视频视频| 一级特黄大欧美久久久| 国产精品12区| 91麻豆精品国产91久久久更新时间| 久久精品人人做人人综合| 亚洲国产成人tv| 东方aⅴ免费观看久久av| 91视频com| 精品日韩一区二区三区免费视频| 精品1区2区在线观看| 久久久九九九九| 亚洲欧洲日韩一区二区三区| 一区二区三区四区在线播放 | 日韩理论在线观看| 天堂一区二区在线| 日韩高清不卡一区| 蜜桃av一区二区| 国产精品一区久久久久| 国产一区二区视频在线播放| 久草这里只有精品视频| 99久久国产免费看| 在线播放/欧美激情| 亚洲va欧美va国产va天堂影院| 韩国欧美国产一区| 91小视频免费观看| 日韩视频免费观看高清在线视频| 中文字幕av在线一区二区三区| 亚洲精品视频在线观看网站| 免费视频最近日韩| 99在线精品视频| 国产色91在线| 一二三区精品福利视频| 一区精品在线播放| 国产婷婷色一区二区三区在线| 一个色妞综合视频在线观看| 亚洲成人激情社区| 99在线精品一区二区三区| 日韩视频不卡中文| 亚洲精品你懂的| 国产成人精品亚洲777人妖 | 亚洲国产成人av| 丰满岳乱妇一区二区三区| 欧美日韩大陆一区二区| 久久久国产一区二区三区四区小说| 亚洲另类中文字| 国产麻豆精品在线| 欧美xingq一区二区| 五月天丁香久久| 色欧美乱欧美15图片| 国产肉丝袜一区二区| 蜜桃一区二区三区在线| 成人黄页毛片网站| 91精品国产综合久久婷婷香蕉| 国产精品国产成人国产三级| 国产一本一道久久香蕉| 欧美不卡在线视频| 免费看日韩精品| 欧美高清激情brazzers| 亚洲mv在线观看| 欧美日韩中文国产| 亚洲一区二区三区在线| 色婷婷av一区二区| 日韩区在线观看| 一区二区三区成人在线视频| 欧美日本一区二区三区四区| 精品不卡在线视频| 日日摸夜夜添夜夜添精品视频 | 99re热这里只有精品免费视频| 在线电影一区二区三区| 麻豆成人91精品二区三区| 日韩视频中午一区| 久草在线在线精品观看| 2023国产精品视频| 青椒成人免费视频| 欧美美女直播网站| 视频一区国产视频| 欧美电影在哪看比较好| 蜜臀精品久久久久久蜜臀| 99国产麻豆精品| 国产欧美一区二区三区在线看蜜臀 | 丰满放荡岳乱妇91ww| 国产精品视频在线看| 99精品在线观看视频| 亚洲成人你懂的| 欧美成人性战久久| 国产成人av网站| 亚洲精品视频一区| 欧美一级一区二区| 国产传媒一区在线| 夜夜嗨av一区二区三区四季av| 91免费国产在线| 国产一区二区三区免费| 亚洲欧美综合色| 色播五月激情综合网| 日日夜夜免费精品| 国产日产欧美一区二区视频| 99久久久久久| 日韩成人av影视| 久久久一区二区三区| 99久久亚洲一区二区三区青草| 亚洲夂夂婷婷色拍ww47| 精品国偷自产国产一区| 不卡的电视剧免费网站有什么| 亚洲五码中文字幕| 精品国产电影一区二区| 97久久精品人人爽人人爽蜜臀| 香蕉久久一区二区不卡无毒影院| 久久夜色精品一区| 欧美日韩在线精品一区二区三区激情| 久草热8精品视频在线观看| 成人免费视频在线观看| 3d成人h动漫网站入口| 东方aⅴ免费观看久久av| 美女一区二区久久| 亚洲精品亚洲人成人网| 在线看国产一区二区| 久久99精品国产麻豆婷婷洗澡| 一区二区三区四区视频精品免费| 欧美视频在线一区| 亚洲精品国产第一综合99久久| 2020国产精品久久精品美国| 成人免费在线播放视频| 欧美精品一区二区久久婷婷| thepron国产精品| 国产精品成人免费在线| 国产aⅴ综合色| 五月婷婷激情综合| 一区二区三区四区在线播放 | 成人深夜福利app| 视频一区二区三区入口| 亚洲欧洲日产国产综合网| 久久网这里都是精品| 精品欧美黑人一区二区三区| 91麻豆精品国产91久久久更新时间| 日本韩国一区二区三区视频| 成人中文字幕在线| 美脚の诱脚舐め脚责91| 夜夜嗨av一区二区三区中文字幕| 国产日韩一级二级三级| 99riav一区二区三区| 成人激情av网| www.66久久| 国产一区美女在线| 国产一区二区h| 麻豆极品一区二区三区| 麻豆国产一区二区| 亚洲色图制服诱惑 | 亚洲精品自拍动漫在线| 亚洲电影一级黄| 国产福利91精品| 欧美日韩免费在线视频| 2020国产精品自拍| 国产亚洲精品超碰| 精彩视频一区二区三区| 99热99精品| 欧美性大战久久久久久久| 欧美日韩国产高清一区| 欧美日韩激情在线| 国内精品国产成人|