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

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

?? sd_reader.vhd

?? SD卡讀卡器模塊的VHDL及軟件驅動代碼
?? VHD
字號:
library IEEE;
use IEEE.std_logic_1164.all;

------------- for debug --------------
--use WORK.sd_rd_state.all;
--use WORK.sd_wr_state.all;
--------------------------------------

entity sd_reader is
	port
	(
		clk:			in std_logic;	-- from bus
		clk_sd:			in std_logic;	-- sd card clk
		reset:			in std_logic;	-- from bus
		chipselect:		in std_logic;	-- from bus
		address:		in std_logic_vector( 1 downto 0 ); -- from bus
		write:			in std_logic;	-- from bus
		read:			in std_logic;	-- from bus
		writedata:		in std_logic_vector( 15 downto 0 ); -- from bus
		sd_cmd:			inout std_logic; -- export sd cmt
		sd_data:		inout std_logic_vector( 3 downto 0 ); -- export sd data
		waitrequest:	out std_logic;	-- to bus
------------- for debug --------------
--		owr_stat:		out SD_WR_STAT;
--		ord_stat:		out SD_RD_STAT;
--		owr_buzy:		out std_logic;
--		oreadm:			out std_logic;
--------------------------------------
		readdata:		out std_logic_vector( 15 downto 0 ) -- to bus
	);
end sd_reader;

