📄 comscope.vhd
字号:
TRIGGER_8_BIT_1: in std_logic_vector(7 downto 0);
TRIGGER_8_BIT_SAMPLE_CLK_1: in std_logic;
TRIGGER_8_BIT_2: in std_logic_vector(7 downto 0);
TRIGGER_8_BIT_SAMPLE_CLK_2: in std_logic;
TRIGGER_8_BIT_3: in std_logic_vector(7 downto 0);
TRIGGER_8_BIT_SAMPLE_CLK_3: in std_logic;
TRIGGER_8_BIT_4: in std_logic_vector(7 downto 0);
TRIGGER_8_BIT_SAMPLE_CLK_4: in std_logic;
-- 16-bit Triggers
TRIGGER_16_BIT_1: in std_logic_vector(15 downto 0);
TRIGGER_16_BIT_SAMPLE_CLK_1: in std_logic;
TRIGGER_16_BIT_2: in std_logic_vector(15 downto 0);
TRIGGER_16_BIT_SAMPLE_CLK_2: in std_logic;
TRIGGER_16_BIT_3: in std_logic_vector(15 downto 0);
TRIGGER_16_BIT_SAMPLE_CLK_3: in std_logic;
TRIGGER_16_BIT_4: in std_logic_vector(15 downto 0);
TRIGGER_16_BIT_SAMPLE_CLK_4: in std_logic;
-- Add triggers as necessary (up to 127 trigger signals total)
-- Output registers
REG250: out std_logic_vector(7 downto 0);
REG251: out std_logic_vector(7 downto 0);
-- Other input signals
TRIGGER_REARM_TOGGLE: in std_logic;
FORCE_TRIGGER_TOGGLE: in std_logic;
REG250_READ: in std_logic;
START_CAPTURE_TOGGLE: in std_logic
);
end entity;
architecture behavioral of COMSCOPE is
--------------------------------------------------------
-- COMPONENTS
--------------------------------------------------------
component CAPTURE_1_BIT_WORDS port (
--GLOBAL CLOCKS
CLK : in std_logic; -- Master clock for this FPGA
ASYNC_RESET: in std_logic; -- Asynchronous reset active high
-- Inputs
DECIMATE_VALUE: in std_logic_vector(4 downto 0);
-- Decimate value. Can be taken straight from the registers.
-- The decimation will 2^DECIMATE_VALUE.
TRIGGER_POSITION: in std_logic_vector(1 downto 0);
-- 00 0 %
-- 01 10 %
-- 10 50 %
-- 11 90 %
WORD_1_BIT_IN: in std_logic;
-- Input signal to be captured
WORD_CLK_IN: in std_logic;
-- WORD_1_BIT_IN will be read whenever WORD_CLK_IN = '1'.
NEXT_WORD_PLEASE: in std_logic;
-- Increments the READ_POINTER so that the next 8-bit
-- word is ready to be read.
TRIGGER: in std_logic;
-- Is one when a trigger was forced or if the trigger
-- conditions were met. One CLK cycle wide pulse.
TRIGGER_REARM: in std_logic;
-- One CLK cycle wide pulse used to rearm the trigger.
START_CAPTURING: in std_logic;
-- One CLK cycle wide pulse that makes sure data is
-- being captured when nothing is going on. Necessary
-- before a capture with a non-zero trigger offset.
-- Outputs
WORD_8_BIT_OUT: out std_logic_vector(7 downto 0);
-- The signal that was stored in the RAM.
WORD_CLK_OUT: out std_logic;
-- WORD_8_BIT_OUT is valid when WORD_CLK_OUT = '1'.
STATE: out std_logic_vector(1 downto 0)
-- 01 CAPTURING
-- 10 CAPTURING_WAITING_FOR_TRIGGER
-- 11 CAPTURING_TRIGGER_DETECTED
-- 00 CAPTURE_CEASED
);
end component;
component CAPTURE_2_BIT_WORDS port (
--GLOBAL CLOCKS
CLK : in std_logic; -- Master clock for this FPGA
ASYNC_RESET: in std_logic; -- Asynchronous reset active high
-- Inputs
DECIMATE_VALUE: in std_logic_vector(4 downto 0);
-- Decimate value. Can be taken straight from the registers.
-- The decimation will 2^DECIMATE_VALUE.
TRIGGER_POSITION: in std_logic_vector(1 downto 0);
-- 00 0 %
-- 01 10 %
-- 10 50 %
-- 11 90 %
WORD_2_BIT_IN: in std_logic_vector(1 downto 0);
-- Input signal to be captured.
WORD_CLK_IN: in std_logic;
-- WORD_2_BIT_IN will be read whenever WORD_CLK_IN = '1'.
NEXT_WORD_PLEASE: in std_logic;
-- Increments the READ_POINTER so that the next 8-bit
-- word is ready to be read.
TRIGGER: in std_logic;
-- Is one when a trigger was forced or if the trigger
-- conditions were met. One CLK cycle wide pulse.
TRIGGER_REARM: in std_logic;
-- One CLK cycle wide pulse used to rearm the trigger.
START_CAPTURING: in std_logic;
-- One CLK cycle wide pulse that makes sure data is
-- being captured when nothing is going on. Necessary
-- before a capture with a non-zero trigger offset.
-- Outputs
WORD_8_BIT_OUT: out std_logic_vector(7 downto 0);
-- The signal that was stored in the RAM.
WORD_CLK_OUT: out std_logic;
-- WORD_8_BIT_OUT is valid when WORD_CLK_OUT = '1'.
STATE: out std_logic_vector(1 downto 0)
-- 01 CAPTURING
-- 10 CAPTURING_WAITING_FOR_TRIGGER
-- 11 CAPTURING_TRIGGER_DETECTED
-- 00 CAPTURE_CEASED
);
end component;
component CAPTURE_4_BIT_WORDS port (
--GLOBAL CLOCKS
CLK : in std_logic; -- Master clock for this FPGA
ASYNC_RESET: in std_logic; -- Asynchronous reset active high
-- Inputs
DECIMATE_VALUE: in std_logic_vector(4 downto 0);
-- Decimate value. Can be taken straight from the registers.
-- The decimation will 2^DECIMATE_VALUE.
TRIGGER_POSITION: in std_logic_vector(1 downto 0);
-- 00 0 %
-- 01 10 %
-- 10 50 %
-- 11 90 %
WORD_4_BIT_IN: in std_logic_vector(3 downto 0);
-- Input signal to be captured
WORD_CLK_IN: in std_logic;
-- WORD_4_BIT_IN will be read whenever WORD_CLK_IN = '1'.
NEXT_WORD_PLEASE: in std_logic;
-- Increments the READ_POINTER so that the next 8-bit
-- word is ready to be read.
TRIGGER: in std_logic;
-- Is one when a trigger was forced or if the trigger
-- conditions were met. One CLK cycle wide pulse.
TRIGGER_REARM: in std_logic;
-- One CLK cycle wide pulse used to rearm the trigger.
START_CAPTURING: in std_logic;
-- One CLK cycle wide pulse that makes sure data is
-- being captured when nothing is going on. Necessary
-- before a capture with a non-zero trigger offset.
-- Outputs
WORD_8_BIT_OUT: out std_logic_vector(7 downto 0);
-- The signal that was stored in the RAM.
WORD_CLK_OUT: out std_logic;
-- WORD_8_BIT_OUT is valid when WORD_CLK_OUT = '1'.
STATE: out std_logic_vector(1 downto 0)
-- 01 CAPTURING
-- 10 CAPTURING_WAITING_FOR_TRIGGER
-- 11 CAPTURING_TRIGGER_DETECTED
-- 00 CAPTURE_CEASED
);
end component;
component CAPTURE_8_BIT_WORDS port (
--GLOBAL CLOCKS
CLK : in std_logic; -- Master clock for this FPGA
ASYNC_RESET: in std_logic; -- Asynchronous reset active high
-- Inputs
DECIMATE_VALUE: in std_logic_vector(4 downto 0);
-- Decimate value. Can be taken straight from the registers.
-- The decimation will 2^DECIMATE_VALUE.
TRIGGER_POSITION: in std_logic_vector(1 downto 0);
-- 00 0 %
-- 01 10 %
-- 10 50 %
-- 11 90 %
WORD_8_BIT_IN: in std_logic_vector(7 downto 0);
-- Input signal to be captured
WORD_CLK_IN: in std_logic;
-- WORD_4_BIT_IN will be read whenever WORD_CLK_IN = '1'.
NEXT_WORD_PLEASE: in std_logic;
-- Increments the READ_POINTER so that the next 8-bit
-- word is ready to be read.
TRIGGER: in std_logic;
-- Is one when a trigger was forced or if the trigger
-- conditions were met. One CLK cycle wide pulse.
TRIGGER_REARM: in std_logic;
-- One CLK cycle wide pulse used to rearm the trigger.
START_CAPTURING: in std_logic;
-- One CLK cycle wide pulse that makes sure data is
-- being captured when nothing is going on. Necessary
-- before a capture with a non-zero trigger offset.
-- Outputs
WORD_8_BIT_OUT: out std_logic_vector(7 downto 0);
-- The signal that was stored in the RAM.
WORD_CLK_OUT: out std_logic;
-- WORD_8_BIT_OUT is valid when WORD_CLK_OUT = '1'.
STATE: out std_logic_vector(1 downto 0)
-- 01 CAPTURING
-- 10 CAPTURING_WAITING_FOR_TRIGGER
-- 11 CAPTURING_TRIGGER_DETECTED
-- 00 CAPTURE_CEASED
);
end component;
component CAPTURE_16_BIT_WORDS port (
--GLOBAL CLOCKS
CLK : in std_logic; -- Master clock for this FPGA
ASYNC_RESET: in std_logic; -- Asynchronous reset active high
-- Inputs
DECIMATE_VALUE: in std_logic_vector(4 downto 0);
-- Decimate value. Can be taken straight from the registers.
-- The decimation will 2^DECIMATE_VALUE.
TRIGGER_POSITION: in std_logic_vector(1 downto 0);
-- 00 0 %
-- 01 10 %
-- 10 50 %
-- 11 90 %
WORD_16_BIT_IN: in std_logic_vector(15 downto 0);
-- Input signal to be captured
WORD_CLK_IN: in std_logic;
-- WORD_4_BIT_IN will be read whenever WORD_CLK_IN = '1'.
NEXT_WORD_PLEASE: in std_logic;
-- Increments the READ_POINTER so that the next 8-bit
-- word is ready to be read.
TRIGGER: in std_logic;
-- Is one when a trigger was forced or if the trigger
-- conditions were met. One CLK cycle wide pulse.
TRIGGER_REARM: in std_logic;
-- One CLK cycle wide pulse used to rearm the trigger.
START_CAPTURING: in std_logic;
-- One CLK cycle wide pulse that makes sure data is
-- being captured when nothing is going on. Necessary
-- before a capture with a non-zero trigger offset.
-- Outputs
WORD_8_BIT_OUT: out std_logic_vector(7 downto 0);
-- The signal that was stored in the RAM.
WORD_CLK_OUT: out std_logic;
-- WORD_8_BIT_OUT is valid when WORD_CLK_OUT = '1'.
STATE: out std_logic_vector(1 downto 0)
-- 01 CAPTURING
-- 10 CAPTURING_WAITING_FOR_TRIGGER
-- 11 CAPTURING_TRIGGER_DETECTED
-- 00 CAPTURE_CEASED
);
end component;
--------------------------------------------------------
-- SIGNALS
--------------------------------------------------------
--// Constants
signal ZERO: std_logic;
signal ONE: std_logic;
signal ZERO8: std_logic_vector(7 downto 0);
signal NEXT_WORD_PLEASE: std_logic;
signal TRIGGER: std_logic;
signal TRIGGER_REARM_TOGGLE_D: std_logic:= '0';
signal TRIGGER_REARM_TOGGLE_D2: std_logic:= '0';
signal TRIGGER_REARM: std_logic;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -