From 8ae5ae2b3a4187e677b3380245e181beb27bf427 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 6 Jan 2022 11:55:46 +0100 Subject: [PATCH] Added tech_jesd204b_tx.vhd to model DAC for sim stimuli for ADC in tb. --- libraries/technology/jesd204b/hdllib.cfg | 1 + .../technology/jesd204b/tech_jesd204b_tx.vhd | 204 ++++++++++++++++++ 2 files changed, 205 insertions(+) create mode 100644 libraries/technology/jesd204b/tech_jesd204b_tx.vhd diff --git a/libraries/technology/jesd204b/hdllib.cfg b/libraries/technology/jesd204b/hdllib.cfg index f17f1df54b..c7298b77b1 100644 --- a/libraries/technology/jesd204b/hdllib.cfg +++ b/libraries/technology/jesd204b/hdllib.cfg @@ -15,6 +15,7 @@ synth_files = tech_jesd204b.vhd test_bench_files = + tech_jesd204b_tx.vhd tb_tech_jesd204b.vhd regression_test_vhdl = diff --git a/libraries/technology/jesd204b/tech_jesd204b_tx.vhd b/libraries/technology/jesd204b/tech_jesd204b_tx.vhd new file mode 100644 index 0000000000..1427aafd55 --- /dev/null +++ b/libraries/technology/jesd204b/tech_jesd204b_tx.vhd @@ -0,0 +1,204 @@ +-------------------------------------------------------------------------------- +-- +-- Copyright (C) 2014 +-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> +-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +-- +-- 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 3 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, see <http://www.gnu.org/licenses/>. +-- +-------------------------------------------------------------------------------- + + +-- Author : E. Kooistra +-- Purpose: Technology selection wrapper to instantiate +-- Provide JESD204b TX_ONLY interface for DAC to provide stimuli for ADC in a +-- tb of RX_ONLY +-- Description: +-- Remark: +-- Only used in tb_tech_jesd204b.vhd. +-- Added because tech_jesd204b.vhd only supports RX_ONLY. + +LIBRARY IEEE, technology_lib; +USE IEEE.STD_LOGIC_1164.ALL; +USE technology_lib.technology_pkg.ALL; +USE technology_lib.technology_select_pkg.ALL; +USE work.tech_jesd204b_component_pkg.ALL; + +ENTITY tech_jesd204b_tx IS + GENERIC ( + g_technology : NATURAL := c_tech_select_default + ); + PORT ( + csr_cf : out std_logic_vector(4 downto 0); -- export + csr_cs : out std_logic_vector(1 downto 0); -- export + csr_f : out std_logic_vector(7 downto 0); -- export + csr_hd : out std_logic; -- export + csr_k : out std_logic_vector(4 downto 0); -- export + csr_l : out std_logic_vector(4 downto 0); -- export + csr_lane_powerdown : out std_logic_vector(0 downto 0); -- export + csr_m : out std_logic_vector(7 downto 0); -- export + csr_n : out std_logic_vector(4 downto 0); -- export + csr_np : out std_logic_vector(4 downto 0); -- export + csr_s : out std_logic_vector(4 downto 0); -- export + csr_tx_testmode : out std_logic_vector(3 downto 0); -- export + csr_tx_testpattern_a : out std_logic_vector(31 downto 0); -- export + csr_tx_testpattern_b : out std_logic_vector(31 downto 0); -- export + csr_tx_testpattern_c : out std_logic_vector(31 downto 0); -- export + csr_tx_testpattern_d : out std_logic_vector(31 downto 0); -- export + dev_sync_n : out std_logic; -- export + jesd204_tx_avs_chipselect : in std_logic := 'X'; -- chipselect + jesd204_tx_avs_address : in std_logic_vector(7 downto 0) := (others => 'X'); -- address + jesd204_tx_avs_read : in std_logic := 'X'; -- read + jesd204_tx_avs_readdata : out std_logic_vector(31 downto 0); -- readdata + jesd204_tx_avs_waitrequest : out std_logic; -- waitrequest + jesd204_tx_avs_write : in std_logic := 'X'; -- write + jesd204_tx_avs_writedata : in std_logic_vector(31 downto 0) := (others => 'X'); -- writedata + jesd204_tx_avs_clk : in std_logic := 'X'; -- clk + jesd204_tx_avs_rst_n : in std_logic := 'X'; -- reset_n + jesd204_tx_dlb_data : out std_logic_vector(31 downto 0); -- export + jesd204_tx_dlb_kchar_data : out std_logic_vector(3 downto 0); -- export + jesd204_tx_frame_error : in std_logic := 'X'; -- export + jesd204_tx_frame_ready : out std_logic; -- export + jesd204_tx_int : out std_logic; -- irq + jesd204_tx_link_data : in std_logic_vector(31 downto 0) := (others => 'X'); -- data + jesd204_tx_link_valid : in std_logic := 'X'; -- valid + jesd204_tx_link_ready : out std_logic; -- ready + mdev_sync_n : in std_logic := 'X'; -- export + pll_locked : in std_logic_vector(0 downto 0) := (others => 'X'); -- pll_locked + somf : out std_logic_vector(3 downto 0); -- export + sync_n : in std_logic := 'X'; -- export + sysref : in std_logic := 'X'; -- export + tx_analogreset : in std_logic_vector(0 downto 0) := (others => 'X'); -- tx_analogreset + tx_bonding_clocks : in std_logic_vector(5 downto 0) := (others => 'X'); -- clk + tx_cal_busy : out std_logic_vector(0 downto 0); -- tx_cal_busy + tx_digitalreset : in std_logic_vector(0 downto 0) := (others => 'X'); -- tx_digitalreset + tx_serial_data : out std_logic_vector(0 downto 0); -- tx_serial_data + txlink_clk : in std_logic := 'X'; -- clk + txlink_rst_n_reset_n : in std_logic := 'X'; -- reset_n + txphy_clk : out std_logic_vector(0 downto 0) -- export + ); +END tech_jesd204b_tx; + + +ARCHITECTURE str OF tech_jesd204b_tx IS +BEGIN + + gen_ip_arria10_e1sg : IF g_technology=c_tech_arria10_e1sg GENERATE + u0 : ip_arria10_e1sg_jesd204b_tx + PORT MAP( + csr_cf => csr_cf , + csr_cs => csr_cs , + csr_f => csr_f , + csr_hd => csr_hd , + csr_k => csr_k , + csr_l => csr_l , + csr_lane_powerdown => csr_lane_powerdown , + csr_m => csr_m , + csr_n => csr_n , + csr_np => csr_np , + csr_s => csr_s , + csr_tx_testmode => csr_tx_testmode , + csr_tx_testpattern_a => csr_tx_testpattern_a , + csr_tx_testpattern_b => csr_tx_testpattern_b , + csr_tx_testpattern_c => csr_tx_testpattern_c , + csr_tx_testpattern_d => csr_tx_testpattern_d , + dev_sync_n => dev_sync_n , + jesd204_tx_avs_chipselect => jesd204_tx_avs_chipselect , + jesd204_tx_avs_address => jesd204_tx_avs_address , + jesd204_tx_avs_read => jesd204_tx_avs_read , + jesd204_tx_avs_readdata => jesd204_tx_avs_readdata , + jesd204_tx_avs_waitrequest => jesd204_tx_avs_waitrequest, + jesd204_tx_avs_write => jesd204_tx_avs_write , + jesd204_tx_avs_writedata => jesd204_tx_avs_writedata , + jesd204_tx_avs_clk => jesd204_tx_avs_clk , + jesd204_tx_avs_rst_n => jesd204_tx_avs_rst_n , + jesd204_tx_dlb_data => jesd204_tx_dlb_data , + jesd204_tx_dlb_kchar_data => jesd204_tx_dlb_kchar_data , + jesd204_tx_frame_error => jesd204_tx_frame_error , + jesd204_tx_frame_ready => jesd204_tx_frame_ready , + jesd204_tx_int => jesd204_tx_int , + jesd204_tx_link_data => jesd204_tx_link_data , + jesd204_tx_link_valid => jesd204_tx_link_valid , + jesd204_tx_link_ready => jesd204_tx_link_ready , + mdev_sync_n => mdev_sync_n , + pll_locked => pll_locked , + somf => somf , + sync_n => sync_n , + sysref => sysref , + tx_analogreset => tx_analogreset , + tx_bonding_clocks => tx_bonding_clocks , + tx_cal_busy => tx_cal_busy , + tx_digitalreset => tx_digitalreset , + tx_serial_data => tx_serial_data , + txlink_clk => txlink_clk , + txlink_rst_n_reset_n => txlink_rst_n_reset_n , + txphy_clk => txphy_clk + ); + END GENERATE; + + gen_ip_arria10_e2sg : IF g_technology=c_tech_arria10_e2sg GENERATE + u0 : ip_arria10_e2sg_jesd204b_tx + PORT MAP( + csr_cf => csr_cf , + csr_cs => csr_cs , + csr_f => csr_f , + csr_hd => csr_hd , + csr_k => csr_k , + csr_l => csr_l , + csr_lane_powerdown => csr_lane_powerdown , + csr_m => csr_m , + csr_n => csr_n , + csr_np => csr_np , + csr_s => csr_s , + csr_tx_testmode => csr_tx_testmode , + csr_tx_testpattern_a => csr_tx_testpattern_a , + csr_tx_testpattern_b => csr_tx_testpattern_b , + csr_tx_testpattern_c => csr_tx_testpattern_c , + csr_tx_testpattern_d => csr_tx_testpattern_d , + dev_sync_n => dev_sync_n , + jesd204_tx_avs_chipselect => jesd204_tx_avs_chipselect , + jesd204_tx_avs_address => jesd204_tx_avs_address , + jesd204_tx_avs_read => jesd204_tx_avs_read , + jesd204_tx_avs_readdata => jesd204_tx_avs_readdata , + jesd204_tx_avs_waitrequest => jesd204_tx_avs_waitrequest, + jesd204_tx_avs_write => jesd204_tx_avs_write , + jesd204_tx_avs_writedata => jesd204_tx_avs_writedata , + jesd204_tx_avs_clk => jesd204_tx_avs_clk , + jesd204_tx_avs_rst_n => jesd204_tx_avs_rst_n , + jesd204_tx_dlb_data => jesd204_tx_dlb_data , + jesd204_tx_dlb_kchar_data => jesd204_tx_dlb_kchar_data , + jesd204_tx_frame_error => jesd204_tx_frame_error , + jesd204_tx_frame_ready => jesd204_tx_frame_ready , + jesd204_tx_int => jesd204_tx_int , + jesd204_tx_link_data => jesd204_tx_link_data , + jesd204_tx_link_valid => jesd204_tx_link_valid , + jesd204_tx_link_ready => jesd204_tx_link_ready , + mdev_sync_n => mdev_sync_n , + pll_locked => pll_locked , + somf => somf , + sync_n => sync_n , + sysref => sysref , + tx_analogreset => tx_analogreset , + tx_bonding_clocks => tx_bonding_clocks , + tx_cal_busy => tx_cal_busy , + tx_digitalreset => tx_digitalreset , + tx_serial_data => tx_serial_data , + txlink_clk => txlink_clk , + txlink_rst_n_reset_n => txlink_rst_n_reset_n , + txphy_clk => txphy_clk + ); + END GENERATE; + +END str; -- GitLab