SURF  1.0
JesdTxReg.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : JesdTxReg.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2015-04-15
5 -- Last update: 2016-02-12
6 -------------------------------------------------------------------------------
7 -- Description: AXI-Lite interface for register access
8 -------------------------------------------------------------------------------
9 -- This file is part of 'SLAC Firmware Standard Library'.
10 -- It is subject to the license terms in the LICENSE.txt file found in the
11 -- top-level directory of this distribution and at:
12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
13 -- No part of 'SLAC Firmware Standard Library', including this file,
14 -- may be copied, modified, propagated, or distributed except according to
15 -- the terms contained in the LICENSE.txt file.
16 -------------------------------------------------------------------------------
17 
18 library ieee;
19 use ieee.std_logic_1164.all;
20 use ieee.std_logic_unsigned.all;
21 use ieee.std_logic_arith.all;
22 
23 use work.StdRtlPkg.all;
24 use work.AxiLitePkg.all;
25 use work.Jesd204bPkg.all;
26 
27 --! @see entity
28  --! @ingroup protocols_jesd204b
29 entity JesdTxReg is
30  generic (
31  -- General Configurations
32  TPD_G : time := 1 ns;
34  -- JESD
35  L_G : positive range 1 to 16 := 2;
36  F_G : positive := 2);
37  port (
38  -- JESD axiClk
39  axiClk_i : in sl;
40  axiRst_i : in sl;
41 
42  -- Axi-Lite Register Interface (locClk domain)
47 
48  -- JESD devClk
49  devClk_i : in sl;
50  devRst_i : in sl;
51 
52  -- JESD registers
53  -- Status
55 
56  -- Control
57  muxOutSelArr_o : out Slv3Array(L_G-1 downto 0);
58  sigTypeArr_o : out Slv2Array(L_G-1 downto 0);
59  sysrefDlyTx_o : out slv(SYSRF_DLY_WIDTH_C-1 downto 0);
60  enableTx_o : out slv(L_G-1 downto 0);
62  scrEnable_o : out sl;
63  invertData_o : out slv(L_G-1 downto 0);
64  rampStep_o : out slv(PER_STEP_WIDTH_C-1 downto 0);
65  squarePeriod_o : out slv(PER_STEP_WIDTH_C-1 downto 0);
66  subClass_o : out sl;
67  gtReset_o : out sl;
68  clearErr_o : out sl;
70  enableTestSig_o : out sl;
71 
72  posAmplitude_o : out slv(F_G*8-1 downto 0);
73  negAmplitude_o : out slv(F_G*8-1 downto 0);
74 
75  -- TX Configurable Driver Ports
76  txDiffCtrl : out Slv8Array(L_G-1 downto 0);
77  txPostCursor : out Slv8Array(L_G-1 downto 0);
78  txPreCursor : out Slv8Array(L_G-1 downto 0);
79  txPolarity : out slv(L_G-1 downto 0);
80  loopback : out slv(L_G-1 downto 0));
81 end JesdTxReg;
82 
83 architecture rtl of JesdTxReg is
84 
85  type RegType is record
86  -- JESD Control (RW)
87  enableTx : slv(L_G-1 downto 0);
88  invertData : slv(L_G-1 downto 0);
89  commonCtrl : slv(6 downto 0);
90  sysrefDlyTx : slv(SYSRF_DLY_WIDTH_C-1 downto 0);
91  signalSelectArr : Slv8Array(L_G-1 downto 0);
92  periodStep : slv(31 downto 0);
93  posAmplitude : slv(F_G*8-1 downto 0);
94  negAmplitude : slv(F_G*8-1 downto 0);
95  txDiffCtrl : Slv8Array(L_G-1 downto 0);
96  txPostCursor : Slv8Array(L_G-1 downto 0);
97  txPreCursor : Slv8Array(L_G-1 downto 0);
98  txPolarity : slv(L_G-1 downto 0);
99  loopback : slv(L_G-1 downto 0);
100  -- AXI lite
103  end record;
104 
105  constant REG_INIT_C : RegType := (
106  enableTx => (others => '0'),
107  invertData => (others => '0'),
108  commonCtrl => "0110011",
109  sysrefDlyTx => (others => '0'),
110  --signalSelectArr=> (others => b"0010_0011"), -- Set to squarewave
111  --periodStep => intToSlv(1,PER_STEP_WIDTH_C) & intToSlv(4096,PER_STEP_WIDTH_C),
112  signalSelectArr => (others => b"0000_0001"), -- Set to external
113  periodStep => intToSlv(1, PER_STEP_WIDTH_C) & intToSlv(1, PER_STEP_WIDTH_C),
114  --signalSelectArr=> (others => b"0001_0011"), -- Set to ramp
115  --periodStep => intToSlv(1,PER_STEP_WIDTH_C) & intToSlv(1,PER_STEP_WIDTH_C),
116 
117  posAmplitude => (others => '1'),
118  negAmplitude => (others => '0'),
119 
120  txDiffCtrl => (others => x"FF"),
121  txPostCursor => (others => x"00"),
122  txPreCursor => (others => x"00"),
123  txPolarity => (others => '0'),
124  loopback => (others => '0'),
125 
128 
129  signal r : RegType := REG_INIT_C;
130  signal rin : RegType;
131 
132  -- Integer address
133  signal s_RdAddr : natural := 0;
134  signal s_WrAddr : natural := 0;
135 
136  -- Synced status signals
137  signal s_statusTxArr : txStatuRegisterArray(L_G-1 downto 0);
138  signal s_statusCnt : SlVectorArray(L_G-1 downto 0, 31 downto 0);
139  signal s_adcValids : slv(L_G-1 downto 0);
140 
141 begin
142 
143  ----------------------------------------------------------------------------------------------
144  -- Data Valid Status Counter
145  ----------------------------------------------------------------------------------------------
146  GEN_LANES : for I in L_G-1 downto 0 generate
147  s_adcValids(I) <= statusTxArr_i(I)(1);
148  end generate GEN_LANES;
149 
150 
151  U_SyncStatusVector : entity work.SyncStatusVector
152  generic map (
153  TPD_G => TPD_G,
154  OUT_POLARITY_G => '1',
155  CNT_RST_EDGE_G => true,
156  CNT_WIDTH_G => 32,
157  WIDTH_G => L_G)
158  port map (
159  -- Input Status bit Signals (wrClk domain)
160  statusIn => s_adcValids,
161  -- Output Status bit Signals (rdClk domain)
162  statusOut => open,
163  -- Status Bit Counters Signals (rdClk domain)
164  cntRstIn => r.commonCtrl(3),
165  cntOut => s_statusCnt,
166  -- Clocks and Reset Ports
167  wrClk => devClk_i,
168  rdClk => axiClk_i);
169 
170  -- Convert address to integer (lower two bits of address are always '0')
171  s_RdAddr <= slvToInt(axilReadMaster.araddr(9 downto 2));
172  s_WrAddr <= slvToInt(axilWriteMaster.awaddr(9 downto 2));
173 
174  comb : process (axilReadMaster, axilWriteMaster, r, axiRst_i, s_statusTxArr, s_RdAddr, s_WrAddr, s_statusCnt) is
175  variable v : RegType;
176  variable axilStatus : AxiLiteStatusType;
177  variable axilWriteResp : slv(1 downto 0);
178  variable axilReadResp : slv(1 downto 0);
179  begin
180  -- Latch the current value
181  v := r;
182 
183  ----------------------------------------------------------------------------------------------
184  -- Axi-Lite interface
185  ----------------------------------------------------------------------------------------------
186  axiSlaveWaitTxn(axilWriteMaster, axilReadMaster, v.axilWriteSlave, v.axilReadSlave, axilStatus);
187 
188  if (axilStatus.writeEnable = '1') then
189  axilWriteResp := ite(axilWriteMaster.awaddr(1 downto 0) = "00", AXI_RESP_OK_C, AXI_ERROR_RESP_G);
190  case (s_WrAddr) is
191  when 16#00# => -- ADDR (0x0)
192  v.enableTx := axilWriteMaster.wdata(L_G-1 downto 0);
193  when 16#01# => -- ADDR (0x4)
194  v.sysrefDlyTx := axilWriteMaster.wdata(SYSRF_DLY_WIDTH_C-1 downto 0);
195  when 16#02# => -- ADDR (0x8)
196  v.txPolarity := axilWriteMaster.wdata(L_G-1 downto 0);
197  when 16#03# => -- ADDR (0xC)
198  v.loopback := axilWriteMaster.wdata(L_G-1 downto 0);
199  when 16#04# => -- ADDR (0x10)
200  v.commonCtrl := axilWriteMaster.wdata(6 downto 0);
201  when 16#05# => -- ADDR (0x14)
202  v.periodStep := axilWriteMaster.wdata;
203  when 16#06# => -- ADDR (0x18)
204  v.negAmplitude := axilWriteMaster.wdata(F_G*8-1 downto 0);
205  when 16#07# => -- ADDR (0x1C)
206  v.posAmplitude := axilWriteMaster.wdata(F_G*8-1 downto 0);
207  when 16#08# => -- ADDR (0x20)
208  v.invertData := axilWriteMaster.wdata(L_G-1 downto 0);
209  when 16#20# to 16#2F# =>
210  for I in (L_G-1) downto 0 loop
211  if (axilWriteMaster.awaddr(5 downto 2) = I) then
212  v.signalSelectArr(I) := axilWriteMaster.wdata(7 downto 0);
213  end if;
214  end loop;
215  when 16#80# to 16#9F# =>
216  for I in (L_G-1) downto 0 loop
217  if (axilWriteMaster.awaddr(6 downto 2) = I) then
218  v.txDiffCtrl(I) := axilWriteMaster.wdata(7 downto 0);
219  v.txPostCursor(I) := axilWriteMaster.wdata(15 downto 8);
220  v.txPreCursor(I) := axilWriteMaster.wdata(23 downto 16);
221  end if;
222  end loop;
223  when others =>
224  axilWriteResp := AXI_ERROR_RESP_G;
225  end case;
226  axiSlaveWriteResponse(v.axilWriteSlave);
227  end if;
228 
229  if (axilStatus.readEnable = '1') then
230  axilReadResp := ite(axilReadMaster.araddr(1 downto 0) = "00", AXI_RESP_OK_C, AXI_ERROR_RESP_G);
231  v.axilReadSlave.rdata := (others => '0');
232  case (s_RdAddr) is
233  when 16#00# => -- ADDR (0x0)
234  v.axilReadSlave.rdata(L_G-1 downto 0) := r.enableTx;
235  when 16#01# => -- ADDR (0x4)
236  v.axilReadSlave.rdata(SYSRF_DLY_WIDTH_C-1 downto 0) := r.sysrefDlyTx;
237  when 16#02# => -- ADDR (0x8)
238  v.axilReadSlave.rdata(L_G-1 downto 0) := r.txPolarity;
239  when 16#03# => -- ADDR (0xC)
240  v.axilReadSlave.rdata(L_G-1 downto 0) := r.loopback;
241  when 16#04# => -- ADDR (0x10)
242  v.axilReadSlave.rdata(6 downto 0) := r.commonCtrl;
243  when 16#05# => -- ADDR (0x14)
244  v.axilReadSlave.rdata := r.periodStep;
245  when 16#06# => -- ADDR (0x18)
246  v.axilReadSlave.rdata(F_G*8-1 downto 0) := r.negAmplitude;
247  when 16#07# => -- ADDR (0x1C)
248  v.axilReadSlave.rdata(F_G*8-1 downto 0) := r.posAmplitude;
249  when 16#08# => -- ADDR (0x20)
250  v.axilReadSlave.rdata(L_G-1 downto 0) := r.invertData;
251  when 16#10# to 16#1F# =>
252  for I in (L_G-1) downto 0 loop
253  if (axilReadMaster.araddr(5 downto 2) = I) then
254  v.axilReadSlave.rdata(TX_STAT_WIDTH_C-1 downto 0) := s_statusTxArr(I);
255  end if;
256  end loop;
257  when 16#20# to 16#2F# =>
258  for I in (L_G-1) downto 0 loop
259  if (axilReadMaster.araddr(5 downto 2) = I) then
260  v.axilReadSlave.rdata(7 downto 0) := r.signalSelectArr(I);
261  end if;
262  end loop;
263 
264  when 16#40# to 16#4F# =>
265  for I in (L_G-1) downto 0 loop
266  if (axilReadMaster.araddr(5 downto 2) = I) then
267  for J in 31 downto 0 loop
268  v.axilReadSlave.rdata(J) := s_statusCnt(I,J);
269  end loop;
270  end if;
271  end loop;
272  when 16#80# to 16#9F# =>
273  for I in (L_G-1) downto 0 loop
274  if (axilReadMaster.araddr(6 downto 2) = I) then
275  v.axilReadSlave.rdata(7 downto 0) := r.txDiffCtrl(I);
276  v.axilReadSlave.rdata(15 downto 8) := r.txPostCursor(I);
277  v.axilReadSlave.rdata(23 downto 16) := r.txPreCursor(I);
278  end if;
279  end loop;
280  when others =>
281  axilReadResp := AXI_ERROR_RESP_G;
282  end case;
283  axiSlaveReadResponse(v.axilReadSlave);
284  end if;
285 
286  -- Reset
287  if (axiRst_i = '1') then
288  v := REG_INIT_C;
289  end if;
290 
291  -- Register the variable for next clock cycle
292  rin <= v;
293 
294  -- Outputs
297  txDiffCtrl <= r.txDiffCtrl;
299  txPreCursor <= r.txPreCursor;
300  txPolarity <= r.txPolarity;
301  loopback <= r.loopback;
302 
303  end process comb;
304 
305  seq : process (axiClk_i) is
306  begin
307  if rising_edge(axiClk_i) then
308  r <= rin after TPD_G;
309  end if;
310  end process seq;
311 
312  -- Input assignment and synchronization
313  GEN_0 : for I in L_G-1 downto 0 generate
314  SyncFifo_IN0 : entity work.SynchronizerFifo
315  generic map (
316  TPD_G => TPD_G,
318  )
319  port map (
320  wr_clk => devClk_i,
321  din => statusTxArr_i(I),
322  rd_clk => axiClk_i,
323  dout => s_statusTxArr(I)
324  );
325  end generate GEN_0;
326 
327 
328  -- Output assignment and synchronization
329  SyncFifo_OUT0 : entity work.SynchronizerFifo
330  generic map (
331  TPD_G => TPD_G,
332  PIPE_STAGES_G => 1,
334  )
335  port map (
336  wr_clk => axiClk_i,
337  din => r.sysrefDlyTx,
338  rd_clk => devClk_i,
340  );
341 
342  SyncFifo_OUT1 : entity work.SynchronizerFifo
343  generic map (
344  TPD_G => TPD_G,
345  PIPE_STAGES_G => 1,
346  DATA_WIDTH_G => L_G
347  )
348  port map (
349  wr_clk => axiClk_i,
350  din => r.enableTx,
351  rd_clk => devClk_i,
352  dout => enableTx_o
353  );
354 
355  Sync_OUT4 : entity work.Synchronizer
356  generic map (
357  TPD_G => TPD_G
358  )
359  port map (
360  clk => devClk_i,
361  rst => devRst_i,
362  dataIn => r.commonCtrl(0),
364  );
365 
366  Sync_OUT5 : entity work.Synchronizer
367  generic map (
368  TPD_G => TPD_G
369  )
370  port map (
371  clk => devClk_i,
372  rst => devRst_i,
373  dataIn => r.commonCtrl(1),
375  );
376 
377  Sync_OUT6 : entity work.Synchronizer
378  generic map (
379  TPD_G => TPD_G
380  )
381  port map (
382  clk => devClk_i,
383  rst => devRst_i,
384  dataIn => r.commonCtrl(2),
385  dataOut => gtReset_o
386  );
387 
388  Sync_OUT7 : entity work.Synchronizer
389  generic map (
390  TPD_G => TPD_G
391  )
392  port map (
393  clk => devClk_i,
394  rst => devRst_i,
395  dataIn => r.commonCtrl(3),
397  );
398 
399  Sync_OUT8 : entity work.Synchronizer
400  generic map (
401  TPD_G => TPD_G
402  )
403  port map (
404  clk => devClk_i,
405  rst => devRst_i,
406  dataIn => r.commonCtrl(4),
408  );
409 
410  Sync_OUT9 : entity work.Synchronizer
411  generic map (
412  TPD_G => TPD_G
413  )
414  port map (
415  clk => devClk_i,
416  rst => devRst_i,
417  dataIn => r.commonCtrl(5),
419  );
420 
421  Sync_OUT10 : entity work.Synchronizer
422  generic map (
423  TPD_G => TPD_G
424  )
425  port map (
426  clk => devClk_i,
427  rst => devRst_i,
428  dataIn => r.commonCtrl(6),
430  );
431 
432  SyncFifo_OUT10 : entity work.SynchronizerFifo
433  generic map (
434  TPD_G => TPD_G,
435  PIPE_STAGES_G => 1,
437  )
438  port map (
439  wr_clk => axiClk_i,
440  din => r.periodStep(PER_STEP_WIDTH_C-1 downto 0),
441  rd_clk => devClk_i,
442  dout => rampStep_o
443  );
444 
445  SyncFifo_OUT11 : entity work.SynchronizerFifo
446  generic map (
447  TPD_G => TPD_G,
448  PIPE_STAGES_G => 1,
450  )
451  port map (
452  wr_clk => axiClk_i,
453  din => r.periodStep(16+PER_STEP_WIDTH_C-1 downto 16),
454  rd_clk => devClk_i,
456  );
457 
458  SyncFifo_OUT12 : entity work.SynchronizerFifo
459  generic map (
460  TPD_G => TPD_G,
461  PIPE_STAGES_G => 1,
462  DATA_WIDTH_G => F_G*8
463  )
464  port map (
465  wr_clk => axiClk_i,
466  din => r.posAmplitude,
467  rd_clk => devClk_i,
469  );
470 
471  SyncFifo_OUT13 : entity work.SynchronizerFifo
472  generic map (
473  TPD_G => TPD_G,
474  PIPE_STAGES_G => 1,
475  DATA_WIDTH_G => F_G*8
476  )
477  port map (
478  wr_clk => axiClk_i,
479  din => r.negAmplitude,
480  rd_clk => devClk_i,
482  );
483  SyncFifo_OUT14 : entity work.SynchronizerFifo
484  generic map (
485  TPD_G => TPD_G,
486  PIPE_STAGES_G => 1,
487  DATA_WIDTH_G => L_G
488  )
489  port map (
490  wr_clk => axiClk_i,
491  din => r.invertData,
492  rd_clk => devClk_i,
493  dout => invertData_o
494  );
495 
496  GEN_1 : for I in L_G-1 downto 0 generate
497  SyncFifo_OUT0 : entity work.SynchronizerFifo
498  generic map (
499  TPD_G => TPD_G,
500  PIPE_STAGES_G => 1,
501  DATA_WIDTH_G => 3
502  )
503  port map (
504  wr_clk => axiClk_i,
505  din => r.signalSelectArr(I)(2 downto 0),
506  rd_clk => devClk_i,
507  dout => muxOutSelArr_o(I)
508  );
509 
510  SyncFifo_OUT1 : entity work.SynchronizerFifo
511  generic map (
512  TPD_G => TPD_G,
513  PIPE_STAGES_G => 1,
514  DATA_WIDTH_G => 2
515  )
516  port map (
517  wr_clk => axiClk_i,
518  din => r.signalSelectArr(I)(5 downto 4),
519  rd_clk => devClk_i,
520  dout => sigTypeArr_o(I)
521  );
522  end generate GEN_1;
523 ---------------------------------------------------------------------
524 end rtl;
in axiClk_isl
Definition: JesdTxReg.vhd:39
out loopbackslv( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:80
in devClk_isl
Definition: JesdTxReg.vhd:49
out negAmplitude_oslv( F_G* 8- 1 downto 0)
Definition: JesdTxReg.vhd:73
array(natural range <> ) of slv( 2 downto 0) Slv3Array
Definition: StdRtlPkg.vhd:408
out scrEnable_osl
Definition: JesdTxReg.vhd:62
out txPreCursorSlv8Array( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:78
AxiLiteWriteMasterType
Definition: AxiLitePkg.vhd:111
std_logic sl
Definition: StdRtlPkg.vhd:28
positive := 16 PER_STEP_WIDTH_C
Definition: Jesd204bPkg.vhd:54
in rstsl :=not RST_POLARITY_G
array(natural range <> ) of slv(( TX_STAT_WIDTH_C)- 1 downto 0) txStatuRegisterArray
Definition: Jesd204bPkg.vhd:94
in dinslv( DATA_WIDTH_G- 1 downto 0)
TPD_Gtime := 1 ns
Definition: JesdTxReg.vhd:32
out axilWriteSlaveAxiLiteWriteSlaveType
Definition: JesdTxReg.vhd:46
positive := 6 TX_STAT_WIDTH_C
Definition: Jesd204bPkg.vhd:46
slv( 31 downto 0) rdata
Definition: AxiLitePkg.vhd:89
array(natural range <> ,natural range <> ) of sl SlVectorArray
Definition: StdRtlPkg.vhd:669
out invertSync_osl
Definition: JesdTxReg.vhd:69
PIPE_STAGES_Gnatural range 0 to 16:= 0
WIDTH_Gpositive := 16
out sigTypeArr_oSlv2Array( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:58
out clearErr_osl
Definition: JesdTxReg.vhd:68
out squarePeriod_oslv( PER_STEP_WIDTH_C- 1 downto 0)
Definition: JesdTxReg.vhd:65
out cntOutSlVectorArray ( WIDTH_G- 1 downto 0, CNT_WIDTH_G- 1 downto 0)
out gtReset_osl
Definition: JesdTxReg.vhd:67
slv( 31 downto 0) wdata
Definition: AxiLitePkg.vhd:117
out dataOutsl
out doutslv( DATA_WIDTH_G- 1 downto 0)
CNT_WIDTH_Gpositive := 32
out enableTestSig_osl
Definition: JesdTxReg.vhd:70
slv( 1 downto 0) := "10" AXI_RESP_SLVERR_C
Definition: AxiLitePkg.vhd:36
out sysrefDlyTx_oslv( SYSRF_DLY_WIDTH_C- 1 downto 0)
Definition: JesdTxReg.vhd:59
in axilWriteMasterAxiLiteWriteMasterType := AXI_LITE_WRITE_MASTER_INIT_C
Definition: JesdTxReg.vhd:45
out subClass_osl
Definition: JesdTxReg.vhd:66
L_Gpositive range 1 to 16:= 2
Definition: JesdTxReg.vhd:35
AxiLiteReadMasterType
Definition: AxiLitePkg.vhd:59
out txPolarityslv( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:79
slv( 31 downto 0) awaddr
Definition: AxiLitePkg.vhd:113
out replEnable_osl
Definition: JesdTxReg.vhd:61
TPD_Gtime := 1 ns
AxiLiteReadSlaveType :=(arready => '0',rdata =>( others => '0'),rresp =>( others => '0'),rvalid => '0') AXI_LITE_READ_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:95
in axilReadMasterAxiLiteReadMasterType := AXI_LITE_READ_MASTER_INIT_C
Definition: JesdTxReg.vhd:43
in statusTxArr_itxStatuRegisterArray( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:54
AXI_ERROR_RESP_Gslv( 1 downto 0) := AXI_RESP_SLVERR_C
Definition: JesdTxReg.vhd:33
in axiRst_isl
Definition: JesdTxReg.vhd:40
out invertData_oslv( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:63
out txDiffCtrlSlv8Array( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:76
CNT_RST_EDGE_Gboolean := true
positive := 5 SYSRF_DLY_WIDTH_C
Definition: Jesd204bPkg.vhd:44
AxiLiteReadMasterType :=(araddr =>( others => '0'),arprot =>( others => '0'),arvalid => '0',rready => '1') AXI_LITE_READ_MASTER_INIT_C
Definition: AxiLitePkg.vhd:69
in devRst_isl
Definition: JesdTxReg.vhd:50
AxiLiteReadSlaveType
Definition: AxiLitePkg.vhd:85
F_Gpositive := 2
Definition: JesdTxReg.vhd:36
_library_ ieeeieee
Definition: JesdTxLane.vhd:39
out txPostCursorSlv8Array( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:77
AxiLiteWriteMasterType :=(awaddr =>( others => '0'),awprot =>( others => '0'),awvalid => '0',wdata =>( others => '0'),wstrb =>( others => '1'),wvalid => '0',bready => '1') AXI_LITE_WRITE_MASTER_INIT_C
Definition: AxiLitePkg.vhd:125
slv( 1 downto 0) := "00" AXI_RESP_OK_C
Definition: AxiLitePkg.vhd:31
slv( 31 downto 0) araddr
Definition: AxiLitePkg.vhd:61
array(natural range <> ) of slv( 7 downto 0) Slv8Array
Definition: StdRtlPkg.vhd:403
out statusOutslv( WIDTH_G- 1 downto 0)
AxiLiteWriteSlaveType :=(awready => '0',wready => '0',bresp =>( others => '0'),bvalid => '0') AXI_LITE_WRITE_SLAVE_INIT_C
Definition: AxiLitePkg.vhd:156
out posAmplitude_oslv( F_G* 8- 1 downto 0)
Definition: JesdTxReg.vhd:72
out muxOutSelArr_oSlv3Array( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:57
out rampStep_oslv( PER_STEP_WIDTH_C- 1 downto 0)
Definition: JesdTxReg.vhd:64
out axilReadSlaveAxiLiteReadSlaveType
Definition: JesdTxReg.vhd:44
DATA_WIDTH_Ginteger range 1 to ( 2** 24):= 16
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
in statusInslv( WIDTH_G- 1 downto 0)
array(natural range <> ) of slv( 1 downto 0) Slv2Array
Definition: StdRtlPkg.vhd:409
out enableTx_oslv( L_G- 1 downto 0)
Definition: JesdTxReg.vhd:60