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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? atacntl.vhd

?? 這是一個基于FPGA的CF卡讀寫程序
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
				if(pioRd = YES) then
					-- a read operation is requested
					pioBusy_x <= YES;					-- set busy bit
					da_x <= pioAddr;					-- output disk register address
					timer_x <= SETUP_CYCLES;	-- set timer for address setup
					state_x <= RD_PULSE;			-- next state after address setup completes
					status_x <= "0010";
				elsif(pioWr = YES) then
					-- a write operation is requested
					pioBusy_x <= YES;					-- set busy bit
					da_x <= pioAddr;					-- output disk register address
					ddOut_x <= pioDIn;				-- output data to disk
					ddOutEnbl_x <= YES;				-- enable output bus
					timer_x <= SETUP_CYCLES;	-- set timer for address/data setup
					state_x <= WR_PULSE;			-- next state after address/data setup completes
					status_x <= "0100";
				else
					-- no operation is requested
					pioBusy_x <= NO;					-- clear busy bit
					state_x <= RW_SETUP;			-- return to this state and wait for R/W request
					status_x <= "0001";
				end if;

			-----------------------------------------------------------
			-- pulse disk read control signal 
			-----------------------------------------------------------
			when RD_PULSE =>
				dior_x <= LO;								-- lower disk read control line
				timer_x <= PULSE_CYCLES;		-- load duration of read pulse
				state_x <= RD_HOLD;					-- next state after pulse completes

			-----------------------------------------------------------
			-- get data and hold address after read pulse ends 
			-----------------------------------------------------------
			when RD_HOLD =>
				ddIn_x <= ddIn;							-- load the data from the disk
				dior_x <= HI;								-- terminate the read pulse
				timer_x <= HOLD_CYCLES;			-- insert hold period after read operation
				state_x <= RW_SETUP;				-- look for another operation after the hold period

			-----------------------------------------------------------
			-- pulse disk write control signal 
			-----------------------------------------------------------
			when WR_PULSE =>
				diow_x <= LO;								-- lower disk write control line
				timer_x <= PULSE_CYCLES;		-- load duration of write pulse
				state_x <= WR_HOLD;					-- next state after pulse completes

			-----------------------------------------------------------
			-- hold address and data after write pulse ends 
			-----------------------------------------------------------
			when WR_HOLD =>
				diow_x <= HI;								-- terminate the write pulse
				timer_x <= HOLD_CYCLES;			-- insert hold period after write operation
				state_x <= RW_SETUP;				-- look for another operation after the hold period

			-----------------------------------------------------------
			-- unknown state
			-----------------------------------------------------------
			when others =>
				state_x <= RW_SETUP;				-- reset state if in erroneous state
				status_x <= "1000";
		
			end case;
		end if;
	end process combinatorial;


	-----------------------------------------------------------
	-- update registers on the appropriate clock edge	
	-----------------------------------------------------------

	update: process(pioRst,clk)
	begin

		if pioRst = YES then
			-- asynchronous reset
			state_r				<= RW_SETUP;
			timer_r				<= (others=>'0');
			pioBusy_r			<= NO;
			pioIntrq_r		<= NO;
			intrq_r				<= NO;
			intrqCnt_r		<= (others=>'0');
			dior_r				<= HI;
			diow_r				<= HI;
			da_r					<= (others=>'0');
			ddOut_r				<= (others=>'0');
			ddOutEnbl_r		<= NO;
			ddIn_r				<= (others=>'0');
			status_r			<= (others=>'0');
		elsif clk'event and clk='1' then
			state_r				<= state_x;
			timer_r				<= timer_x;
			pioBusy_r			<= pioBusy_x;
			pioIntrq_r		<= pioIntrq_x;
			intrq_r				<= intrq_x;
			intrqCnt_r		<= intrqCnt_x;
			dior_r				<= dior_x;
			diow_r				<= diow_x;
			da_r					<= da_x;
			ddOut_r				<= ddOut_x;
			ddOutEnbl_r		<= ddOutEnbl_x;
			ddIn_r				<= ddIn_x;
			status_r			<= status_x;
		end if;

	end process update;

end arch;





library IEEE, UNISIM;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use WORK.common.all;
use WORK.ata.all;

