📄 def_pkg.vhd
字号:
----------------------------------------------------------------------------------------------
--
--
-- Parameter Definitions
--
--
----------------------------------------------------------------------------------------------
--
--
-- ID: $Id$
--
Library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_arith.all;
use work.common.all;
package definition is
constant STR_WB_NULL : std_logic_vector(7 downto 0) := X"00"; -- null operation
--
--
-- Parameters
--
--
constant PAR_PIXEL_WIDTH : integer := 16;
constant PAR_SA_ADDR_WIDTH : integer := 11;
constant PAR_SA_POS_WIDTH : integer := 6;
constant PAR_SA_INIT_WIDTH : integer := 1;
constant PAR_DKBK_WIDTH : integer := 16;
constant PAR_FLAT_WIDTH : integer := 16;
constant PAR_WEIGHT_WIDTH : integer := 17;
constant PAR_THRESHOLD_WIDTH : integer := 16;
constant PAR_SUBAPT_WIDTH : integer := 32; -- width of the SA result data
--
-- Pixel calibration record
--
constant PAR_RECORD_WIDTH : integer := PAR_SA_ADDR_WIDTH + PAR_SA_POS_WIDTH + PAR_SA_INIT_WIDTH
+ PAR_DKBK_WIDTH + PAR_FLAT_WIDTH + PAR_WEIGHT_WIDTH;
-- pixel parameter record
-- (LSB)
-- PAR_DKBK_WIDTH
-- PAR_FLAT_WIDTH
-- PAR_WEIGHT_WIDTH
-- PAR_SA_POS_WIDTH
-- PAR_SA_ADDR_WIDTH
-- (MSB)
constant PAR_DKBK_BIT : integer := 0;
constant PAR_FLAT_BIT : integer := PAR_DKBK_BIT + PAR_DKBK_WIDTH;
constant PAR_WEIGHT_BIT : integer := PAR_FLAT_BIT + PAR_FLAT_WIDTH;
constant PAR_SA_INIT_BIT : integer := PAR_WEIGHT_BIT + PAR_WEIGHT_WIDTH;
constant PAR_SA_POS_BIT : integer := PAR_SA_INIT_BIT + PAR_SA_INIT_WIDTH;
constant PAR_SA_ADDR_BIT : integer := PAR_SA_POS_BIT + PAR_SA_POS_WIDTH;
constant PAR_BANK_BIT : integer := 24; -- FIXME: the lower bit in the UD record of the PAR_HID
--
-- Stream header constants
--
constant STR_DATA_WIDTH : integer := 32; -- width of the stream data
constant STR_HDR_DATA_WIDTH : integer := 32; -- width of the stream header
-- Header type 1: Raw CCD, 2: Semi-calibrated CCD, 3: Full-calibrated CCD, 4: Slopes, 8: Pixel calibration map
constant STR_HDR_TYPE_BIT : integer := 0;
constant STR_HDR_TYPE_WIDTH : integer := 4;
constant STR_HDR_LEN_BIT : integer := 4;
constant STR_HDR_LEN_WIDTH : integer := 8;
constant STR_HDR_DW_BIT : integer := 12;
constant STR_HDR_DW_WIDTH : integer := 8;
constant STR_HDR_MUX_BIT : integer := 20;
constant STR_HDR_MUX_WIDTH : integer := 4;
constant STR_HDR_UD_BIT : integer := 24;
constant STR_HDR_UD_WIDTH : integer := 8;
-- packet header
--constant PKT_HDR_TYPE_BIT : integer := 0; -- the bits should always be STR_TYPE_PACKET
--constant PKT_HDR_TYPE_WIDTH : integer := 4;
constant PKT_HDR_LEN_BIT : integer := 4;
constant PKT_HDR_LEN_WIDTH : integer := 8;
constant PKT_HDR_SID_BIT : integer := 12;
constant PKT_HDR_SID_WIDTH : integer := 4;
constant PKT_HDR_PLEN_BIT : integer := 16;
constant PKT_HDR_PLEN_WIDTH : integer := 12;
constant PKT_HDR_RESET : integer := 30;
constant PKT_HDR_STOP : integer := 31;
-- Stream types
constant STR_TYPE_RAWCCD : integer := 1;
constant STR_TYPE_RAWFE : integer := 2;
constant STR_TYPE_SEMICALPIX : integer := 3;
constant STR_TYPE_CALPIX : integer := 4;
constant STR_TYPE_CALPAR : integer := 8;
constant STR_TYPE_SYNCSTR : integer := 9;
constant STR_TYPE_SUBAPT : integer := 10;
constant STR_TYPE_SLOPE : integer := 11;
constant STR_TYPE_FLUX : integer := 12;
constant STR_TYPE_WB : integer := 13;
constant STR_TYPE_OOB_PACKET : integer := 14;
constant STR_TYPE_PACKET : integer := 15;
--
--
-- Interface Streams
--
--
--
-- CCD Pixels
--
--
-- Frontend Pixels
--
constant STR_FPIX_HDR_LENGTH : integer := 3; -- ID, SN, SRC_ID
constant STR_FPIX_PIXEL_WIDTH : integer := PAR_PIXEL_WIDTH;
constant STR_FPIX_DATA_WIDTH : integer := max(STR_DATA_WIDTH, STR_FPIX_PIXEL_WIDTH); -- single rate pixel stream
--
-- Calibrated Pixels
--
constant STR_CPIX_HDR_LENGTH : integer := 3; -- ID, SN, PAR_ID
constant STR_CPIX_PIXEL_WIDTH : integer := PAR_PIXEL_WIDTH;
constant STR_CPIX_SA_ADDR_WIDTH : integer := PAR_SA_ADDR_WIDTH;
constant STR_CPIX_SA_POS_WIDTH : integer := PAR_SA_POS_WIDTH;
constant STR_CPIX_SA_INIT_WIDTH : integer := PAR_SA_INIT_WIDTH;
constant STR_CPIX_DATA_WIDTH : integer := max(STR_DATA_WIDTH,
STR_CPIX_PIXEL_WIDTH + STR_CPIX_SA_ADDR_WIDTH + STR_CPIX_SA_POS_WIDTH + STR_CPIX_SA_INIT_WIDTH);
-- result data format (record)
-- (LSB)
-- PIXEL
-- SA_POS
-- SA_ADDR
-- (MSB)
constant STR_CPIX_PIX_BIT : integer := 0;
constant STR_CPIX_SA_INIT_BIT : integer := STR_CPIX_PIX_BIT + STR_CPIX_PIXEL_WIDTH;
constant STR_CPIX_SA_POS_BIT : integer := STR_CPIX_SA_INIT_BIT + STR_CPIX_SA_INIT_WIDTH;
constant STR_CPIX_SA_ADDR_BIT : integer := STR_CPIX_SA_POS_BIT + STR_CPIX_SA_POS_WIDTH;
--
-- Calibration parameters
--
constant STR_CPAR_HDR_LENGTH : integer := 1; -- ID
--
-- Subapture/slopes
--
constant STR_SUBAPT_HDR_LENGTH : integer := 3; -- ID, SN, PAR_ID,
-- stream format
-- (First)
-- Subapture info
-- X slope
-- Y slope
-- Flux
-- ...
constant STR_SUBAPT_DATA_WIDTH : integer := max(PAR_SUBAPT_WIDTH, 32);
-- SA info DWORD
-- (LSB)
-- SA address
-- (MSB)
constant STR_SUBAPT_INFO_SA_ADDR_WIDTH : integer := STR_CPIX_SA_ADDR_WIDTH;
constant STR_SUBAPT_INFO_SA_ADDR_BIT : integer := 0;
constant STR_SUBAPT_INFO_SA_DBZ_BIT : integer := 31; -- divided by zero
--
-- Slopes
--
constant STR_SLOPE_HDR_LENGTH : integer := 3; -- ID, SN, PAR_ID,
-- stream format
-- (First)
-- X slope
-- Y slope
-- ...
constant STR_SLOPE_DATA_WIDTH : integer := 32;
--
-- Flux
--
constant STR_FLUX_HDR_LENGTH : integer := 3; -- ID, SN, PAR_ID,
-- stream format
-- (First)
-- Flux
-- ...
constant STR_FLUX_DATA_WIDTH : integer := 32;
--
-- Wishbone sub types
--
constant STR_WB_NULL : std_logic_vector(7 downto 0) := X"00"; -- null operation
constant STR_WB_NOP : std_logic_vector(7 downto 0) := X"71"; -- no operation
constant STR_WB_RST : std_logic_vector(7 downto 0) := X"72"; -- reset the wishbone bus
constant STR_WB_CTRL : std_logic_vector(7 downto 0) := X"73"; -- send the control data to the bridge
constant STR_WB_IRQ : std_logic_vector(7 downto 0) := X"74"; -- irq from the bus
constant STR_WB_READ : std_logic_vector(7 downto 0) := X"45"; -- write the data to WB
constant STR_WB_WRITE : std_logic_vector(7 downto 0) := X"66"; -- read the data from wishbone bus
constant STR_WB_RET : std_logic_vector(7 downto 0) := X"27";
constant STR_WB_ACK : std_logic_vector(7 downto 0) := X"38";
end;
package body definition is
end package body;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -