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

📄 comscope.vhd

📁 pcmcia代码驱动等有用资料
💻 VHD
📖 第 1 页 / 共 5 页
字号:
									SELECTED_CAPTURED_SIGNAL_4 <= CAPTURED_16_BIT_SIGNAL_4;
									SELECTED_STATE_4 <= STATE_16_BIT_SIGNAL_4;
			when "0010100" => SELECTED_SIGNAL_4 <= SIGNAL_16_BIT_4_4;
									SELECTED_SIGNAL_SAMPLE_CLK_4 <= SIGNAL_16_BIT_SAMPLE_CLK_4_4;
									SELECTED_CAPTURED_SIGNAL_4 <= CAPTURED_16_BIT_SIGNAL_4;
									SELECTED_STATE_4 <= STATE_16_BIT_SIGNAL_4;
			-- Add signals as necessary (up to 127 signals)

			when others	 	=> SELECTED_SIGNAL_4 <= (others => '0');
									SELECTED_SIGNAL_SAMPLE_CLK_4 <= '0';
									SELECTED_CAPTURED_SIGNAL_4 <= (others => '0'); 
									SELECTED_STATE_4 <= "00";
		end case;
	end if;
end process;


-- Input multiplexer, trigger signals
INPUT_MUX_TRIGGER_001: process(ASYNC_RESET, CLK, REG248)
begin
	if(ASYNC_RESET = '1') then
		SELECTED_TRIGGER <= (others => '0');
		SELECTED_TRIGGER_SAMPLE_CLK <= '0';
		TRIGGER_THRESHOLD <= (others => '0');
	elsif rising_edge(CLK) then
		-- Select one among the different 8-bit signals to trigger on
		case REG248(5 downto 0) is
			when "000001" => 	SELECTED_TRIGGER(0) <= TRIGGER_1_BIT_1;
									SELECTED_TRIGGER(15 downto 1) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_1_BIT_SAMPLE_CLK_1;
									TRIGGER_THRESHOLD(0) <= REG249(0);
									TRIGGER_THRESHOLD(15 downto 1) <= (others => '0');
									THRESHOLD_SIZE <= ONE_BIT_THRESHOLD;
			when "000010" => 	SELECTED_TRIGGER(0) <= TRIGGER_1_BIT_2;
									SELECTED_TRIGGER(15 downto 1) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_1_BIT_SAMPLE_CLK_2;
									TRIGGER_THRESHOLD(0) <= REG249(0);
									TRIGGER_THRESHOLD(15 downto 1) <= (others => '0');
									THRESHOLD_SIZE <= ONE_BIT_THRESHOLD;
			when "000011" => 	SELECTED_TRIGGER(0) <= TRIGGER_1_BIT_3;
									SELECTED_TRIGGER(15 downto 1) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_1_BIT_SAMPLE_CLK_3;
									TRIGGER_THRESHOLD(0) <= REG249(0);
									TRIGGER_THRESHOLD(15 downto 1) <= (others => '0');
									THRESHOLD_SIZE <= ONE_BIT_THRESHOLD;
			when "000100" => 	SELECTED_TRIGGER(0) <= TRIGGER_1_BIT_4;
									SELECTED_TRIGGER(15 downto 1) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_1_BIT_SAMPLE_CLK_4;
									TRIGGER_THRESHOLD(0) <= REG249(0);
									TRIGGER_THRESHOLD(15 downto 1) <= (others => '0');
									THRESHOLD_SIZE <= ONE_BIT_THRESHOLD;
			when "000101" => 	SELECTED_TRIGGER(1 downto 0) <= TRIGGER_2_BIT_1;
									SELECTED_TRIGGER(15 downto 2) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_2_BIT_SAMPLE_CLK_1;
									TRIGGER_THRESHOLD(1 downto 0) <= REG249(1 downto 0);
									TRIGGER_THRESHOLD(15 downto 2) <= (others => '0');
									THRESHOLD_SIZE <= TWO_BIT_THRESHOLD;
			when "000110" => 	SELECTED_TRIGGER(1 downto 0) <= TRIGGER_2_BIT_2;
									SELECTED_TRIGGER(15 downto 2) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_2_BIT_SAMPLE_CLK_2;
									TRIGGER_THRESHOLD(1 downto 0) <= REG249(1 downto 0);
									TRIGGER_THRESHOLD(15 downto 2) <= (others => '0');
									THRESHOLD_SIZE <= TWO_BIT_THRESHOLD;
			when "000111" => 	SELECTED_TRIGGER(1 downto 0) <= TRIGGER_2_BIT_3;
									SELECTED_TRIGGER(15 downto 2) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_2_BIT_SAMPLE_CLK_3;
									TRIGGER_THRESHOLD(1 downto 0) <= REG249(1 downto 0);
									TRIGGER_THRESHOLD(15 downto 2) <= (others => '0');
									THRESHOLD_SIZE <= TWO_BIT_THRESHOLD;
			when "001000" => 	SELECTED_TRIGGER(1 downto 0) <= TRIGGER_2_BIT_4;
									SELECTED_TRIGGER(15 downto 2) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_2_BIT_SAMPLE_CLK_4;
									TRIGGER_THRESHOLD(1 downto 0) <= REG249(1 downto 0);
									TRIGGER_THRESHOLD(15 downto 2) <= (others => '0');
									THRESHOLD_SIZE <= TWO_BIT_THRESHOLD;
			when "001001" => 	SELECTED_TRIGGER(3 downto 0) <= TRIGGER_4_BIT_1;
									SELECTED_TRIGGER(15 downto 4) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_4_BIT_SAMPLE_CLK_1;
									TRIGGER_THRESHOLD(3 downto 0) <= REG249(3 downto 0);
									TRIGGER_THRESHOLD(15 downto 4) <= (others => '0');
									THRESHOLD_SIZE <= FOUR_BIT_THRESHOLD;
			when "001010" => 	SELECTED_TRIGGER(3 downto 0) <= TRIGGER_4_BIT_2;
									SELECTED_TRIGGER(15 downto 4) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_4_BIT_SAMPLE_CLK_2;
									TRIGGER_THRESHOLD(3 downto 0) <= REG249(3 downto 0);
									TRIGGER_THRESHOLD(15 downto 4) <= (others => '0');
									THRESHOLD_SIZE <= FOUR_BIT_THRESHOLD;
			when "001011" => 	SELECTED_TRIGGER(3 downto 0) <= TRIGGER_4_BIT_3;
									SELECTED_TRIGGER(15 downto 4) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_4_BIT_SAMPLE_CLK_3;
									TRIGGER_THRESHOLD(3 downto 0) <= REG249(3 downto 0);
									TRIGGER_THRESHOLD(15 downto 4) <= (others => '0');
									THRESHOLD_SIZE <= FOUR_BIT_THRESHOLD;
			when "001100" => 	SELECTED_TRIGGER(3 downto 0) <= TRIGGER_4_BIT_4;
									SELECTED_TRIGGER(15 downto 4) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_4_BIT_SAMPLE_CLK_4;
									TRIGGER_THRESHOLD(3 downto 0) <= REG249(3 downto 0);
									TRIGGER_THRESHOLD(15 downto 4) <= (others => '0');
									THRESHOLD_SIZE <= FOUR_BIT_THRESHOLD;
			when "001101" => 	SELECTED_TRIGGER(7 downto 0) <= TRIGGER_8_BIT_1;
									SELECTED_TRIGGER(15 downto 8) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_8_BIT_SAMPLE_CLK_1;
									TRIGGER_THRESHOLD(7 downto 0) <= REG249;
									TRIGGER_THRESHOLD(15 downto 8) <= (others => '0');
									THRESHOLD_SIZE <= EIGHT_BIT_THRESHOLD;
			when "001110" => 	SELECTED_TRIGGER(7 downto 0) <= TRIGGER_8_BIT_2;
									SELECTED_TRIGGER(15 downto 8) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_8_BIT_SAMPLE_CLK_2;
									TRIGGER_THRESHOLD(7 downto 0) <= REG249;
									TRIGGER_THRESHOLD(15 downto 8) <= (others => '0');
									THRESHOLD_SIZE <= EIGHT_BIT_THRESHOLD;
			when "001111" => 	SELECTED_TRIGGER(7 downto 0) <= TRIGGER_8_BIT_3;
									SELECTED_TRIGGER(15 downto 8) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_8_BIT_SAMPLE_CLK_3;
									TRIGGER_THRESHOLD(7 downto 0) <= REG249;
									TRIGGER_THRESHOLD(15 downto 8) <= (others => '0');
									THRESHOLD_SIZE <= EIGHT_BIT_THRESHOLD;
			when "010000" => 	SELECTED_TRIGGER(7 downto 0) <= TRIGGER_8_BIT_4;
									SELECTED_TRIGGER(15 downto 8) <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_8_BIT_SAMPLE_CLK_4;
									TRIGGER_THRESHOLD(7 downto 0) <= REG249;
									TRIGGER_THRESHOLD(15 downto 8) <= (others => '0');
									THRESHOLD_SIZE <= EIGHT_BIT_THRESHOLD;
			when "010001" => 	SELECTED_TRIGGER <= TRIGGER_16_BIT_1;
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_16_BIT_SAMPLE_CLK_1;
									TRIGGER_THRESHOLD(15 downto 8) <= REG249;
									TRIGGER_THRESHOLD(7 downto 0) <= (others => '0');
									THRESHOLD_SIZE <= SIXTEEN_BIT_THRESHOLD;
			when "010010" => 	SELECTED_TRIGGER <= TRIGGER_16_BIT_2;
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_16_BIT_SAMPLE_CLK_2;
									TRIGGER_THRESHOLD(15 downto 8) <= REG249;
									TRIGGER_THRESHOLD(7 downto 0) <= (others => '0');
									THRESHOLD_SIZE <= SIXTEEN_BIT_THRESHOLD;
			when "010011" => 	SELECTED_TRIGGER <= TRIGGER_16_BIT_3;
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_16_BIT_SAMPLE_CLK_3;
									TRIGGER_THRESHOLD(15 downto 8) <= REG249;
									TRIGGER_THRESHOLD(7 downto 0) <= (others => '0');
									THRESHOLD_SIZE <= SIXTEEN_BIT_THRESHOLD;
			when "010100" => 	SELECTED_TRIGGER <= TRIGGER_16_BIT_4;
									SELECTED_TRIGGER_SAMPLE_CLK <= TRIGGER_16_BIT_SAMPLE_CLK_4;
									TRIGGER_THRESHOLD(15 downto 8) <= REG249;
									TRIGGER_THRESHOLD(7 downto 0) <= (others => '0');
									THRESHOLD_SIZE <= SIXTEEN_BIT_THRESHOLD;
			-- Add signals as necessary (up to 127 signals)

			when others => 	SELECTED_TRIGGER <= (others => '0');
									SELECTED_TRIGGER_SAMPLE_CLK <= '0';
									TRIGGER_THRESHOLD <= (others => '0');
		end case;
	end if;