----------------------------------------------------------------------------------
-- This module reads or write a complete 256-word sector of the disk.
--
-- For a read operation, the host supplies a register address and pulls the read
-- control line high.  The read operation begins on the next rising clock edge
-- and the busy signal goes high.  The host gets the data from the disk register 
-- once the busy signal goes low again.
--
-- For a write operation, the host supplies a register address and the data to
-- be stored there and pulls the write control line high.  The write operation
-- begins on the nxt rising clock edge an the busy signal goes high.  The register
-- contains the new data once the busy signal goes low again.
--
-- The 5-bit register address from the host contains the 3-bit disk register address
-- along with the control and command block register select bits in the most
-- significant bit positions.
----------------------------------------------------------------------------------

entity ataCntl is
	generic(
		FREQ:				natural := 50_000						-- operating frequency in KHz
	);
	port(
		-- host side
		clk:				in	std_logic;							-- master clock
		rst:				in	std_logic;							-- reset
		rd:					in	std_logic;							-- initiate read operation
		wr:					in	std_logic;							-- initiate write operation
		abort:			in	std_logic;							-- aborts	read/write sector operation
		head:				in	unsigned(3 downto 0);		-- disk head for data access
		cylinder:		in	unsigned(15 downto 0);	-- cylinder for data access
		sector:			in	unsigned(7 downto 0);		-- sector for data access
		hDIn:				in	unsigned(15 downto 0);	-- data from host	to disk
		hDOut:			out	unsigned(15 downto 0);	-- data from disk to host
		done:				out	std_logic;							-- read or write operation is done
		status:			out std_logic_vector(3 downto 0);	-- diagnostic status		

		-- disk side
		dior_n:			out	std_logic;							-- disk register read-enable
		diow_n:			out	std_logic;							-- disk register write-enable
		cs0_n:			out	std_logic;							-- disk command block register select
		cs1_n:			out	std_logic;							-- disk control block register select
		da:					out	unsigned(2 downto 0);		-- register address
		ddIn:				in	unsigned(15 downto 0);	-- data from disk
		ddOut:			out unsigned(15 downto 0);	-- data to disk
		ddOutEnbl:	out	std_logic;							-- enable data outputs to disk
		intrq:			in	std_logic;							-- interrupt from disk
		dmack_n:		out	std_logic								-- DMA acknowledge
	);
end ataCntl;