architecture RTL of sd_reader is
	
	constant BLOCK_LEN_LOG2:	integer := 9;
	constant FIFO_DEPTH_LOG2:	integer := 11;
	
	component sd_rd
		generic
		(
			BLOCK_LEN_LOG2:	integer
		);
		port
		(
			clk:			in std_logic;	-- from bus
			reset:			in std_logic;	-- from bus
			chipselect:		in std_logic;	-- from bus
			address:		in std_logic_vector( 1 downto 0 ); -- from bus
			write:			in std_logic;	-- from bus
			read:			in std_logic;	-- from bus
			writedata:		in std_logic_vector( 15 downto 0 ); -- from bus
			wr_buzy:		in std_logic;	-- from sd_wr (async)
			cardready:		in std_logic;	-- from sd_wr (async)
			crcerr:			in std_logic;	-- from recvdata (async)
			rdempty:		in std_logic;	-- from dcfifo
			rdusedw: 		in std_logic_vector( 10 downto 0 ); -- from dcfifo
			data:			in std_logic_vector( 15 downto 0 ); -- from dcfifo
			waitrequest:	out std_logic;	-- to bus
			readdata:		out std_logic_vector( 15 downto 0 ); -- to bus
			wr_init:		out std_logic;	-- to sd_wr (async)
			wr_read:		out std_logic;	-- to sd_wr (async)
			wr_readm:		out std_logic;	-- to sd_wr (async)
			dataaddr:		out std_logic_vector( 31 downto 0 ); -- to sd_wr (async)
			autoreread:		out std_logic;	-- to sd_wr (async)
			rdreq:			out std_logic;	-- to dcfifo
------------- for debug ---------------
--			ostat:			out SD_RD_STAT;
--			owr_buzy_r:		out std_logic;
--			owr_buzy_dl:	out std_logic;
---------------------------------------
			areset:			out std_logic	-- to dcfifo, sd_wr, sendcmd, recvresp, recvdata
		);
	end component;
	
	component sd_wr
		generic
		(
			BLOCK_LEN_LOG2:	integer;
			FIFO_DEPTH_LOG2:integer
		);
		port
		(
			clk:			in std_logic;	-- sd clk
			areset:			in std_logic;	-- async reset
			init:			in std_logic;	-- from sd_rd (async)
			read:			in std_logic;	-- from sd_rd (async)
			readm:			in std_logic;	-- from sd_rd (async)
			dataaddr:		in std_logic_vector( 31 downto 0 ); -- from sd_rd (async)
			autoreread:		in std_logic;	-- from sd_rd (async)
			sc_buzy:		in std_logic;	-- from sendcmd
			sc_q:			in std_logic;	-- from sendcmd
			rr_buzy:		in std_logic;	-- from recvresp
			rr_content:		in std_logic_vector( 126 downto 0 ); -- from recvresp
			rr_crcerr:		in std_logic;	-- from recvresp
			rd_buzy:		in std_logic;	-- from recvdata
			rd_crcerr:		in std_logic;	-- from recvdata
			wrusedw:		in std_logic_vector( 11 downto 0 ); -- from dcfifo
			sd_cmd:			inout std_logic; -- sd cmt
			sd_data:		inout std_logic_vector( 3 downto 0 ); -- sd data
			buzy:			out std_logic;	-- to sd_rd (async)
			cardready:		out std_logic;	-- to sd_rd (async)
			sc_send:		out std_logic;	-- to sendcmd
			sc_cmdno:		out std_logic_vector( 5 downto 0 ); -- to sendcmd
			sc_content:		out std_logic_vector( 31 downto 0 ); -- to sendcmd
			rr_recv:		out std_logic;	-- to recvresp
			rr_longresp:	out std_logic;	-- to recvresp
			rr_cmd:			out std_logic;	-- to recvresp
			rd_recv:		out std_logic;	-- to recvdata
			rd_data:		out std_logic_vector( 3 downto 0 );	-- to recvdata
--------------- for debug ---------------------
--			ostat:			out SD_WR_STAT;
-----------------------------------------------
			aclr:			out std_logic	-- to dcfifo
		);
	end component;
	
	component sendcmd
		port
		(
			clk:		in std_logic;	-- sd clk
			areset:		in std_logic;	-- async reset
			send:		in std_logic;	-- send request
			cmdno:		in std_logic_vector( 5 downto 0 ); -- cmd number
			content:	in std_logic_vector( 31 downto 0 ); -- cmd content
			buzy:		out std_logic;	-- buzy sending
-------- for debug ---------------
--			ocnt:		out integer range 0 to 39;
--			ocmd:		out std_logic_vector( 39 downto 0 );
--			ocrc:		out std_logic_vector( 6 downto 0 );
------------------------------------
			q:			out std_logic	-- to sd cmd
		);
	end component;
	
	component recvresp
		port
		(
			clk:		in std_logic;	-- sd clk
			areset:		in std_logic;	-- async reset
			recv:		in std_logic;	-- recv response
			longresp:	in std_logic;	-- long response(136) /short(48)
			cmd:		in std_logic;	-- cmd port
			buzy:		out std_logic;	-- buzy receiving
			content:	out std_logic_vector( 126 downto 0 ); -- response content
	---------- for debug ----------------
	--		ocnt:		out integer range 0 to 126;
	--		ocrc:		out std_logic_vector( 6 downto 0 );
	-------------------------------------
			crcerr:		out std_logic	-- response crc error
		);
	end component;
	
	component recvdata 
		generic
		(
			BLOCK_LEN_LOG2:	integer
		);
		port
		(
			clk:		in std_logic;
			areset:		in std_logic;	-- async reset
			recv:		in std_logic;	-- from sd_wr
			data:		in std_logic_vector( 3 downto 0 ); -- sd_data
			buzy:		out std_logic;	-- buzy receiving
			crcerr:		out std_logic;	-- data crc error (async)
			wrreq:		out std_logic;	-- to dcfifo
------------- for debug -------------------
--			obitcnt:	out integer range 0 to 7;
--			ocnt:		out integer range 0 to 4095;
--			ocrc:		out std_logic_vector( 15 downto 0 );
-------------------------------------------
			q:			out std_logic_vector( 7 downto 0 ) -- to dcfifo
		);
	end component;
	
	component dcfifo_sd
		PORT
		(
			aclr		: IN STD_LOGIC ;
			data		: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
			rdclk		: IN STD_LOGIC ;
			rdreq		: IN STD_LOGIC ;
			wrclk		: IN STD_LOGIC ;
			wrreq		: IN STD_LOGIC ;
			q			: OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
			rdempty		: OUT STD_LOGIC ;
			rdusedw		: OUT STD_LOGIC_VECTOR (10 DOWNTO 0);
			wrusedw		: OUT STD_LOGIC_VECTOR (11 DOWNTO 0)
		);
	end component;
	
	signal t_wr_buzy:		std_logic;	-- sd_wr to sd_rd
	signal t_cardready:		std_logic;	-- sd_wr to sd_rd
	signal t_rd_crcerr:		std_logic;	-- recvdata to sd_rd
	signal t_rdempty:		std_logic;	-- dcfifo to sd_rd
	signal t_fifo_data:		std_logic_vector( 15 downto 0 ); -- dcfifo to sd_rd
	signal t_wr_init:		std_logic;	-- sd_rd to sd_wr
	signal t_wr_read:		std_logic;	-- sd_rd to sd_wr
	signal t_dataaddr:		std_logic_vector( 31 downto 0 ); -- sd_rd to sd_wr
	signal t_rdreq:			std_logic;	-- sd_rd to dcfifo
	signal t_areset:		std_logic;	-- sd_rd to sd_wr, sendcmd, recvresp, recvdata, dcfifo
	signal t_sc_buzy:		std_logic;	-- sendcmd to sd_wr
	signal t_sc_q:			std_logic;	-- sendcmd to sd_wr
	signal t_rr_buzy:		std_logic;	-- recvresp to sd_wr
	signal t_rr_content:	std_logic_vector( 126 downto 0 ); -- recvresp to sd_wr
	signal t_rr_crcerr:		std_logic;	-- recvresp to sd_wr
	signal t_rd_buzy:		std_logic;	-- recvdata to sd_wr
	signal t_sc_send:		std_logic;	-- sd_wr to sendcmd
	signal t_sc_cmdno:		std_logic_vector( 5 downto 0 ); -- sd_wr to sendcmd
	signal t_sc_content:	std_logic_vector( 31 downto 0 ); -- sd_wr to sendcmd
	signal t_rr_recv:		std_logic;	-- sd_wr to recvresp
	signal t_rr_longresp:	std_logic;	-- sd_wr to recvresp
	signal t_rr_cmd:		std_logic;	-- sd_wr to recvresp
	signal t_rd_recv:		std_logic;	-- sd_wr to recvdata
	signal t_rd_data:		std_logic_vector( 3 downto 0 ); -- sd_wr to recvdata
	signal t_wrreq:			std_logic;	-- recvdata to dcfifo
	signal t_rd_q:			std_logic_vector( 7 downto 0 );	-- recvdata to dcfifo
	signal t_autoreread:	std_logic;	-- sd_rd to sd_wr
	signal t_aclr:			std_logic;	-- sd_wr to dcfifo
	signal t_rdusedw:		std_logic_vector( 10 downto 0 ); -- dcfifo to sd_rd
	signal t_wr_readm:		std_logic;	-- sd_rd to sd_wr
	signal t_wrusedw:		std_logic_vector( 11 downto 0 ); -- dcfifo to sd_wr
	