end process;


TRIGGER_SIGNAL_MSb <= '0' when SIGNED_REPRESENTATION_U_SIGNED_N = '0' else
		SELECTED_TRIGGER(0) when (THRESHOLD_SIZE = ONE_BIT_THRESHOLD) else
		SELECTED_TRIGGER(1) when (THRESHOLD_SIZE = TWO_BIT_THRESHOLD) else
		SELECTED_TRIGGER(3) when (THRESHOLD_SIZE = FOUR_BIT_THRESHOLD) else
		SELECTED_TRIGGER(7) when (THRESHOLD_SIZE = EIGHT_BIT_THRESHOLD) else
		SELECTED_TRIGGER(15); -- (THRESHOLD_SIZE = SIXTEEN_BIT_THRESHOLD)


TRIGGER_THRESHOLD_MSb_001: process(ASYNC_RESET, CLK)
begin
	if(ASYNC_RESET = '1') then
		TRIGGER_THRESHOLD_MSb <= '0';
	elsif rising_edge(CLK) then
		if (SIGNED_REPRESENTATION_U_SIGNED_N = '0') then
			TRIGGER_THRESHOLD_MSb <= '0';
		else
			case THRESHOLD_SIZE is
				when ONE_BIT_THRESHOLD 		=> TRIGGER_THRESHOLD_MSb <= TRIGGER_THRESHOLD(0);
				when TWO_BIT_THRESHOLD 		=> TRIGGER_THRESHOLD_MSb <= TRIGGER_THRESHOLD(1);
				when FOUR_BIT_THRESHOLD 	=> TRIGGER_THRESHOLD_MSb <= TRIGGER_THRESHOLD(3);
				when EIGHT_BIT_THRESHOLD 	=> TRIGGER_THRESHOLD_MSb <= TRIGGER_THRESHOLD(7);
				when others		 				=> TRIGGER_THRESHOLD_MSb <= TRIGGER_THRESHOLD(15);
			end case;
		end if;
	end if;
