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

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

?? usbtstpak.vhd

?? USB控制器VHDL程(usb_xilinx_vhdl),用XILINX公司的FPGA實現(xiàn)
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		data:        in    STD_LOGIC_VECTOR(7 downto 0)) is
	begin
		bit01(clk, xd, x0, data(0)); fieldComputeCRC16(data(0));
		bit01(clk, xd, x0, data(1)); fieldComputeCRC16(data(1));
		bit01(clk, xd, x0, data(2)); fieldComputeCRC16(data(2));
		bit01(clk, xd, x0, data(3)); fieldComputeCRC16(data(3));
		bit01(clk, xd, x0, data(4)); fieldComputeCRC16(data(4));
		bit01(clk, xd, x0, data(5)); fieldComputeCRC16(data(5));
		bit01(clk, xd, x0, data(6)); fieldComputeCRC16(data(6));
		bit01(clk, xd, x0, data(7)); fieldComputeCRC16(data(7));
	end procedure;
	
	--------------------
	procedure fieldCRC5(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		--	When the last bit of the checked field is sent, the CRC in the 
		--	generator is inverted and sent to the checker MSb first. When 
		--	the last bit of the CRC is received by the checker and no 
		--	errors have occurred, the remainder will be equal to the 
		--	polynomial residual.		
		bit01(clk, xd, x0, not(crc5(4)));
		bit01(clk, xd, x0, not(crc5(3)));
		bit01(clk, xd, x0, not(crc5(2)));
		bit01(clk, xd, x0, not(crc5(1)));
		bit01(clk, xd, x0, not(crc5(0)));
	end procedure;
	
	--------------------
	procedure fieldCRC16(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		bit01(clk, xd, x0, not(crc16(15)));
		bit01(clk, xd, x0, not(crc16(14)));
		bit01(clk, xd, x0, not(crc16(13)));
		bit01(clk, xd, x0, not(crc16(12)));
		bit01(clk, xd, x0, not(crc16(11)));
		bit01(clk, xd, x0, not(crc16(10)));
		bit01(clk, xd, x0, not(crc16(9)));
		bit01(clk, xd, x0, not(crc16(8)));
		bit01(clk, xd, x0, not(crc16(7)));
		bit01(clk, xd, x0, not(crc16(6)));
		bit01(clk, xd, x0, not(crc16(5)));
		bit01(clk, xd, x0, not(crc16(4)));
		bit01(clk, xd, x0, not(crc16(3)));
		bit01(clk, xd, x0, not(crc16(2)));
		bit01(clk, xd, x0, not(crc16(1)));
		bit01(clk, xd, x0, not(crc16(0)));
	end procedure;
	
	----------------------------------------
	-- part #4: packets
	procedure packetOUT(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		addr:        in    STD_LOGIC_VECTOR(6 downto 0);
		ep:          in    STD_LOGIC_VECTOR(3 downto 0)) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldOUTpid);
		fieldADDR (clk, xd, x0, addr);
		fieldEP   (clk, xd, x0, ep);
		fieldCRC5 (clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetIN(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		addr:        in    STD_LOGIC_VECTOR(6 downto 0);
		ep:          in    STD_LOGIC_VECTOR(3 downto 0)) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldINpid);
		fieldADDR (clk, xd, x0, addr);
		fieldEP   (clk, xd, x0, ep);
		fieldCRC5 (clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetSOF(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		frame:       in    STD_LOGIC_VECTOR(10 downto 0)) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldSOFpid);
		fieldFRAME(clk, xd, x0, frame);
		fieldCRC5 (clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetSETUP(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		addr:        in    STD_LOGIC_VECTOR(6 downto 0);
		ep:          in    STD_LOGIC_VECTOR(3 downto 0)) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldSETUPpid);
		fieldADDR (clk, xd, x0, addr);
		fieldEP   (clk, xd, x0, ep);
		fieldCRC5 (clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA0(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		data:        in    packetBUF) is
		variable i: INTEGER;
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA0pid);
		
		for i in data'range loop
			fieldBYTE(clk, xd, x0, data(i));
		end loop;
		
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA0(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		data:        in    packetCHR) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA0pid);
		
		fieldBYTE(clk, xd, x0, data);
		
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA0(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
		variable i: INTEGER;
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA0pid);
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA1(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		data:        in    packetBUF) is
		variable i: INTEGER;
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA1pid);
		
		for i in data'range loop
			fieldBYTE(clk, xd, x0, data(i));
		end loop;
		
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA1(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		data:        in    packetCHR) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA1pid);
		
		fieldBYTE(clk, xd, x0, data);
		
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetDATA1(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
		variable i: INTEGER;
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldDATA1pid);
		fieldCRC16(clk, xd, x0);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetACK(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldACKpid);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetNAK(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldNAKpid);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetSTALL(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		fieldSYNC (clk, xd, x0);
		fieldPID  (clk, xd, x0, fieldSTALLpid);
		fieldEOP  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure packetIDLE(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		cycles:      in    INTEGER) is
		variable i: INTEGER;
	begin
		i:= 0;
		while i< cycles loop
			fieldIDLE(clk, xd, x0);
			i:= i+1;
		end loop;
	end procedure;
	
	--------------------
	procedure packetRESET(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		fieldSE0(clk, xd, x0);
		
		-- Reference: USB Spec 1.1
		-- * The reset signaling must be driven for a minimum of 10ms (TDRST).
		-- * Resets from root ports should be nominally 50ms (TDRSTR).
		-- * A device seeing an SE0 on its upstream port for more than 
		--   2.5us (TDETRST) may treat that signal as a reset.
		
		--wait for 50ms;
		--wait for 10ms;
		wait for 5us;
	end procedure;
	
end package body usbTSTPAK;

--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use work.usbTSTPAK.all;

entity usbTSTctrl is
	port(
		signal sim:     in    STD_LOGIC;  -- TRUE while simulating
		signal stim:    in    STD_LOGIC;  -- TRUE to stimulate UUT
		--
		signal clk48:   out   STD_LOGIC;  -- 48MHz clock
		signal rst:     out   STD_LOGIC;  -- async reset
		--
		signal uut_rxd: out   STD_LOGIC;  -- UUT rxd pin
		signal uut_rx0: out   STD_LOGIC;  -- UUT rx0 pin
		signal uut_txd: in    STD_LOGIC;  -- UUT txd pin
		signal uut_tx0: in    STD_LOGIC;  -- UUT tx0 pin
		--
		signal tb_xd:   in    STD_LOGIC;  -- testbench xd signal
		signal tb_x0:   in    STD_LOGIC;  -- testbench x0 signal
		signal tb_clk:  out   STD_LOGIC   -- testbench clock
		);
end usbTSTctrl;

architecture Test of usbTSTctrl is
	signal   pll:     STD_LOGIC;
	signal   osc:     STD_LOGIC;
	constant Tusb1:   TIME:= 84ns;
	constant Tusb2:   TIME:= 21ns;
begin
	
	--------------------
	-- UUT clock & reset
	process
	begin
		if sim= '0' then
			wait;
		else
			clk48<= '0', '1' after 10ns;
			wait for Tusb2;
		end if;
	end process;
	rst<= '1', '0' after 5ns;
	
	--------------------
	-- stimuli clock oscillator
	process(osc, stim)
	begin
		if stim= '1' then
			if osc= 'U' then
				osc<= '0';
			else
				osc<= not(osc) after Tusb1/2;
			end if;
		end if;
	end process;
	
	--------------------
	-- response clock recovery
	process(uut_txd, uut_tx0, stim)
		type Tstate is (Soff, Sx1, Sx, Sse0);
		variable state: Tstate;
	begin
		if stim= '0' then
			-- clock recovery state machine
			case state is
				when Soff=> 
				if uut_txd'event and uut_txd= '0' then
					state:= Sx1;
				end if;
				
				when Sx1=>
				if uut_txd'event then
					state:= Sx;
				end if;
				
				when Sx=>
				if uut_tx0= '1' then
					state:= Sse0;
				end if;
				
				when Sse0=>
				if uut_txd= '1' then
					state:= Soff;
				end if;
			end case;
			
			-- clock recovery
			if (uut_txd'event and (uut_txd= '1' or uut_txd= '0'))
				or (uut_tx0'event) then
				case state is
					when Sx1=> -- sync pattern at start of packet
					pll<= '0',  '1' after  (1*Tusb1)/2;
					
					when Sx=>  -- normal bits
					pll<= 
					'0',                    '1' after  (1*Tusb1)/2,  -- 1
					'0' after  (2*Tusb1)/2, '1' after  (3*Tusb1)/2,  -- 2
					'0' after  (4*Tusb1)/2, '1' after  (5*Tusb1)/2,  -- 3
					'0' after  (6*Tusb1)/2, '1' after  (7*Tusb1)/2,  -- 4
					'0' after  (8*Tusb1)/2, '1' after  (9*Tusb1)/2,  -- 5
					'0' after (10*Tusb1)/2, '1' after (11*Tusb1)/2,  -- 6
					'0' after (12*Tusb1)/2, '1' after (13*Tusb1)/2;  -- 7
					
					when Sse0=>  -- se0 at end of packet
					pll<= 
					'0',                    '1' after  (1*Tusb1)/2,  -- 1
					'0' after  (2*Tusb1)/2, '1' after  (3*Tusb1)/2;  -- 2
					--'0' after  (4*Tusb1)/2, '1' after  (5*Tusb1)/2;  -- 3
					
					when others=> -- J at end of packet or bus idle
					pll<= '0',  '1' after  (1*Tusb1)/2;
				end case;
			end if;
		else
			state:= Soff;
		end if;
	end process;
	
	tb_clk <= osc   when stim= '1' else pll;
	uut_rxd<= tb_xd when stim= '1' else '1';
	uut_rx0<= tb_x0 when stim= '1' else '0';
	
	--------------------
	process
	begin
		wait until rising_edge(pll);
		wait for 1ns;
		
		assert(tb_xd= '-' or uut_txd= tb_xd) report "xd mismatch" severity FAILURE;
		assert(tb_x0= '-' or uut_tx0= tb_x0) report "x0 mismatch" severity FAILURE;
		
	end process;
end Test;

--------------------------------------------------------------------------------
-- end of file

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产bt| 成人av免费在线| 日韩精品综合一本久道在线视频| 天堂蜜桃一区二区三区 | 午夜精品久久久久久久久| 欧美亚洲综合网| 日韩精品电影在线| 精品免费视频.| 波多野结衣欧美| 五月开心婷婷久久| 精品国产免费人成在线观看| 国产91丝袜在线观看| 亚洲乱码国产乱码精品精可以看| 欧美理论在线播放| 国产精一区二区三区| 亚洲另类在线制服丝袜| 欧美人妖巨大在线| 国产麻豆精品在线| 亚洲视频在线一区二区| 91精品国产色综合久久| 国产一区二区日韩精品| 亚洲最大成人网4388xx| 久久蜜桃一区二区| 欧美日韩一本到| 国产成人在线看| 日韩精品免费专区| 国产精品久久久久一区二区三区| 欧美午夜电影一区| 精品一区二区三区久久| 亚洲中国最大av网站| 精品国产乱码久久| 欧美在线制服丝袜| 国产白丝精品91爽爽久久 | 中文字幕中文乱码欧美一区二区| 欧日韩精品视频| 国产大片一区二区| 性做久久久久久免费观看| 国产欧美日韩在线| 91精品国产综合久久久蜜臀粉嫩 | 国产精品伊人色| 午夜欧美电影在线观看| 亚洲欧美综合色| 男女激情视频一区| 在线视频国内一区二区| 99国产精品久久| 中文字幕第一区二区| 欧美一区二视频| 蜜桃久久久久久久| 亚洲成人免费在线观看| 岛国av在线一区| 97精品视频在线观看自产线路二| 99久久国产免费看| 91黄色小视频| 欧美一区二区视频网站| 久久午夜免费电影| 亚洲女性喷水在线观看一区| 亚洲精品高清在线| 日本中文字幕一区二区有限公司| 久久99深爱久久99精品| 国产成人一级电影| 91精品办公室少妇高潮对白| 777亚洲妇女| 国产欧美一区二区精品仙草咪| 国产精品久久久久影视| 亚洲五码中文字幕| 激情av综合网| 色诱亚洲精品久久久久久| 欧美日韩国产高清一区二区三区 | 欧美在线免费播放| 日韩欧美久久久| 综合激情网...| 日韩国产在线观看| 丁香婷婷综合色啪| 欧美日韩一区在线观看| 久久亚洲影视婷婷| 亚洲一区二区综合| 国产精品自拍一区| 精品视频在线视频| 欧美韩日一区二区三区四区| 亚洲午夜久久久久久久久电影网| 老司机精品视频线观看86| av不卡一区二区三区| 欧美高清一级片在线| 国产精品久久久久四虎| 日产欧产美韩系列久久99| 99re热视频这里只精品| 欧美xfplay| 亚洲午夜激情av| 成人小视频在线观看| 欧美福利视频一区| 亚洲三级在线播放| 国产一区二区三区国产| 欧美剧情电影在线观看完整版免费励志电影| 久久久久久亚洲综合影院红桃 | 亚洲 欧美综合在线网络| 丁香天五香天堂综合| 欧美一区二区网站| 亚洲精品欧美综合四区| 国产精品1区2区3区在线观看| 欧美三级电影在线看| 中文字幕在线播放不卡一区| 激情av综合网| 日韩欧美一级精品久久| 亚洲午夜久久久久久久久电影网 | 欧美综合在线视频| 欧美激情一区二区三区| 久久99精品久久久久| 欧美日韩二区三区| 依依成人综合视频| 99久久精品国产一区二区三区 | 免费久久99精品国产| 在线视频综合导航| 亚洲精品国产品国语在线app| 国产精品一区二区果冻传媒| 欧美一二三区精品| 天堂av在线一区| 欧美日韩极品在线观看一区| 亚洲黄色片在线观看| eeuss鲁片一区二区三区在线看 | 午夜欧美在线一二页| 日本丶国产丶欧美色综合| 国产精品久久久久9999吃药| 国产一区三区三区| 精品电影一区二区三区| 麻豆成人久久精品二区三区小说| 7777精品久久久大香线蕉| 亚洲第一激情av| 欧美日韩精品一区二区| 亚洲444eee在线观看| 欧美精品久久久久久久久老牛影院| 亚洲一二三四在线观看| 在线免费观看成人短视频| 一区二区三区在线免费播放| 在线精品视频免费观看| 亚洲国产一区视频| 欧美日韩精品专区| 日韩激情一区二区| 日韩免费观看高清完整版| 美女网站色91| 26uuu精品一区二区| 国产91丝袜在线播放九色| 国产日韩欧美综合一区| www.亚洲色图| 亚洲激情在线激情| 欧美日韩中文字幕一区| 视频一区二区国产| 欧美成人a∨高清免费观看| 久久丁香综合五月国产三级网站 | www成人在线观看| 国产精品99久久久久久久vr| 欧美韩国日本综合| 日本韩国欧美一区二区三区| 亚洲国产成人高清精品| 欧美成人a视频| 成年人网站91| 亚洲午夜久久久久久久久电影网| 欧美一区二区二区| 国产suv精品一区二区883| 亚洲美女偷拍久久| 欧美一区三区四区| 国产成人免费网站| 一区二区三区国产豹纹内裤在线| 6080午夜不卡| 国产精品香蕉一区二区三区| 亚洲理论在线观看| 欧美一级日韩免费不卡| 国产高清成人在线| 亚洲电影在线播放| 2017欧美狠狠色| 色狠狠色狠狠综合| 国产中文一区二区三区| 亚洲品质自拍视频网站| 日韩欧美中文字幕一区| 国产成人免费视| 午夜亚洲福利老司机| 久久精品网站免费观看| 91国产免费看| 狠狠色狠狠色综合| 一区二区三区久久| 久久九九久精品国产免费直播| 91网页版在线| 国产精品影音先锋| 午夜国产精品一区| 亚洲视频中文字幕| 2023国产精品视频| 欧美日产国产精品| 91丨porny丨中文| 激情另类小说区图片区视频区| 亚洲精品老司机| 国产欧美日本一区二区三区| 欧美日产在线观看| 91麻豆免费在线观看| 国产在线观看一区二区| 亚洲成人动漫在线免费观看| 中文字幕的久久| 久久久青草青青国产亚洲免观| 欧美日韩精品福利| 色综合久久久久| 成人激情免费电影网址| 国产一区二区三区日韩|