begin
	
	Sd_rd_inst: sd_rd
		generic map
		(
			BLOCK_LEN_LOG2	=>	BLOCK_LEN_LOG2
		)
		port map
		(
			clk				=>	clk,
			reset			=>	reset,
			chipselect		=>	chipselect,
			address			=>	address,
			write			=>	write,
			read			=>	read,
			writedata		=>	writedata,
			wr_buzy			=>	t_wr_buzy,
			cardready		=>	t_cardready,
			crcerr			=>	t_rd_crcerr,
			rdempty			=>	t_rdempty,
			rdusedw 		=>	t_rdusedw,
			data			=>	t_fifo_data,
			waitrequest		=>	waitrequest,
			readdata		=>	readdata,
			wr_init			=>	t_wr_init,
			wr_read			=>	t_wr_read,
			wr_readm		=>	t_wr_readm,
			dataaddr		=>	t_dataaddr,
			autoreread		=>	t_autoreread,
			rdreq			=>	t_rdreq,
------------- for debug ---------------
--			ostat			=>	ord_stat,
--			owr_buzy_r:		out std_logic;
--			owr_buzy_dl:	out std_logic;
---------------------------------------
			areset			=>	t_areset
		);
	
	Sd_wr_inst:	sd_wr
		generic map
		(
			BLOCK_LEN_LOG2	=>	BLOCK_LEN_LOG2,
			FIFO_DEPTH_LOG2	=>	FIFO_DEPTH_LOG2
		)
		port map
		(
			clk				=>	clk_sd,
			areset			=>	t_areset,
			init			=>	t_wr_init,
			read			=>	t_wr_read,
			readm			=>	t_wr_readm,
			dataaddr		=>	t_dataaddr,
			autoreread		=>	t_autoreread,
			sc_buzy			=>	t_sc_buzy,
			sc_q			=>	t_sc_q,
			rr_buzy			=>	t_rr_buzy,
			rr_content		=>	t_rr_content,
			rr_crcerr		=>	t_rr_crcerr,
			rd_buzy			=>	t_rd_buzy,
			rd_crcerr		=>	t_rd_crcerr,
			wrusedw			=>	t_wrusedw,
			sd_cmd			=>	sd_cmd,
			sd_data			=>	sd_data,
			buzy			=>	t_wr_buzy,
			cardready		=>	t_cardready,
			sc_send			=>	t_sc_send,
			sc_cmdno		=>	t_sc_cmdno,
			sc_content		=>	t_sc_content,
			rr_recv			=>	t_rr_recv,
			rr_longresp		=>	t_rr_longresp,
			rr_cmd			=>	t_rr_cmd,
			rd_recv			=>	t_rd_recv,
			rd_data			=>	t_rd_data,
--------------- for debug ---------------------
--			ostat			=>	owr_stat,
-----------------------------------------------
			aclr			=>	t_aclr
		);
	
	Sendcmd_inst: sendcmd
		port map
		(
			clk			=>	clk_sd,
			areset		=>	t_areset,
			send		=>	t_sc_send,
			cmdno		=>	t_sc_cmdno,
			content		=>	t_sc_content,
			buzy		=>	t_sc_buzy,
-------- for debug ---------------
--			ocnt:		out integer range 0 to 39;
--			ocmd:		out std_logic_vector( 39 downto 0 );
--			ocrc:		out std_logic_vector( 6 downto 0 );
------------------------------------
			q			=>	t_sc_q
		);
	
	Recvresp_inst: recvresp
		port map
		(
			clk			=>	clk_sd,
			areset		=>	t_areset,
			recv		=>	t_rr_recv,
			longresp	=>	t_rr_longresp,
			cmd			=>	t_rr_cmd,
			buzy		=>	t_rr_buzy,
			content		=>	t_rr_content,
	---------- for debug ----------------
	--		ocnt:		out integer range 0 to 126;
	--		ocrc:		out std_logic_vector( 6 downto 0 );
	-------------------------------------
			crcerr		=>	t_rr_crcerr
		);
	
	Recvdata_inst: recvdata 
		generic map
		(
			BLOCK_LEN_LOG2	=>	BLOCK_LEN_LOG2
		)
		port map
		(
			clk		=>	clk_sd,
			areset	=>	t_areset,
			recv	=>	t_rd_recv,
			data	=>	t_rd_data,
			buzy	=>	t_rd_buzy,
			crcerr	=>	t_rd_crcerr,
			wrreq	=>	t_wrreq,
------------- for debug -------------------
--			obitcnt:	out integer range 0 to 7;
--			ocnt:		out integer range 0 to 4095;
--			ocrc:		out std_logic_vector( 15 downto 0 );
-------------------------------------------
			q		=>	t_rd_q
		);
	
	Dcfifo_sd_inst: dcfifo_sd
		port map
		(
			aclr	=>	t_aclr,
			data	=>	t_rd_q,
			rdclk	=>	clk,
			rdreq	=>	t_rdreq,
			wrclk	=>	clk_sd,
			wrreq	=>	t_wrreq,
			q		=>	t_fifo_data,
			rdempty	=>	t_rdempty,
			rdusedw	=>	t_rdusedw,
			wrusedw	=>	t_wrusedw
		);
		
