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

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

?? ide_control.v

?? 三段式Verilog的IDE程序
?? V
字號:
module ide_control( 
           clk_100M,reset_n,ready,current_state,
          
           word_cnt,
           dma_wden,    dma_rden,
           dma_datain,  dma_dataout,
           fifo_empty,  dmatomem,
           wd_clk,      rd_clk,

           dma_wren, 
           ide_dmarq,ide_dmack_n,
           ide_datain,ide_dataout,
           ide_diow_n,ide_dior_n,
           ide_iordy,ide_intrq
		);
input  clk_100M,reset_n;
output ready;
reg    ready;

input  ide_dmarq,ide_intrq,ide_iordy;
output ide_diow_n,ide_dior_n,ide_dmack_n;
reg    ide_diow_n,ide_dior_n,ide_dmack_n;
input[15:0] ide_datain;
output[15:0] ide_dataout;
reg[15:0]   ide_dataout;

output dmatomem,dma_wren;
reg    dmatomem,dma_wren;

input  dma_wden,dma_rden,fifo_empty;
input[15:0]  dma_datain;
output[15:0] dma_dataout;
reg[15:0]    dma_dataout;

output rd_clk,wd_clk;
reg wd_clk;
output[8:0] word_cnt;
reg[8:0]    word_cnt;
reg[7:0]    sector_cnt;

reg  clk_50M;
always@(posedge clk_100M)clk_50M<=~clk_50M;

