⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encdec_8b10b_tb.vhd

📁 8b_10b encoder/decoder
💻 VHD
字号:
----------------------------------------------------------------------------------- Title	: Test Bench for enc_8b10b and dec_8b10b-- Design	: 8b-10b Encoder/Decoder Test Bench-- Project	: 8000 - 8b10b_encdec-- Author	: Ken Boyette-- Company	: Critia Computer, Inc.------------------------------------------------------------------------------------- File			: encdec_8b10b_TB.vhd-- Version		: 1.0-- Generated	: 09.25.2006-- From			: y:\Projects\8000\FPGA\VHDLSource\8b10b\8b10_enc.vhd-- By			: Active-HDL Built-in Test Bench Generator ver. 1.2s------------------------------------------------------------------------------------- Description : Test Bench for combined enc_8b10b_tb & dec_8b10b------	This testbench provides a sequence of data pattern stimuli for the--	enc_8b10b component.  It latches the encoded output and provides this--	as input to the dec_8b10b component.  The test pattern generator--	alternately drives all data patterns and then the 12 defined K patterns.--	--------------------------------------------------------------------------------- This program is licensed under the GPL-------------------------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity endec_8b10b_tb isend endec_8b10b_tb;architecture TB_ARCHITECTURE of endec_8b10b_tb is	component enc_8b10b	port(		RESET : in std_logic;		SBYTECLK : in std_logic;		KI : in std_logic;		AI : in std_logic;		BI : in std_logic;		CI : in std_logic;		DI : in std_logic;		EI : in std_logic;		FI : in std_logic;		GI : in std_logic;		HI : in std_logic;		AO : out std_logic;		BO : out std_logic;		CO : out std_logic;		DO : out std_logic;		EO : out std_logic;		IO : out std_logic;		FO : out std_logic;		GO : out std_logic;		HO : out std_logic;		JO : out std_logic		);	end component;	 	component dec_8b10b	port(		RESET : in std_logic;		RBYTECLK : in std_logic;		AI : in std_logic;		BI : in std_logic;		CI : in std_logic;		DI : in std_logic;		EI : in std_logic;		II : in std_logic;		FI : in std_logic;		GI : in std_logic;		HI : in std_logic;		JI : in std_logic;		AO : out std_logic;		BO : out std_logic;		CO : out std_logic;		DO : out std_logic;		EO : out std_logic;		FO : out std_logic;		GO : out std_logic;		HO : out std_logic;		KO : out std_logic		);	end component;   	-- Special character code values	constant K28d0 : std_logic_vector := "00011100"; -- Balanced	constant K28d1 : std_logic_vector := "00111100"; -- Unbalanced comma	constant K28d2 : std_logic_vector := "01011100"; -- Unbalanced	constant K28d3 : std_logic_vector := "01111100"; -- Unbalanced	constant K28d4 : std_logic_vector := "10011100"; -- Balanced	constant K28d5 : std_logic_vector := "10111100"; -- Unbalanced comma	constant K28d6 : std_logic_vector := "11011100"; -- Unbalanced	constant K28d7 : std_logic_vector := "11111100"; -- Balanced comma	constant K23d7 : std_logic_vector := "11110111"; -- Balanced	constant K27d7 : std_logic_vector := "11111011"; -- Balanced	constant K29d7 : std_logic_vector := "11111101"; -- Balanced	constant K30d7 : std_logic_vector := "11111110"; -- Balanced		-- Stimulus signals - mapped to the input  of enc_8b10b	signal TRESET : std_logic;	signal TBYTECLK : std_logic;	signal TKO : std_logic;	signal TAO : std_logic;	signal TBO : std_logic;	signal TCO : std_logic;	signal TDO : std_logic;	signal TEO : std_logic;	signal TFO : std_logic;	signal TGO : std_logic;	signal THO : std_logic;		-- Observed signals - mapped from output of enc_8b10b	signal TA : std_logic;	signal TB : std_logic;	signal TC : std_logic;	signal TD : std_logic;	signal TE : std_logic;	signal TF : std_logic;	signal TI : std_logic;	signal TG : std_logic;	signal TH : std_logic;	signal TJ : std_logic;		-- Observed signals - mapped from output of dec_8b10b	signal TDA : std_logic;	signal TDB : std_logic;	signal TDC : std_logic;	signal TDD : std_logic;	signal TDE : std_logic;	signal TDF : std_logic;	signal TDG : std_logic;	signal TDH : std_logic;	signal TDK : std_logic;		-- Signals for TestBench control functions	signal tchar : std_logic_vector (7 downto 0) ;		-- All character vector	signal kcounter : std_logic_vector (3 downto 0) ;	-- K character counter	signal dcounter : std_logic_vector (7 downto 0) ;	-- D value counter	signal tcharout, tlcharout : std_logic_vector (9 downto 0) ;	-- Character output vector	signal tclken : std_logic ; -- Enables clock after short delay starting up	signal tcnten : std_logic ; -- Enables count after 1 cycle	signal tks : std_logic ; -- Use to select control function of encoder	signal dk : std_logic ;	-- '0' if D, '1' if K	signal tdec : std_logic_vector (7 downto 0) ;	-- Decoder output monitor	signal tdeck : std_logic ; -- Decoder K output monitorbegin	---------------------------------------------------------------------------	-- Instantiate modules	---------------------------------------------------------------------------	encoder : enc_8b10b 		port map (			RESET => TRESET,			SBYTECLK => TBYTECLK,			KI => TKO,			AI => TAO,			BI => TBO,			CI => TCO,			DI => TDO,			EI => TEO,			FI => TFO,			GI => TGO,			HI => THO,			AO => TA,			BO => TB,			CO => TC,			DO => TD,			EO => TE,			IO => TI,			FO => TF,			GO => TG,			HO => TH,			JO => TJ		);	decoder : dec_8b10b 		port map (			RESET => TRESET,			RBYTECLK => TBYTECLK,			AI => tlcharout(0),	-- Note: Use the latched encoded data			BI => tlcharout(1),			CI => tlcharout(2),			DI => tlcharout(3),			EI => tlcharout(4),			II => tlcharout(5),			FI => tlcharout(6),			GI => tlcharout(7),			HI => tlcharout(8),			JI => tlcharout(9),			AO => TDA,			BO => TDB,			CO => TDC,			DO => TDD,			EO => TDE,			FO => TDF,			GO => TDG,			HO => TDH,			KO => TDK		);		TRESET <= '1', '0' after 200 ns ; -- Start with a valid reset for 100nstclken <= '0', '1' after 10 ns ; -- Start clock with valid state, then 10MHzprocess (TBYTECLK, tclken)begin	If (tclken = '0') then 		TBYTECLK <= '0';	else TBYTECLK <= (not TBYTECLK) after 50 ns ;	-- Generate 10MHz byte clock	end if;end process ;process (TRESET, TBYTECLK)begin	if (TRESET = '1') then	-- Delay count 1 cycle 		tcnten <= '0' ;	elsif (TBYTECLK'event and TBYTECLK = '0') then		tcnten <= '1' ;	end if ;end process ;process (TRESET, TBYTECLK, tks, tcnten, kcounter, dcounter, tchar)begin	if (TRESET = '1') then		tchar <= "00000000" ;		tks <= '1' ; -- Set for K initially		dk <= '0' ;		kcounter <= "0000" ; -- Preset K counter		dcounter <= "00000000" ;	-- Preset D counter	elsif (TBYTECLK'event and TBYTECLK = '1') then		dk <= tks ;		if tks = '1' then	-- Output K characters			kcounter <= kcounter + tcnten ;	-- Increment counter			dcounter <= "00000000" ;			case kcounter is				when "0000" => tchar <= K28d0 ;				when "0001" => tchar <= K28d1 ;				when "0010" => tchar <= K28d2 ;				when "0011" => tchar <= K28d3 ;				when "0100" => tchar <= K28d4 ;				when "0101" => tchar <= K28d5 ;				when "0110" => tchar <= K28d6 ;				when "0111" => tchar <= K28d7 ;				when "1000" => tchar <= K23d7 ;				when "1001" => tchar <= K27d7 ;				when "1010" => tchar <= K29d7 ;				when "1011" => tchar <= K30d7 ;					tks <= '0' ;	-- Switch to D output				when "1100" => tchar <= "00000000" ;				when others => tchar(7 downto 0) <= K28d5 ; 			end case;		else dcounter <= dcounter + tcnten ;	-- Output D values			tchar <= dcounter ;			if dcounter = "11111111" then				tks <= '1' ;	-- Repeat K portion				kcounter <= "0000" ; -- Reset K counter			end if;		end if ;	end if;end process ;-- Latch encoder output each rising edge for simulation and input into decoderprocess (TBYTECLK)begin	if (TBYTECLK'event and TBYTECLK = '1') then		tlcharout(0) <= TA;		tlcharout(1) <= TB;		tlcharout(2) <= TC;		tlcharout(3) <= TD;		tlcharout(4) <= TE;		tlcharout(5) <= TI;		tlcharout(6) <= TF;		tlcharout(7) <= TG;		tlcharout(8) <= TH;		tlcharout(9) <= TJ;	end if;end process ;-- Connect our test values to the encoder inputsTAO <= tchar(0);TBO <= tchar(1);TCO <= tchar(2);TDO <= tchar(3);TEO <= tchar(4);TFO <= tchar(5);TGO <= tchar(6);THO <= tchar(7);TKO <= dk;-- Monitor encoder outputtcharout(0) <= TA;tcharout(1) <= TB;tcharout(2) <= TC;tcharout(3) <= TD;tcharout(4) <= TE;tcharout(5) <= TI;tcharout(6) <= TF;tcharout(7) <= TG;tcharout(8) <= TH;tcharout(9) <= TJ;-- Monitor decoder outputtdec(0) <= TDA;tdec(1) <= TDB;tdec(2) <= TDC;tdec(3) <= TDD;tdec(4) <= TDE;tdec(5) <= TDF;tdec(6) <= TDG;tdec(7) <= TDH;tdeck <= TDK;end TB_ARCHITECTURE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -