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

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

?? txmit.v

?? 串口源碼,實現接收發送功能,簡單易懂,配仿真源程序
?? V
字號:
/*******************************************************************
 *
 *    DESCRIPTION: UART transmitter module.
 *
 *    AUTHOR: Thomas Oelsner
 *
 *    HISTORY: 10/04/96    
 *
 *******************************************************************/
module txmit (mclkx16, write, reset, tx, txrdy, data);

input    mclkx16;		      	// Input clock, 16 x baudrate clock used for synchronization.
input    write;		      	// Transmit write strobe.
input	   reset;		      	// Global reset.
output   tx;      reg   tx;   // Transmit data output.
		         
output   txrdy;		      	// Transmitter ready to recieve next byte to be send

input    [7:0] data;       	// 8 bit input data bus


reg      write1, write2;      // write signal delayed 1 and 2 cycles.
reg      txdone1;        	   // txdone signal delayed one cycle.


// Transmit shift register bits
reg      [7:0] thr;			   // Transmit hold register
reg      [7:0] tsr;           // Transmit shift register, used for shifting out data to tx.
reg      tag1, tag2;		      // Tag bits for used for detecting, when the tsr are empty.
wire		paritymode = 1'b1; 	// Initializing to 1 = odd parity, 0 = even parity. 
reg      txparity;		   	// Parity generation register.


// Transmit clock and other control signals
reg      txclk;            	// Transmit clock, i.e. baudrate clock = 1/16'th of mclkx16.
wire     txdone;		      	// Set to high, when shifting of byte is done.
wire     paritycycle;	   	// Set to high, one cycle next to last shift cycle.
reg      txdatardy;        	// Set to hign, when data is ready in transmit hold register.
reg      [2:0] cnt;           // Counter used for generating the internal baud rate clock.




// Paritycycle = 1 on next to last cycle, this means when tsr[1] gets tag2.
assign   paritycycle = tsr[1] && !(tag2 || tag1 || tsr[7] || tsr[6] || tsr[5] || tsr[4] || tsr[3] || tsr[2]);



// txdone = 1 when done shifting, this means when tx gets tag2.
assign   txdone = !(tag2 || tag1 || tsr[7] || tsr[6] || tsr[5] || tsr[4] || tsr[3] || tsr[2] || tsr[1] || tsr[0]);



// Ready for new date to be written, when no data is in transmit hold register.
assign    txrdy = !txdatardy;



//Latch data[7:0] into the transmit hold register at posedge of write.
	always @(write or data)
   if (~write) 
   		  thr = data; 



// Toggle txclk every 8 counts, which divides the clock by 16, to generate the baud clock
always @(posedge mclkx16 or posedge reset)
if (reset)
	begin
	txclk <= 1'b0;
	cnt <= 3'b000;
	end