end process;



RESAMPLE_001: process(ASYNC_RESET, CLK, TRIGGER_REARM_TOGGLE, FORCE_TRIGGER_TOGGLE,
								START_CAPTURE_TOGGLE, REG250_READ)
begin
	if(ASYNC_RESET = '1') then
		TRIGGER_REARM_TOGGLE_D <= '0';
		TRIGGER_REARM_TOGGLE_D2 <= '0';
		FORCE_TRIGGER_TOGGLE_D <= '0';
		FORCE_TRIGGER_TOGGLE_D2 <= '0';
		START_CAPTURE_TOGGLE_D <= '0';
		START_CAPTURE_TOGGLE_D2 <= '0';
		REG250_READ_D <= '0';
		REG250_READ_D2 <= '0';
	elsif rising_edge(CLK) then
		TRIGGER_REARM_TOGGLE_D <= TRIGGER_REARM_TOGGLE;
		TRIGGER_REARM_TOGGLE_D2 <= TRIGGER_REARM_TOGGLE_D;
		FORCE_TRIGGER_TOGGLE_D <= FORCE_TRIGGER_TOGGLE;
		FORCE_TRIGGER_TOGGLE_D2 <= FORCE_TRIGGER_TOGGLE_D;
		START_CAPTURE_TOGGLE_D <= START_CAPTURE_TOGGLE;
		START_CAPTURE_TOGGLE_D2 <= START_CAPTURE_TOGGLE_D;
		REG250_READ_D <= REG250_READ;
		REG250_READ_D2 <= REG250_READ_D;
	end if;