reg pre_wden,pre_rden;
reg pos_wden,pos_rden;
always@(posedge clk_50M or negedge reset_n)begin
   if(reset_n==1'b0)begin
      pre_wden<=1'b0;
      pre_rden<=1'b0;
      pos_wden<=1'b0;
      pos_rden<=1'b0;
   end
   else begin
      pre_wden<=dma_wden;
      pos_wden<=~pre_wden&dma_wden;

      pre_rden<=dma_rden;
      pos_rden<=~pre_rden&dma_rden;
   end
end


reg pre_iordy,iordy_pos,iordy_neg;
always@(posedge clk_100M or negedge reset_n)begin
   if(reset_n==1'b0)pre_iordy<=1'b0;
   else begin
      pre_iordy<=ide_iordy;
      iordy_pos<=~pre_iordy&ide_iordy;
      iordy_neg<=pre_iordy&~ide_iordy;
   end
end
assign rd_clk=iordy_pos|iordy_neg;

output[29:0] current_state;
reg[29:0] current_state,next_state;

parameter   IDLE          = 30'b000000000000000000000000000001,

		 WRITE_WAIT_RQ_H  = 30'b000000000000000000000000000010,
		 WRITE_DELAY1     = 30'b000000000000000000000000000100,
			WRITE_CK_L    = 30'b000000000000000000000000001000,
		 WRITE_DELAY2     = 30'b000000000000000000000000010000,	
			WRITE_DIOW_L  = 30'b000000000000000000000000100000,
		 WRITE_DELAY3     = 30'b000000000000000000000001000000,
		 WRITE_WAIT_IO_L  = 30'b000000000000000000000010000000,
			WRITE_SETDATA = 30'b000000000000000000000100000000,
			WRITE_SETDIOR = 30'b000000000000000000001000000000,
		 WRITE_DELAY4     = 30'b000000000000000000010000000000,	
			WRITE_DIOW_H  = 30'b000000000000000000100000000000,
		 WRITE_DELAY5     = 30'b000000000000000001000000000000,
	        CRC_SETDATA   = 30'b000000000000000010000000000000,
		   CRC_DELAY1     = 30'b000000000000000100000000000000,
			CRC_CK_H      = 30'b000000000000001000000000000000,
		   CRC_DELAY2     = 30'b000000000000010000000000000000,
			CRC_END       = 30'b000000000000100000000000000000;
	/*						
			READ_RQ_H     = 30'b000000000000000010000000000000,
		  READ_DELAY1     = 30'b000000000000000100000000000000,
			READ_CK_L     = 30'b000000000000001000000000000000,
		  READ_DELAY2     = 30'b000000000000010000000000000000,
			READ_DIOx_L   = 30'b000000000000100000000000000000,
			READ_DATA     = 30'b000000000001000000000000000000,
		  READ_DELAY3     = 30'b000000000010000000000000000000,
		  READ_WAIT_RQ_L  = 30'b000000000100000000000000000000,
		  READ_DELAY4     = 30'b000000001000000000000000000000,
			READ_DIOx_H   = 30'b000000010000000000000000000000,
		  READ_DELAY5     = 30'b000000100000000000000000000000,
*/
			

reg[7:0] delay_cnt;

always@(posedge clk_100M or negedge reset_n)
    if(!reset_n)current_state<=IDLE;
    else current_state<=next_state;

always@(current_state)begin
	//next_state=IDLE;
	case(current_state)
		IDLE : 
			if(pos_wden==1'b1)next_state=WRITE_WAIT_RQ_H;
			//else if(rden==1)next_state=READ_RQ_H;
			else next_state=IDLE;

		WRITE_WAIT_RQ_H : 
			if(ide_dmarq==1'b1)next_state=WRITE_DELAY1;
			else next_state=WRITE_WAIT_RQ_H;
		WRITE_DELAY1 : 
			if(delay_cnt==8'd100)next_state=WRITE_CK_L;
            else next_state=WRITE_DELAY1;
			
		WRITE_CK_L :  next_state=WRITE_DELAY2;
		WRITE_DELAY2 : 
			if(delay_cnt==8'd4)next_state=WRITE_DIOW_L;
            else next_state=WRITE_DELAY2;

		WRITE_DIOW_L : next_state=WRITE_DELAY3;
		WRITE_DELAY3 : 
			if(delay_cnt==8'd4)next_state=WRITE_WAIT_IO_L;
            else next_state=WRITE_DELAY3;

		WRITE_WAIT_IO_L : 
			if(ide_iordy==1'b0)next_state=WRITE_SETDATA;
			else next_state=WRITE_WAIT_IO_L;

		WRITE_SETDATA : 
		    if(ide_dmarq==1'b0)next_state=WRITE_DIOW_H;
			else if(word_cnt[8])next_state=WRITE_SETDATA;
			else next_state=WRITE_SETDIOR;
				    
		WRITE_SETDIOR : begin
		    if(ide_iordy==1'd0)next_state=WRITE_DELAY4;
			else next_state=WRITE_SETDIOR;
        end

		WRITE_DELAY4 : begin
			if(delay_cnt==8'd2)next_state=WRITE_SETDATA;
            else next_state=WRITE_DELAY4;
		end
		
		WRITE_DIOW_H : next_state=WRITE_DELAY5;
		WRITE_DELAY5 : begin
			if(delay_cnt>=8'd10)next_state=CRC_SETDATA;
            else next_state=WRITE_DELAY5;
		end
		
		CRC_SETDATA : next_state=CRC_DELAY1;
		CRC_DELAY1 : 
			if(delay_cnt>=8'd12)next_state=CRC_CK_H;
            else next_state=CRC_DELAY1;
		CRC_CK_H : next_state=CRC_DELAY2;
		CRC_DELAY2 : 
			if(delay_cnt>=8'd15)next_state=CRC_END;
            else next_state=CRC_DELAY2;
		CRC_END : next_state=IDLE;
		//default : next_state=IDLE;
	endcase
end


always@(posedge clk_100M or negedge reset_n)
	if(!reset_n)begin
		ide_dmack_n<=1; ide_diow_n<=1;  ide_dior_n <=1;    
		ready<=0;       word_cnt<=9'd0;
		dmatomem<=1'b0; sector_cnt<=8'd0;
		dma_wren<=1'b0;
	end
	else case(next_state)
//----------------------------------------------------------------		
		IDLE: begin
			ready<=1'b1;     
			word_cnt<=9'd0;
			ide_dmack_n<=1'b1;
			ide_diow_n<=1'b1; 
			ide_dior_n<=1'b1; 
			dma_wren<=1'b0;   
			dmatomem  <=1'b0;  
			crcout<=16'h4aba; 
			delay_cnt<=8'd0;
		end
		WRITE_WAIT_RQ_H : begin 
			ready<=1'b0;   
			dma_wren<=1'b1;   
			word_cnt<=9'h000;
			end
		WRITE_DELAY1 : delay_cnt <= delay_cnt+1'b1;
			
		WRITE_CK_L :  begin 
			delay_cnt<=8'd0;	
			ide_dmack_n<=0;
		end
		WRITE_DELAY2 : delay_cnt <= delay_cnt+1'b1;

		WRITE_DIOW_L : begin 
			delay_cnt<=8'd0;	ide_diow_n<=0;
		end
		WRITE_DELAY3 : delay_cnt <= delay_cnt+1'b1;

//		WRITE_WAIT_IO_L : begin
//		end

		WRITE_SETDATA : begin
			//delay_cnt <= delay_cnt+1'b1;
			ide_dataout<={7'b0,word_cnt};

		end
				    
		WRITE_SETDIOR : begin
			if(ide_iordy==1'b0)begin
				ide_dior_n <= ~ide_dior_n;//wd_clk;
				word_cnt <= word_cnt+1'b1;
				crcout <= crcin;
				delay_cnt <= 8'd0;
			end			
        end

		WRITE_DELAY4 : delay_cnt <= delay_cnt+1'b1;

		WRITE_DIOW_H : begin
			delay_cnt<=8'd0;	ide_diow_n<=1'b1;
		end
		WRITE_DELAY5 : delay_cnt <= delay_cnt+1'b1;
//--------------------------------------------------------------------------
		CRC_SETDATA : begin
			delay_cnt<=8'd0;	dma_wren<=1'b1;
			ide_dataout<=crcout;
		end
		CRC_DELAY1 : delay_cnt <= delay_cnt+1'b1;
		
		CRC_CK_H : begin
			delay_cnt<=8'd0;	ide_dmack_n<=1'b1;
		end
		CRC_DELAY2 : delay_cnt <= delay_cnt+1'b1;
		
		CRC_END : begin
			delay_cnt<=8'd0;
		end 
	endcase
	
reg[15:0] crcout;
wire[16:1]		f;
wire[15:0]		crcin,din;
assign din=(dma_wren)?ide_dataout:16'h0000;//ide_datain;

assign	crcin[0]	=f[16];
assign	crcin[1]	=f[15];
assign	crcin[2]	=f[14];
assign	crcin[3]	=f[13];
assign	crcin[4]	=f[12];
assign	crcin[5]	=f[11] ^ f[16];
assign	crcin[6]	=f[10] ^ f[15];
assign	crcin[7]	=f[9] 	^f[14];
assign	crcin[8]	=f[8]	^f[13];
assign	crcin[9]	=f[7]	^f[12];
assign	crcin[10]	=f[6]	^f[11];
assign	crcin[11]	=f[5]	^f[10];
assign	crcin[12]	=f[4]	^f[9]	^f[16];
assign	crcin[13]	=f[3]	^f[8]	^f[15];
assign	crcin[14]	=f[2]	^f[7]	^f[14];
assign	crcin[15]	=f[1]	^f[6]	^f[13];

assign	f[1]		=din[0]	^	crcout[15];
assign	f[2]		=din[1]	^	crcout[14];
assign	f[3]		=din[2]	^	crcout[13];
assign	f[4]		=din[3]	^	crcout[12];

assign	f[5]		=din[4]	^	crcout[11] 	^f[1];
assign	f[6]		=din[5]	^	crcout[10] 	^f[2];
assign	f[7]		=din[6]	^	crcout[9] 	^f[3];
assign	f[8]		=din[7]	^	crcout[8] 	^f[4];

assign	f[9]		=din[8]	^	crcout[7] 	^f[5];
assign	f[10]		=din[9]	^	crcout[6] 	^f[6];
assign	f[11]		=din[10]	^	crcout[5] 	^f[7];

assign	f[12]		=din[11]	^	crcout[4] ^f[1]	^f[8];
assign	f[13]		=din[12]	^	crcout[3] ^f[2]	^f[9];
assign	f[14]		=din[13]	^	crcout[2] ^f[3]	^f[10];
assign	f[15]		=din[14]	^	crcout[1] ^f[4]	^f[11];
assign	f[16]		=din[15]	^	crcout[0] ^f[5]	^f[12];

endmodule


	


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂精品中文字幕在线| 国产成人精品三级| 国产成人av福利| 在线日韩av片| 欧美精品一区二区在线观看| 亚洲欧美影音先锋| 精品一区二区在线视频| 在线观看网站黄不卡| 久久精品视频一区| 人人狠狠综合久久亚洲| 日本伦理一区二区| 国产情人综合久久777777| 图片区小说区区亚洲影院| 成人99免费视频| 久久精品欧美一区二区三区不卡| 亚洲 欧美综合在线网络| 91亚洲精品久久久蜜桃网站| 久久午夜老司机| 久久精品国产精品亚洲综合| 在线精品视频一区二区| 国产精品久久久久影院色老大| 精品一区二区在线视频| 欧美一级日韩一级| 五月婷婷综合网| 欧美日韩卡一卡二| 一区二区三区欧美亚洲| 一本一本大道香蕉久在线精品| 国产精品素人一区二区| 国产高清不卡一区二区| 久久新电视剧免费观看| 日韩精品视频网| 欧美日韩精品一区二区| 亚洲亚洲人成综合网络| 91福利精品视频| 亚洲一级电影视频| 在线亚洲+欧美+日本专区| 亚洲午夜免费视频| 欧美写真视频网站| 亚洲精品ww久久久久久p站| 91美女片黄在线| 亚洲综合色自拍一区| 欧美亚洲高清一区| 五月综合激情网| 欧美不卡视频一区| 国产在线麻豆精品观看| 欧美激情综合网| 91蝌蚪国产九色| 亚洲高清免费观看| 欧美成人vr18sexvr| 国产精品一级在线| 亚洲色图视频网站| 欧美日韩一区二区三区在线看| 亚洲精品亚洲人成人网在线播放| 欧美自拍丝袜亚洲| 免费看日韩a级影片| 久久久精品黄色| 99久久精品久久久久久清纯| 亚洲一区二区三区视频在线播放| 欧美日韩一区中文字幕| 国内成人自拍视频| 亚洲天堂a在线| 欧美一级高清片| 国产91在线观看| 午夜视频在线观看一区二区 | 色婷婷狠狠综合| 亚洲成人免费在线观看| 久久综合狠狠综合久久综合88| 成人永久免费视频| 亚洲18影院在线观看| 久久精品一区二区三区不卡 | 精品日韩一区二区三区| 成人激情免费视频| 石原莉奈在线亚洲三区| 中文字幕精品在线不卡| 欧美日韩小视频| 成人影视亚洲图片在线| 五月婷婷欧美视频| 中文字幕在线不卡| 日韩欧美的一区| 在线视频你懂得一区| 国产一区二区在线观看视频| 亚洲亚洲精品在线观看| 中文字幕免费观看一区| 日韩一区二区三区四区| 色哟哟国产精品免费观看| 国产呦精品一区二区三区网站| 亚洲夂夂婷婷色拍ww47| 亚洲国产精品激情在线观看| 日韩欧美一级二级三级| 色婷婷精品大在线视频| 国产91精品精华液一区二区三区 | 日韩欧美一级二级三级久久久| 一本色道综合亚洲| 成人精品免费看| 国产一区二区不卡老阿姨| 亚洲chinese男男1069| 国产精品国模大尺度视频| 日韩女优av电影| 欧美日韩精品欧美日韩精品一 | 国产丶欧美丶日本不卡视频| 青青草伊人久久| 亚洲成人一区在线| 综合自拍亚洲综合图不卡区| 久久久亚洲精华液精华液精华液| 欧美精品日韩综合在线| 欧美亚洲丝袜传媒另类| 91精品91久久久中77777| av色综合久久天堂av综合| 国精品**一区二区三区在线蜜桃| 秋霞午夜av一区二区三区| 亚洲va在线va天堂| 亚洲国产毛片aaaaa无费看| 亚洲网友自拍偷拍| 国产精品家庭影院| 亚洲欧洲精品一区二区三区不卡| 国产片一区二区| 久久精品亚洲精品国产欧美kt∨| 久久精品男人的天堂| 久久蜜桃av一区二区天堂| 久久只精品国产| 国产三级一区二区三区| 久久久久久久久久久黄色| 国产欧美一区二区三区鸳鸯浴 | 一区二区久久久久| 亚洲人成在线观看一区二区| 亚洲色图一区二区三区| 亚洲制服丝袜av| 日本亚洲欧美天堂免费| 麻豆成人久久精品二区三区红| 美国毛片一区二区三区| 国产乱国产乱300精品| 成人性生交大片免费看在线播放 | 欧美一卡2卡三卡4卡5免费| 在线综合视频播放| 久久综合99re88久久爱| 国产日韩欧美一区二区三区综合 | 91影视在线播放| www.日韩大片| 91久久奴性调教| 欧美剧情电影在线观看完整版免费励志电影 | 在线影视一区二区三区| 欧美日韩免费一区二区三区 | 欧美猛男超大videosgay| 在线电影院国产精品| 欧美sm美女调教| 国产精品欧美综合在线| 一区二区成人在线| 日韩精品一卡二卡三卡四卡无卡| 国产一区二区在线免费观看| 一本色道久久综合狠狠躁的推荐| 欧美精品1区2区3区| 国产欧美精品日韩区二区麻豆天美| 亚洲图片你懂的| 蜜臀a∨国产成人精品| 成人国产精品免费观看| 欧美色国产精品| 亚洲国产精品t66y| 天天综合色天天综合色h| 国产很黄免费观看久久| 色999日韩国产欧美一区二区| 欧美一区二区视频网站| 国产精品国产三级国产aⅴ无密码| 亚洲成av人综合在线观看| 国产在线一区观看| 欧美日韩1234| 国产精品不卡在线| 久久91精品国产91久久小草 | 日韩三级精品电影久久久 | 国产欧美在线观看一区| 午夜精品久久久久| 99久免费精品视频在线观看 | 亚洲天堂2014| 成人做爰69片免费看网站| 欧美精品vⅰdeose4hd| 成人免费小视频| 国产一区二区三区免费观看| 欧美影院一区二区| 国产精品每日更新| 国产福利一区二区三区在线视频| 91精品中文字幕一区二区三区 | 久久久91精品国产一区二区精品| 香蕉成人伊视频在线观看| 一本久久a久久免费精品不卡| 精品国产精品一区二区夜夜嗨| 亚洲高清不卡在线| 色哟哟在线观看一区二区三区| 国产欧美中文在线| 国产美女主播视频一区| 91麻豆精品国产91| 午夜精品福利视频网站| 欧美性感一类影片在线播放| 亚洲欧美国产毛片在线| www.日本不卡| 国产精品传媒在线| 成人午夜免费视频| 国产精品久久久久三级| 国产精品一品视频| www国产精品av| 国产麻豆精品95视频| 久久品道一品道久久精品|