else
	begin
	if (cnt == 3'b000)  
	    txclk <= !txclk; 
	cnt <= cnt + 1;
   end


task idle_reset;
	begin                   		// Apply pseudo Idle state, equal to end of transmission.
		tsr      <= 8'h00;	   	// Reset transmit shift register.
		tag2     <= 1'b0;	      	// Reset tag bit. 
		tag1     <= 1'b0;	      	// Reset tag bit.
//		txparity <= paritymode; 	// Set parity mode for even or odd parity.
		txparity <= 1'b0;				// Reset txparty bit.
		tx       <= 1'b1;	      	// At pseudo idle set Start bit high.
	end
endtask //


task load_data;
	begin                     		// Initialize registers and load next byte of data.
	    tsr        <= thr;	      // Load tsr from thr.
	    tag2       <= 1'b1;	      // Set tag bits for detecting when shifting is done. 
	    tag1       <= 1'b1;	      // Set tag bits for detecting when shifting is done.
	    txparity   <= paritymode;	// Set parity mode bit, 0 = even parity, 1 = odd parity
	    tx         <= 1'b0;	      // Set start bit low.
   end
endtask //


task shift_data;
	begin
		tsr     <= tsr >> 1;      		 // Right shift tsr by one.
   	tsr[7]  <= tag1;          		 // Set tsr[7] = tag1.   
   	tag1    <= tag2;          		 // Set tag1 = tag2.
   	tag2    <= 1'b0;          		 // Set tag2 = 0. 
	   txparity <= txparity ^ tsr[0]; // Generate parity.
	end
endtask //


// Shifting out data to tx.
always @(posedge txclk or posedge reset)
if (reset)
	idle_reset;						// Reset internal bits of transmitter.
else
	begin
		if (txdone && txdatardy)
			load_data;				// Load new data to tsr.
		else
	   	begin   
			shift_data;				// Shift contents of tsr to tx output.	
         
	    	// Shift out data or parity bit or stop/idle bit.
	     	if (txdone )
		   	tx <= 1'b1;	     		// Output stop/idle bit.
	    	else if (paritycycle)
		   	tx <= txparity;   	// Output parity bit.
	     	else
				tx <= tsr[0];     	//Shift out data bit.
	    	end
	end


always @(posedge mclkx16 or posedge reset)
if (reset) 
	begin
	txdatardy <= 1'b0;
	write2 <= 1'b1;
	write1 <= 1'b1;		
	txdone1 <= 1'b1;		            // Set equal to txdone at reset.
	end
else
	begin
	if (write1 &&  !write2)
	   txdatardy  <= 1'b1;           // At risign edge of write, new data are latched in thr, and txdatardy are set.

	else if (!txdone &&  txdone1)
	     	txdatardy  <= 1'b0;			// At falling edge of txdone, the thr has been loaded into tsr, so txdatardy are reset.

	// Generate delayed versions of write and txdone signals for edge detection.
	write2 <= write1;
	write1 <= write;
	txdone1 <= txdone;
	end 

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区五区中文 | 亚洲一区在线观看视频| 91亚洲国产成人精品一区二区三| 久久精品一区二区三区四区| 国产一区二区三区久久久| 26uuuu精品一区二区| 国产高清精品久久久久| 中文字幕欧美三区| 色综合天天做天天爱| 一区二区三区不卡在线观看| 日本久久电影网| 亚洲成人免费看| 久久久91精品国产一区二区精品| 丁香婷婷综合色啪| 中文字幕亚洲电影| 884aa四虎影成人精品一区| 久久se精品一区精品二区| 国产精品毛片无遮挡高清| 一本到三区不卡视频| 久久精品av麻豆的观看方式| 中文字幕一区二区三区av | 国产一区二区精品久久| 亚洲视频香蕉人妖| 日韩欧美电影一区| 色综合久久66| 久久精品国产在热久久| 亚洲成人综合网站| 日本一区二区电影| 精品少妇一区二区三区| 欧美日韩在线一区二区| 91老司机福利 在线| 国产福利一区二区三区视频 | 欧美国产综合一区二区| 成人精品gif动图一区| 亚洲免费在线观看视频| 欧美一卡二卡三卡四卡| 在线观看视频91| 粉嫩aⅴ一区二区三区四区| 青青青伊人色综合久久| 亚洲乱码国产乱码精品精98午夜 | 亚洲欧美日韩中文字幕一区二区三区| 国产视频亚洲色图| 欧美三级午夜理伦三级中视频| 3d动漫精品啪啪一区二区竹菊| 国产成人免费视频网站高清观看视频 | 国产精品久久久久久亚洲毛片 | 亚洲一区在线视频| 色成人在线视频| 激情综合色播激情啊| 亚洲精品美国一| 亚洲国产精品一区二区久久恐怖片| 国产午夜亚洲精品不卡| 欧美系列在线观看| 91麻豆精品国产自产在线观看一区| 有码一区二区三区| 色哟哟国产精品免费观看| 亚洲视频香蕉人妖| 中文字幕高清不卡| 91精品国产乱| 精品美女被调教视频大全网站| 欧美日韩精品专区| 欧美精品自拍偷拍| 91精品国产高清一区二区三区蜜臀| 日韩精品中午字幕| 欧美激情一区二区三区四区| 国产精品久久免费看| 亚洲欧洲日本在线| 亚洲一区二区高清| 久久无码av三级| 久久66热re国产| 日本久久一区二区| 欧美日韩免费观看一区三区| 日韩三级视频在线观看| 欧美精品一区二区三区蜜桃| 久久新电视剧免费观看| 日韩欧美卡一卡二| 欧美丝袜丝交足nylons图片| 色婷婷精品大在线视频| 精品国产乱码久久久久久老虎| 欧美大片顶级少妇| 亚洲一区二区三区影院| 亚洲女性喷水在线观看一区| 亚洲综合丝袜美腿| fc2成人免费人成在线观看播放| 日本一区二区三区电影| 免费三级欧美电影| 99国产精品国产精品久久| 日韩欧美卡一卡二| 国产成人在线观看免费网站| 欧美在线视频日韩| 91麻豆精品国产自产在线| 欧美va日韩va| 国产日韩三级在线| 日韩高清不卡一区二区| 色偷偷88欧美精品久久久| 欧美日韩精品一区二区三区蜜桃| 欧美tk丨vk视频| 国产自产视频一区二区三区| 欧美变态凌虐bdsm| 久久99热这里只有精品| 日韩女优av电影| 精彩视频一区二区| 久久综合久久鬼色中文字| 精品一区二区在线播放| 久久久久国产免费免费| 成人看片黄a免费看在线| 国产精品国产三级国产aⅴ原创| 成人sese在线| 亚洲综合视频网| 日韩视频一区二区三区在线播放| 午夜国产精品一区| 精品区一区二区| 丰满白嫩尤物一区二区| 亚洲欧美偷拍卡通变态| 欧美一区二区私人影院日本| 亚洲女同一区二区| 免费在线观看日韩欧美| 不卡一二三区首页| 精品久久久久久久久久久院品网| 美女一区二区在线观看| 欧美大白屁股肥臀xxxxxx| 久久99久久精品| 日本一区二区在线不卡| 99久久久无码国产精品| 国产色产综合产在线视频| 亚洲蜜臀av乱码久久精品 | 天堂蜜桃一区二区三区| 成人综合激情网| 五月天国产精品| 久久五月婷婷丁香社区| 精品在线视频一区| 亚洲视频一区二区免费在线观看| 欧美一区二区三区成人| 99在线视频精品| 国产麻豆成人精品| 亚洲综合一区二区三区| 中日韩免费视频中文字幕| 91精品视频网| 精品污污网站免费看| 99久久精品国产精品久久| 国产盗摄精品一区二区三区在线| 午夜精品久久久久影视| 亚洲免费视频中文字幕| 中文欧美字幕免费| 日韩视频国产视频| 欧美一区二区三区视频| 欧美三级资源在线| 91福利小视频| 欧美日免费三级在线| av不卡在线观看| 成人h版在线观看| 91在线观看污| 色香色香欲天天天影视综合网| 91欧美激情一区二区三区成人| 成人久久18免费网站麻豆| 国产凹凸在线观看一区二区| 伊人色综合久久天天| |精品福利一区二区三区| 亚洲精品大片www| 亚洲国产中文字幕| 午夜成人免费视频| 国产精品一品二品| 波多野洁衣一区| 欧美日韩国产综合视频在线观看| 欧美美女网站色| 国产视频一区二区在线| 一区二区三区四区在线播放| 久久国产视频网| 不卡在线视频中文字幕| 欧美欧美欧美欧美| 国产女人18毛片水真多成人如厕| 亚洲女子a中天字幕| 日韩激情中文字幕| 国产成人亚洲综合a∨婷婷| 色综合久久久网| 久久精品一区八戒影视| 亚洲福利视频三区| 成人av在线资源网| 日韩欧美国产一区在线观看| 亚洲丝袜另类动漫二区| 精品写真视频在线观看| 欧美精品v国产精品v日韩精品 | 欧美唯美清纯偷拍| 国产日产欧美一区| 免费在线观看不卡| 欧美日韩一区二区欧美激情| 欧美韩日一区二区三区| 久久99精品国产麻豆婷婷| 在线观看日韩电影| 亚洲人成伊人成综合网小说| 国产精品66部| 久久久一区二区| 久久99国产精品成人| 91精品久久久久久久久99蜜臂| 一区二区三区高清| 色综合久久综合| 亚洲午夜在线观看视频在线| 欧日韩精品视频| 亚洲一区二区三区美女| 精品视频免费看|