end process;


TRIGGER_REARM <= '1' when (TRIGGER_REARM_TOGGLE_D /= TRIGGER_REARM_TOGGLE_D2) else '0';

START_CAPTURE <= '1' when (START_CAPTURE_TOGGLE_D /= START_CAPTURE_TOGGLE_D2) else '0';

NEXT_WORD_PLEASE <= '1' when (REG250_READ_D = '0' and REG250_READ_D2 = '1') else '0';


-- Compare the selected trigger signal with the trigger threshold.
COMPARISON_RESULT_USIGNED <= '1' when (SELECTED_TRIGGER > TRIGGER_THRESHOLD) else '0';

EQUAL <= '1' when (SELECTED_TRIGGER = TRIGGER_THRESHOLD) else '0';

COMPARISON_RESULT_SIGNED <= 
		COMPARISON_RESULT_USIGNED when TRIGGER_SIGNAL_MSb = TRIGGER_THRESHOLD_MSb else
		'1' when (TRIGGER_SIGNAL_MSb = '0') and (TRIGGER_THRESHOLD_MSb = '1') else '0';


COMPARISON_RESULT <= COMPARISON_RESULT_SIGNED when SIGNED_REPRESENTATION_U_SIGNED_N = '1' else
							COMPARISON_RESULT_USIGNED;


-- Trigger conditioning
-- Make it fully independent of trace settings / states, as the 
-- trigger signal is shared among several traces.
-- Threshold is unsigned.
TRIGGER <= '1' when (FORCE_TRIGGER_TOGGLE_D /= FORCE_TRIGGER_TOGGLE_D2) else 
			  '0' when (SELECTED_TRIGGER_SAMPLE_CLK = '0') else 
			  '1' when (REG248(7) = '1' and (COMPARISON_RESULT = '1' or EQUAL = '1') and 
		  							 	 				COMPARISON_RESULT_D = '0' and EQUAL_D = '0') else
			  '1' when (REG248(7) = '0' and (COMPARISON_RESULT = '0' or EQUAL = '1') and 
										   			COMPARISON_RESULT_D = '1' and EQUAL_D = '0') else '0';


CONDITIONAL_RESAMPLING_001: process(ASYNC_RESET, CLK, SELECTED_TRIGGER_SAMPLE_CLK, 
												COMPARISON_RESULT, EQUAL)
begin
	if(ASYNC_RESET = '1') then
		COMPARISON_RESULT_D <= '0';
		EQUAL_D <= '0';
	elsif rising_edge(CLK) then
		if (SELECTED_TRIGGER_SAMPLE_CLK = '1') then
			-- remember last comparison result (to detect rising/falling edge)
			COMPARISON_RESULT_D <= COMPARISON_RESULT;
			EQUAL_D <= EQUAL;
		end if;
	end if;
end process;


-- Address 0    - 511  -> Trace 1
-- Address 512  - 1023 -> Trace 2
-- Address 1024 - 1535 -> Trace 3
-- Address 1536 - 2047 -> Trace 4
REG250 <= SELECTED_CAPTURED_SIGNAL_1 when REG238(2 downto 1) = "00" else  
			 SELECTED_CAPTURED_SIGNAL_2 when REG238(2 downto 1) = "01" else  
			 SELECTED_CAPTURED_SIGNAL_3 when REG238(2 downto 1) = "10" else  
			 SELECTED_CAPTURED_SIGNAL_4;  


-- Bit 0: 	0: No capture in progress
--				1: At least one trace is capturing
-- Bit 1: 	0: Trigger not found
--				1: Trigger found (reset upon resuming capture)
-- Bit 2: 	Start capture toggle
-- Bit 3: 	Trigger re-arm toggle
MONITORING_001: process(ASYNC_RESET, CLK)
begin
	if(ASYNC_RESET = '1') then
		REG251 <= (others => '0');
	elsif rising_edge(CLK) then
		if (SELECTED_STATE_1 = "00") and (SELECTED_STATE_2 = "00") and
			(SELECTED_STATE_3 = "00") and (SELECTED_STATE_4 = "00") then
			REG251(0) <= '0';
		else 
			REG251(0) <= '1';
		end if;
		if (START_CAPTURE = '1') then
			REG251(1) <= '0';
		elsif((SELECTED_STATE_1 =

⌨️ 快捷键说明

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