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

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

?? usbtstpak.vhd

?? USB控制器VHDL程(usb_xilinx_vhdl),用XILINX公司的FPGA實現
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
--------------------------------------------------------------------------------
-- Copyright (c) 2000 by Trenz Electronic.
-- Duenner Kirchweg 77, 32257 Buende, Germany, www.trenz-electronic.de
--     
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--     
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--     
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
--------------------------------------------------------------------------------
-- Project:      Full-Speed USB 1.1 Function Controller
-- File:         usbTSTPAK.vhd
-- Description:  USB testbench package.
-- Version:      FB, 2000jun06
--------------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.all;

package usbTSTPAK is
	--------------------
	component usbTSTctrl
		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 component;
	
	--------------------
	subtype packetCHR is STD_LOGIC_VECTOR(7 downto 0);
	type    packetBUF is array (POSITIVE range <>) of packetCHR;
	
	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));
	
	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));
	
	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));
	
	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));
	
	procedure packetDATA0(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC;
	data:        in    packetBUF);
	
	procedure packetDATA0(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC;
	data:        in    packetCHR);
	
	procedure packetDATA0(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
	procedure packetDATA1(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC;
	data:        in    packetBUF);
	
	procedure packetDATA1(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC;
	data:        in    packetCHR);
	
	procedure packetDATA1(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
	procedure packetACK(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
	procedure packetNAK(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
	procedure packetSTALL(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
	procedure packetIDLE(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC;
	cycles:      in    INTEGER);
	
	procedure packetRESET(
	signal clk:  in    STD_LOGIC;
	signal xd:   out   STD_LOGIC;
	signal x0:   out   STD_LOGIC);
	
end usbTSTPAK;

--------------------------------------------------------------------------------
package body usbTSTPAK is
	-- token PIDs
	constant fieldOUTpid:   STD_LOGIC_VECTOR(7 downto 0):= "11100001";
	constant fieldINpid:    STD_LOGIC_VECTOR(7 downto 0):= "01101001";
	constant fieldSOFpid:   STD_LOGIC_VECTOR(7 downto 0):= "10100101";
	constant fieldSETUPpid: STD_LOGIC_VECTOR(7 downto 0):= "00101101";
	-- data PIDs
	constant fieldDATA0pid: STD_LOGIC_VECTOR(7 downto 0):= "11000011";
	constant fieldDATA1pid: STD_LOGIC_VECTOR(7 downto 0):= "01001011";
	-- handshake PIDs
	constant fieldACKpid:   STD_LOGIC_VECTOR(7 downto 0):= "11010010";
	constant fieldNAKpid:   STD_LOGIC_VECTOR(7 downto 0):= "01011010";
	constant fieldSTALLpid: STD_LOGIC_VECTOR(7 downto 0):= "00011110";
	-- special PIDs
	constant fieldPREpid:   STD_LOGIC_VECTOR(7 downto 0):= "00111100";
	-- CRC fields	
	constant fieldCRC5polynomial:  STD_LOGIC_VECTOR(4 downto 0):= "00101";
	constant fieldCRC5residual:    STD_LOGIC_VECTOR(4 downto 0):= "01100";
	constant fieldCRC16polynomial: STD_LOGIC_VECTOR(15 downto 0):= "1000000000000101";
	constant fieldCRC16residual:   STD_LOGIC_VECTOR(15 downto 0):= "1000000000001101";
	
	-- internal variables
	shared variable nrzi_x: STD_LOGIC;
	shared variable nrzi_n: integer;
	shared variable crc5:   STD_LOGIC_VECTOR(4 downto 0);
	shared variable crc16:  STD_LOGIC_VECTOR(15 downto 0);
	
	----------------------------------------
	-- part #1: levels
	procedure levelJ(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		wait until rising_edge(clk);
		xd<= '1';
		x0<= '0';
	end procedure;
	
	--------------------
	procedure levelK(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		wait until rising_edge(clk);
		xd<= '0';
		x0<= '0';
	end procedure;
	
	--------------------
	procedure levelSE0(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		wait until rising_edge(clk);
		xd<= '-';
		x0<= '1';
	end procedure;
	
	--------------------
	procedure levelD01(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		d: in STD_LOGIC) is
	begin
		wait until rising_edge(clk);
		xd<= d;
		x0<= '0';
	end procedure;
	
	----------------------------------------
	-- part #2: bits
	procedure bitJ(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		levelJ(clk, xd, x0);
		nrzi_x:= '1';
		nrzi_n:= 0;
	end procedure;
	
	--------------------
	procedure bitK(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		levelK(clk, xd, x0);
		nrzi_x:= '0';
		nrzi_n:= 0;
	end procedure;
	
	--------------------
	procedure bitSE0(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		levelSE0(clk, xd, x0);
		nrzi_x:= 'X';
		nrzi_n:= 0;
	end procedure;
	
	--------------------
	procedure bit01(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		d: in STD_LOGIC) is
	begin
		if d= '0' then
			levelD01(clk, xd, x0, not(nrzi_x));  -- zero: toggle
			nrzi_x:= not(nrzi_x);
			nrzi_n:= 0;
		elsif d= '1' then
			levelD01(clk, xd, x0, nrzi_x); -- one: keep value
			nrzi_n:= nrzi_n + 1;
			
			if nrzi_n= 6 then
				levelD01(clk, xd, x0, not(nrzi_x)); -- bitstuff: toggle
				nrzi_x:= not(nrzi_x);
				nrzi_n:= 0;
			end if;
		else
			levelD01(clk, xd, x0, 'X'); -- undefined
			nrzi_x:= 'X';
			nrzi_n:= 0;
		end if;
	end procedure;
	
	----------------------------------------
	-- part #3: fields
	procedure fieldComputeCRC5(d: in STD_LOGIC) is
		variable q: STD_LOGIC;
	begin
		--	For CRC generation and checking, the shift registers in the 
		--	generator and checker are seeded with an all-ones pattern. 
		--	For each data bit sent or received, the high order bit of 
		--	the current remainder is XORed with the data bit and then 
		--	the remainder is shifted left one bit and the low-order bit 
		--	set to zero. If the result of that XOR is one, then the 
		--	remainder is XORed with the generator polynomial.
		q:= crc5(crc5'left) xor d;
		crc5:= crc5(crc5'left-1 downto 0) & '0';
		if q= '1' then
			crc5:= crc5 xor fieldCRC5polynomial;
		end if;
	end procedure;
	
	--------------------
	procedure fieldComputeCRC16(d: in STD_LOGIC) is
		variable q: STD_LOGIC;
	begin
		q:= crc16(crc16'left) xor d;
		crc16:= crc16(crc16'left-1 downto 0) & '0';
		if q= '1' then
			crc16:= crc16 xor fieldCRC16polynomial;
		end if;
	end procedure;
	
	--------------------
	procedure fieldSYNC(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		bitK(clk, xd, x0);
		bitJ(clk, xd, x0);
		bitK(clk, xd, x0);
		bitJ(clk, xd, x0);
		bitK(clk, xd, x0);
		bitJ(clk, xd, x0);
		bitK(clk, xd, x0);
		bitK(clk, xd, x0);
	end procedure;
	
	--------------------
	procedure fieldEOP(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		bitSE0(clk, xd, x0);
		bitSE0(clk, xd, x0);
		bitJ  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure fieldIDLE(	
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		bitJ  (clk, xd, x0);
	end procedure;
	
	--------------------
	procedure fieldSE0(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC) is
	begin
		bitSE0(clk, xd, x0);
	end procedure;
	
	--------------------
	procedure fieldADDR(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		addr:        in    STD_LOGIC_VECTOR(6 downto 0)) is
	begin
		bit01(clk, xd, x0, addr(0)); fieldComputeCRC5(addr(0));
		bit01(clk, xd, x0, addr(1)); fieldComputeCRC5(addr(1));
		bit01(clk, xd, x0, addr(2)); fieldComputeCRC5(addr(2));
		bit01(clk, xd, x0, addr(3)); fieldComputeCRC5(addr(3));
		bit01(clk, xd, x0, addr(4)); fieldComputeCRC5(addr(4));
		bit01(clk, xd, x0, addr(5)); fieldComputeCRC5(addr(5));
		bit01(clk, xd, x0, addr(6)); fieldComputeCRC5(addr(6));
	end procedure;
	
	--------------------
	procedure fieldEP(
		signal clk:  in    STD_LOGIC;
		signal xd:   out   STD_LOGIC;
		signal x0:   out   STD_LOGIC;
		ep:          in    STD_LOGIC_VECTOR(3 downto 0)) is
	begin
		bit01(clk, xd, x0, ep(0)); fieldComputeCRC5(ep(0));
		bit01(clk, xd, x0, ep(1)); fieldComputeCRC5(ep(1));
		bit01(clk, xd, x0, ep(2)); fieldComputeCRC5(ep(2));
		bit01(clk, xd, x0, ep(3)); fieldComputeCRC5(ep(3));
	end procedure;
	
	--------------------
	procedure fieldFRAME(
		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
		bit01(clk, xd, x0, frame(0));  fieldComputeCRC5(frame(0));
		bit01(clk, xd, x0, frame(1));  fieldComputeCRC5(frame(1));
		bit01(clk, xd, x0, frame(2));  fieldComputeCRC5(frame(2));
		bit01(clk, xd, x0, frame(3));  fieldComputeCRC5(frame(3));
		bit01(clk, xd, x0, frame(4));  fieldComputeCRC5(frame(4));
		bit01(clk, xd, x0, frame(5));  fieldComputeCRC5(frame(5));
		bit01(clk, xd, x0, frame(6));  fieldComputeCRC5(frame(6));
		bit01(clk, xd, x0, frame(7));  fieldComputeCRC5(frame(7));
		bit01(clk, xd, x0, frame(8));  fieldComputeCRC5(frame(8));
		bit01(clk, xd, x0, frame(9));  fieldComputeCRC5(frame(9));
		bit01(clk, xd, x0, frame(10)); fieldComputeCRC5(frame(10));
	end procedure;
	
	--------------------
	procedure fieldPID(
		signal clk:  in    STD_LOGIC;
		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));
		bit01(clk, xd, x0, data(1));
		bit01(clk, xd, x0, data(2));
		bit01(clk, xd, x0, data(3));
		bit01(clk, xd, x0, data(4));
		bit01(clk, xd, x0, data(5));
		bit01(clk, xd, x0, data(6));
		bit01(clk, xd, x0, data(7));
		crc5:=  (others=> '1');
		crc16:= (others=> '1');
	end procedure;
	
	--------------------
	procedure fieldBYTE(
		signal clk:  in    STD_LOGIC;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av不卡在线观看| 亚洲欧美韩国综合色| 天天爽夜夜爽夜夜爽精品视频| 色哟哟日韩精品| 亚洲男同性恋视频| 在线观看国产精品网站| 亚洲va韩国va欧美va| 欧美一级片免费看| 国产乱理伦片在线观看夜一区| 国产精品三级视频| 在线亚洲一区观看| 日本中文字幕一区二区视频| 26uuu国产日韩综合| 成人精品视频.| 一区二区三区日韩精品视频| 欧美日韩二区三区| 久久精品噜噜噜成人av农村| 国产亚洲午夜高清国产拍精品| 波多野结衣视频一区| 一区二区三区中文免费| 日韩午夜电影av| 成人黄色777网| 亚洲成人黄色影院| 欧美激情中文字幕| 欧美日韩午夜在线视频| 国产美女一区二区三区| 亚洲精品日韩专区silk| 亚洲另类中文字| 日韩美女视频一区二区在线观看| 粉嫩aⅴ一区二区三区四区五区| 一区二区三区电影在线播| 欧美精品一区二| 在线亚洲免费视频| 国产美女视频一区| 亚洲成人资源在线| 国产欧美精品一区aⅴ影院| 欧美三级乱人伦电影| 成人污污视频在线观看| 日本aⅴ亚洲精品中文乱码| 亚洲欧洲av在线| 欧美va亚洲va香蕉在线| 欧美日韩一区二区三区四区五区| 国产精品综合一区二区三区| 午夜视频一区在线观看| 国产精品传媒视频| 久久久99久久| 日韩女同互慰一区二区| 欧美性大战久久久| 91在线国产观看| 国产福利电影一区二区三区| 丝袜亚洲另类丝袜在线| 中文字幕一区二区5566日韩| 精品国产一区二区三区av性色| 99re视频精品| 国产成人精品影院| 久久不见久久见免费视频1| 亚洲午夜视频在线观看| 成人免费在线视频观看| 久久久777精品电影网影网| 欧美一区二区视频网站| 亚洲欧洲中文日韩久久av乱码| 欧美不卡激情三级在线观看| 欧美乱妇15p| 色哦色哦哦色天天综合| 91亚洲国产成人精品一区二区三| 国产一区在线不卡| 久久se精品一区精品二区| 日韩成人伦理电影在线观看| 亚洲福利一区二区三区| 一区二区三区视频在线观看| 亚洲日本乱码在线观看| 国产精品久久久久久久久晋中| 久久久久成人黄色影片| 久久综合国产精品| 久久久久青草大香线综合精品| 欧美电影精品一区二区| 精品国产自在久精品国产| 欧美大度的电影原声| 日韩视频一区二区三区在线播放 | 欧美tk—视频vk| 欧美肥妇毛茸茸| 欧美一区在线视频| 精品99一区二区| 精品精品欲导航| 久久精品人人做人人综合| 久久久欧美精品sm网站| 国产精品日日摸夜夜摸av| 国产精品三级电影| 亚洲欧美视频在线观看视频| 一区二区免费在线| 亚洲成av人片在www色猫咪| 首页国产欧美久久| 久久黄色级2电影| 国产风韵犹存在线视精品| 丁香六月综合激情| 99久久久国产精品免费蜜臀| 91福利国产成人精品照片| 欧美日韩国产高清一区二区| 欧美一区二区三区成人| 26uuu精品一区二区三区四区在线| 国产日本欧美一区二区| 亚洲欧美综合另类在线卡通| 亚洲国产精品久久不卡毛片 | 色狠狠综合天天综合综合| 欧洲国产伦久久久久久久| 欧美一级夜夜爽| 国产日韩av一区二区| 亚洲夂夂婷婷色拍ww47| 美女免费视频一区| 97aⅴ精品视频一二三区| 91精品在线一区二区| 国产日本亚洲高清| 天涯成人国产亚洲精品一区av| 狠狠久久亚洲欧美| 色狠狠av一区二区三区| 欧美成va人片在线观看| 亚洲三级理论片| 极品少妇xxxx偷拍精品少妇| 91色.com| 久久久久久夜精品精品免费| 亚洲一区二区欧美| 国产精品性做久久久久久| 欧美日韩五月天| 国产精品人成在线观看免费| 日韩二区三区四区| 97se亚洲国产综合自在线 | 久久久无码精品亚洲日韩按摩| 亚洲区小说区图片区qvod| 精品在线你懂的| 欧美日韩精品一二三区| 国产精品视频第一区| 另类小说视频一区二区| 色婷婷激情综合| 久久久精品欧美丰满| 免费在线观看视频一区| 色婷婷国产精品综合在线观看| 久久色.com| 日本在线观看不卡视频| 在线观看一区二区视频| 国产精品蜜臀av| 国内精品视频666| 在线不卡中文字幕播放| 亚洲精品网站在线观看| 国产成人精品www牛牛影视| 欧美一级国产精品| 亚洲v日本v欧美v久久精品| 99久久婷婷国产综合精品| 国产欧美精品一区二区色综合朱莉| 日韩成人免费电影| 欧美日韩国产综合一区二区| 一区二区三区四区不卡在线| 9人人澡人人爽人人精品| 国产日韩欧美精品在线| 国产乱码精品一区二区三区忘忧草| 4438x亚洲最大成人网| 亚洲午夜一二三区视频| 91九色02白丝porn| 亚洲激情综合网| 91视频你懂的| 亚洲欧美视频在线观看视频| 成人av在线网| 日韩一区中文字幕| 91在线看国产| 一区二区三区美女视频| 在线欧美小视频| 亚洲国产精品久久艾草纯爱| 欧美亚洲禁片免费| 亚洲国产精品久久久久秋霞影院| 欧美最新大片在线看| 一区二区三区在线免费播放| 色婷婷综合视频在线观看| 一区二区三区在线观看动漫| 欧美主播一区二区三区美女| 午夜av区久久| 日韩欧美你懂的| 国产馆精品极品| 国产精品久久久久久久久晋中| 白白色 亚洲乱淫| 亚洲精品国产成人久久av盗摄| 色视频一区二区| 日韩高清在线电影| 欧美大黄免费观看| 国产成人午夜片在线观看高清观看| 国产精品色眯眯| 91黄色在线观看| 日日骚欧美日韩| 精品国产髙清在线看国产毛片| 国产乱码精品一区二区三区忘忧草 | 国产精品美女一区二区| 91在线观看成人| 天天综合日日夜夜精品| 日韩午夜精品视频| 成人国产精品视频| 一区二区三区欧美激情| 欧美一区二区精品在线| 国产精品中文字幕日韩精品| 综合色中文字幕| 91精品国产综合久久婷婷香蕉| 久热成人在线视频| 亚洲私人黄色宅男|