------------- for debug --------------
--	owr_buzy <= t_wr_buzy;
--	oreadm <= t_wr_readm;
--------------------------------------
	
end RTL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合色中文字幕| 国产白丝网站精品污在线入口| 精品一区二区三区蜜桃| 大白屁股一区二区视频| 7777精品伊人久久久大香线蕉最新版| 欧美国产丝袜视频| 久久超碰97中文字幕| 日本韩国一区二区三区视频| 日本一区免费视频| 男人操女人的视频在线观看欧美 | 91亚洲精品久久久蜜桃网站| 日韩一级完整毛片| 亚洲欧美日本在线| 国产 日韩 欧美大片| 精品国产第一区二区三区观看体验| 亚洲欧美激情在线| 成人少妇影院yyyy| 久久奇米777| 加勒比av一区二区| 欧美一区二区三区的| 午夜精品久久久久久久99水蜜桃| 色av成人天堂桃色av| 亚洲视频在线一区| 99久久精品免费| 国产精品国产三级国产普通话三级| 国产一区二区三区在线观看免费 | 日韩久久久久久| 日韩电影一区二区三区| 欧美高清性hdvideosex| 亚洲高清视频中文字幕| 欧美三日本三级三级在线播放| 亚洲男人天堂av网| 色综合天天天天做夜夜夜夜做| 国产精品久久久久久久久久免费看| 成人听书哪个软件好| 国产精品久久久久7777按摩| www.欧美日韩国产在线| 亚洲女女做受ⅹxx高潮| 日本久久精品电影| 午夜精品久久久久久久久久久 | 粉嫩蜜臀av国产精品网站| 国产三级欧美三级| 成人激情综合网站| 中文字幕在线观看一区| 色婷婷av一区二区三区gif| 亚洲码国产岛国毛片在线| 精品视频在线视频| 乱一区二区av| 国产精品免费看片| 色偷偷88欧美精品久久久| 性久久久久久久久久久久| 日韩丝袜情趣美女图片| 国产成人夜色高潮福利影视| 国产精品久久久久久久久图文区| 欧美中文一区二区三区| 麻豆国产一区二区| 国产精品妹子av| 51精品久久久久久久蜜臀| 国产精品一区在线| 亚洲综合色噜噜狠狠| 91精品国产乱码| 成人a级免费电影| 午夜视黄欧洲亚洲| 国产色一区二区| 欧美色窝79yyyycom| 久久66热偷产精品| 中文字幕一区二区三区av| 在线观看91精品国产麻豆| 国产精品77777竹菊影视小说| 亚洲精品乱码久久久久久黑人| 欧美老年两性高潮| 成人av中文字幕| 日韩在线一区二区| 1024成人网| 精品sm在线观看| 欧美日韩午夜在线| 99这里只有久久精品视频| 日韩电影一区二区三区| 亚洲精品乱码久久久久| 国产亚洲欧美色| 91精品国产综合久久精品| 91在线视频播放| 国内精品国产成人国产三级粉色 | 97se狠狠狠综合亚洲狠狠| 久久国产生活片100| 亚洲精品五月天| 国产日韩欧美不卡在线| 欧美一区二区精品| 欧美日韩国产综合一区二区 | 99精品视频在线播放观看| 麻豆一区二区三区| 午夜日韩在线观看| 一区二区三区四区精品在线视频 | 欧美日韩久久久一区| av一区二区三区黑人| 激情综合亚洲精品| 日av在线不卡| 日韩精品电影在线观看| 亚洲一区二区欧美日韩| 亚洲视频1区2区| 国产精品视频你懂的| 久久精品亚洲麻豆av一区二区| 欧美一区二区久久久| 91精品国产美女浴室洗澡无遮挡| 欧美视频在线一区二区三区| 色婷婷av一区二区三区大白胸| 99麻豆久久久国产精品免费 | 中文一区一区三区高中清不卡| 日韩欧美第一区| 欧美一区二区三区在线电影| 欧美猛男超大videosgay| 色香蕉成人二区免费| 99久久99久久精品免费观看| 不卡的看片网站| 成人不卡免费av| 99精品视频在线观看免费| 91在线一区二区三区| 色欲综合视频天天天| 色国产精品一区在线观看| 日本道免费精品一区二区三区| 91极品美女在线| 欧美性三三影院| 91麻豆精品国产91久久久使用方法 | 精品国产123| 久久综合色天天久久综合图片| 亚洲精品一区在线观看| 久久久久一区二区三区四区| 久久无码av三级| 国产精品久久久久婷婷| 亚洲主播在线观看| 五月激情综合婷婷| 久久国产精品无码网站| 国产成人丝袜美腿| 91免费看`日韩一区二区| 欧美体内she精高潮| 欧美一区二区成人| 国产欧美精品一区二区三区四区 | 欧美三区在线视频| 日韩欧美电影一二三| 中文成人av在线| 亚洲一区二区在线免费看| 另类成人小视频在线| 国产suv精品一区二区三区 | 国产麻豆欧美日韩一区| 成人的网站免费观看| 欧美久久久影院| 久久久久成人黄色影片| 亚洲欧美中日韩| 美女一区二区视频| 成人一级片网址| 6080午夜不卡| 国产精品人人做人人爽人人添| 亚洲成人av在线电影| 韩国精品久久久| 欧美亚洲高清一区| 2021久久国产精品不只是精品| 亚洲视频综合在线| 韩国一区二区三区| 欧美亚洲日本一区| 国产亚洲精品bt天堂精选| 午夜久久久久久| 99re热视频精品| 国产亚洲精品超碰| 免费成人在线观看| 欧美综合在线视频| 1000部国产精品成人观看| 久久不见久久见免费视频1| 在线视频中文字幕一区二区| 久久综合狠狠综合久久激情| 亚洲成人一区二区在线观看| 成人国产精品免费观看动漫| 日韩天堂在线观看| 亚洲成人在线观看视频| 99精品一区二区| 中文字幕不卡在线| 国产一区二区三区久久久| 欧美丰满嫩嫩电影| 亚洲激情综合网| 成人h精品动漫一区二区三区| 精品国产三级电影在线观看| 亚洲高清三级视频| 色一情一乱一乱一91av| 中文字幕一区二区三| 国产精华液一区二区三区| 欧美mv日韩mv亚洲| 日本sm残虐另类| 欧美一级专区免费大片| 午夜电影一区二区三区| 欧美三级电影在线看| 一区二区三区日本| 色欧美88888久久久久久影院| 国产精品免费aⅴ片在线观看| 国产a久久麻豆| 欧美国产一区二区| 国产九色sp调教91| 国产欧美日韩不卡免费| 国产精品99久久久久久久vr| 国产女同互慰高潮91漫画| 国产精品99久久久久久有的能看 | 亚洲人成网站在线|