architecture arch of ataCntl is

	-- disk register addresses: (cs1,cs0,da2,da1,da0)
	constant	CONTROL_REG:		unsigned(4 downto 0)	:= "01110";
	constant	DATA_REG:				unsigned(4 downto 0)	:= "10000";
	constant	SECTOR_CNT_REG:	unsigned(4 downto 0)	:= "10010";
	constant	SECTOR_REG:			unsigned(4 downto 0)	:= "10011";
	constant	CYL_LOW_REG:		unsigned(4 downto 0)	:= "10100";
	constant	CYL_HIGH_REG:		unsigned(4 downto 0)	:= "10101";
	constant	DRIVE_HEAD_REG:	unsigned(4 downto 0)	:= "10110";
	constant	CMD_REG:				unsigned(4 downto 0)	:= "10111";
	constant	STATUS_REG:			unsigned(4 downto 0)	:= "10111";

	-- commands for disk
	constant	DRIVE_RESET_CMD:		unsigned(7 downto 0)	:=	x"0C";
	constant	DRIVE_RELEASE_CMD:	unsigned(7 downto 0)	:=	x"08";
	constant	NOP_CMD:						unsigned(7 downto 0)	:=	x"00";
	constant	READ_SECTOR_CMD:		unsigned(7 downto 0)	:=	x"20";
	constant	WRITE_SECTOR_CMD:		unsigned(7 downto 0)	:=	x"30";

	-- disk status register bits
	constant	STATUS_REG_BSY:	natural :=	7;
	constant	STATUS_REG_DRQ:	natural	:=	3;
	constant	STATUS_REG_ERR:	natural	:=	0;

	-- number of 16-bit words per disk sector
	constant	SECTOR_SIZE_N:	natural	:=	256;
		
	-- states of the ATA drive interface state machine
	type cntlState is (
		WAIT_FOR_NOT_BUSY,
		WAIT_FOR_NOT_BUSY_1,
		RESET_DRIVE,
		RESET_DRIVE_1,
		ABORT_1,
		WAIT_FOR_CMD,
		SETUP_DRIVE,
		SETUP_DRIVE_1,
		SETUP_DRIVE_2,
		SETUP_DRIVE_3,
		SETUP_DRIVE_4,
		SETUP_DRIVE_5,
		WRITE_WORDS,
		WRITE_WORDS_1,
		WRITE_WORDS_2,
		WRITE_WORDS_3,
		WRITE_WORDS_4,
		READ_WORDS,
		READ_WORDS_1,
		READ_WORDS_2,
		ERROR
	);
	signal		state_r,			state_x:			cntlState;	-- state register and next state
	signal		rtnState_r,		rtnState_x:		cntlState;	-- state register and next state

	-- ATA drive interface registers
	signal		cmd_r, cmd_x:					unsigned(7 downto 0);	-- ATA drive command (e.g. READ_SECTOR)
	signal		wordCnt_r, wordCnt_x:	unsigned(log2(SECTOR_SIZE_N)-1 downto 0);	-- counts words read from sector
	signal		status_r, status_x:		std_logic_vector(status'range);

	constant	ERROR_FLAG:	natural := 0;	-- position of error flag bit in status register

	constant	SECTOR_SIZE:	unsigned(wordCnt_r'range) := TO_UNSIGNED(SECTOR_SIZE_N,wordCnt_r'length);

	-- PIO interface signals
	signal		pioRd:		std_logic;							-- initiate read operation
	signal		pioWr:		std_logic;							-- initiate write operation
	signal		pioBusy:	std_logic;							-- read or write operation in-progress
	signal		pioIntrq:	std_logic;							-- debounced interrupt from disk
	signal		pioAddr:	unsigned(4 downto 0);		-- register address from host
	signal		pioDIn:		unsigned(15 downto 0);	-- data from host	to disk
	signal		pioDOut:	unsigned(15 downto 0);	-- data from disk to host

begin

	-------------------------------------------------------------------
	-- instantiate the low-level interface to the disk registers
	-------------------------------------------------------------------

	u0: pioIntfc
		generic map(
			FREQ				=> FREQ
		)
		port map(
			clk					=> clk,		
			pioRst			=> rst,
			pioRd				=> pioRd,
			pioWr				=> pioWr,
			pioAddr			=> pioAddr,
			pioDIn			=> pioDIn,
			pioDOut			=> pioDOut,
			pioBusy			=> pioBusy,
			pioIntrq		=> pioIntrq,
			status			=> open,
	
			dior_n			=> dior_n,
			diow_n			=> diow_n,
			cs0_n				=> cs0_n,
			cs1_n				=> cs1_n,
			da					=> da,		

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产成人av片免费| 福利电影一区二区| 欧美中文字幕一区| 一区二区不卡在线播放 | 国产精品1区2区| 欧美精品一区二区三区蜜臀| 国产一区久久久| 国产日韩欧美不卡在线| 福利电影一区二区三区| 亚洲欧美aⅴ...| 在线91免费看| 精品一区二区av| 国产精品国产三级国产a| 色综合婷婷久久| 亚洲18女电影在线观看| 日韩欧美一区二区免费| 国产成人自拍网| 亚洲日本va在线观看| 欧美色视频一区| 免费成人在线观看| 欧美国产精品一区| 91国偷自产一区二区使用方法| 国产精品夜夜爽| 亚洲欧洲中文日韩久久av乱码| 欧美三级视频在线观看| 麻豆91精品视频| 综合在线观看色| 欧美一区二区在线观看| 国产91丝袜在线18| 亚洲va在线va天堂| 日本一区二区三区在线不卡| 欧美在线999| 国产福利91精品一区二区三区| 亚洲日本青草视频在线怡红院| 欧美一区二区三区喷汁尤物| 国产成人免费在线视频| 亚洲一级二级在线| 国产亚洲精品bt天堂精选| 在线观看一区日韩| 国产福利91精品| 亚洲午夜精品17c| 国产日韩精品视频一区| 欧美日韩一区二区三区免费看| 国产在线一区二区综合免费视频| 一区二区欧美国产| 国产欧美日本一区视频| 91精品国产手机| 91视频免费播放| 国产综合成人久久大片91| 亚洲亚洲精品在线观看| 国产精品久久久久三级| 精品久久久久久久久久久久久久久久久| 色悠悠久久综合| 丁香婷婷综合网| 久久精品国产秦先生| 亚洲福利电影网| 亚洲欧美电影一区二区| 久久精品一区二区三区av| 最新日韩在线视频| 久久九九全国免费| 日韩一级成人av| 欧美天堂一区二区三区| 99re热这里只有精品视频| 国产伦精一区二区三区| 美女mm1313爽爽久久久蜜臀| 亚洲午夜久久久久中文字幕久| 国产精品免费看片| 国产日韩精品一区二区三区在线| 日韩精品在线看片z| 欧美精品自拍偷拍| 欧美色综合久久| 欧美亚洲一区二区在线| 99久免费精品视频在线观看| 国产成人免费高清| 国产一区二区三区不卡在线观看 | 欧美老女人在线| 欧美日韩在线三级| 欧美中文字幕亚洲一区二区va在线| 91麻豆国产香蕉久久精品| 国产69精品一区二区亚洲孕妇 | 国产成人精品亚洲日本在线桃色| 久久精品72免费观看| 手机精品视频在线观看| 午夜久久久久久| 男女性色大片免费观看一区二区 | 欧美tickling网站挠脚心| 欧美一区二区三区免费视频| 91精品久久久久久久99蜜桃| 69堂精品视频| 精品欧美乱码久久久久久| 欧美sm极限捆绑bd| 久久精子c满五个校花| 国产女主播在线一区二区| 国产精品色噜噜| 亚洲精品一二三区| 亚洲一二三区不卡| 日韩激情av在线| 经典三级视频一区| 懂色av一区二区在线播放| 成人动漫在线一区| 欧美性色黄大片| 日韩欧美成人激情| 久久一区二区三区国产精品| 国产精品久久福利| 亚洲国产精品久久久久婷婷884| 日韩av中文字幕一区二区| 久久精品国产色蜜蜜麻豆| 国产成人在线看| 在线亚洲高清视频| 日韩美一区二区三区| 欧美激情一区二区三区在线| 亚洲资源在线观看| 精品一区二区av| heyzo一本久久综合| 欧美日本韩国一区| 国产日韩欧美一区二区三区综合| 亚洲丝袜另类动漫二区| 日韩国产成人精品| 粉嫩久久99精品久久久久久夜| 欧美在线视频不卡| 久久精品欧美日韩精品| 亚洲成av人在线观看| 国产精品羞羞答答xxdd| 欧美午夜精品久久久久久孕妇| 精品国产在天天线2019| 亚洲色图另类专区| 精品一区二区三区香蕉蜜桃 | 91久久奴性调教| 精品美女在线观看| 一区二区三区精品久久久| 国精产品一区一区三区mba桃花 | 久久久不卡影院| 亚洲一区二区美女| 国产精华液一区二区三区| 欧美午夜免费电影| 国产欧美日韩不卡免费| 五月天国产精品| 91在线视频在线| 国产亚洲一区二区三区| 亚洲成人7777| 丁香婷婷综合五月| 精品久久久网站| 午夜精品福利一区二区三区av| av在线不卡电影| 久久看人人爽人人| 日韩av电影免费观看高清完整版| 色哟哟国产精品| 日本一区二区三区四区在线视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲尤物久久| 中文字幕一区二区三区四区不卡| 老司机午夜精品99久久| 欧美日韩一区二区欧美激情| 最新中文字幕一区二区三区 | 日韩福利电影在线| 国产精品国产a级| 国产精品一区在线观看乱码 | 91麻豆精品一区二区三区| 久久久精品黄色| 久久成人免费网| 日韩欧美的一区| 久久精品国产99久久6| 制服丝袜在线91| 香蕉av福利精品导航| 欧美午夜影院一区| 一区二区高清视频在线观看| 色婷婷av一区| 亚洲人成在线播放网站岛国| 99久久综合国产精品| 中国av一区二区三区| 波多野洁衣一区| 综合欧美一区二区三区| 91麻豆成人久久精品二区三区| 中文字幕在线观看不卡| 成人激情开心网| 国产精品成人在线观看| av在线一区二区三区| 亚洲免费看黄网站| 欧美日韩在线综合| 男女视频一区二区| 精品免费99久久| 国产.欧美.日韩| 成人欧美一区二区三区1314| 91女厕偷拍女厕偷拍高清| 一区二区三区高清不卡| 欧美日韩国产另类不卡| 日产欧产美韩系列久久99| 欧美电影免费观看高清完整版在线| 九九在线精品视频| 亚洲国产高清在线| 色天使久久综合网天天| 亚洲一区电影777| 日韩精品一区二区三区中文精品 | 国产成人免费xxxxxxxx| 中文字幕一区在线观看视频| 色婷婷综合久久久| 日本 国产 欧美色综合| 久久久国产综合精品女国产盗摄| 99久久精品99国产精品| 亚洲伊人伊色伊影伊综合网|