|
| 1 | +<img align="right" src="psi_logo.png"> |
| 2 | + |
| 3 | +*** |
| 4 | +## Introduction |
| 5 | + |
| 6 | +[read me first](old/ch1_introduction/ch1_introduction.md) |
| 7 | + |
| 8 | +**Quick syntax rules to push into the library:** |
| 9 | + |
| 10 | + - **snake_case** |
| 11 | + - remove **tab to white space** |
| 12 | + - use of suffix for entity's signal following simple rules: **_i, _o and _io** respectively for input, output and inout |
| 13 | + - entity, architecture, package, procedure, function, etc... ends as such: **end entity; end architecture,** etc... |
| 14 | + - use of prefix to gather signal corresponding to same interface like: **adc**_clk_i, **adc**_data_i, **adc**_vld_i... |
| 15 | + - name of architecture: **behav, struc, rtl** |
| 16 | + - when strcutural architecture would be nice to link components with signal's prefixe name such as: fifo2filter_* (e.g. component A to component B: compa2compb_) |
| 17 | + |
| 18 | +## Packages |
| 19 | + |
| 20 | +### psi_common_array_pkg |
| 21 | + |
| 22 | +This package defines various array types that are not defined by VHDL natively. Some of these definitions are no more required in VHDL 2008 but since VHDL 2008 is not yet fully synthesizable, the package is kept. |
| 23 | + |
| 24 | +### psi_common_logic_pkg |
| 25 | + |
| 26 | +This package contains various logic functions (e.g. combinatorial conversions) that can be synthesized. |
| 27 | + |
| 28 | +### psi_common_axi_pkg |
| 29 | + |
| 30 | +This package contains record definitions to allow representing a complete AXI interface including all ports by only two records (one in each direction). This helps improving the readability of entities with AXI interfaces. |
| 31 | + |
| 32 | +### psi_common_math_pkg |
| 33 | + |
| 34 | +This package contains various mathematical functions (e.g. log2). The functions are meant for calculating compile-time constants (i.e. constants, port-widths, etc.). They can potentially be synthesized as combinatorial functions but this is neither guaranteed nor will it lead to optimal results. |
| 35 | + |
| 36 | +## List of components available |
| 37 | + |
| 38 | + |
| 39 | +### Memory components |
| 40 | + |
| 41 | +Component | Source | Description |
| 42 | +----------------------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 43 | +Simple dual port RAM | [psi_common_sdp_ram.vhd](../hdl/psi_common_sdp_ram.vhd) | [link](files/psi_common_sdp_ram.md) |
| 44 | +Simple dual port RAM with byte enable | [psi_common_sp_ram_be.vhd](../hdl/psi_common_sp_ram_be.vhd) | [link](files/psi_common_sp_ram_be.md) |
| 45 | +True Dual port RAM | [psi_common_tdp_ram.vhd](../hdl/psi_common_tdp_ram.vhd) | [link](files/psi_common_tdp_ram.md) |
| 46 | +True dual port RAM with byte enable | [psi_common_tdp_ram_be.vhd](../hdl/psi_common_tdp_ram_be.vhd) | [link](files/psi_common_tdp_ram.md) |
| 47 | + |
| 48 | +*** |
| 49 | + |
| 50 | +### FIFO components |
| 51 | +Component | Source | Description |
| 52 | +------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 53 | +Asynchronous FIFO | [psi_common_async_fifo.vhd](../hdl/psi_common_async_fifo.vhd) | [link](files/psi_common_async_fifo.md) |
| 54 | +Synchronous FIFO | [psi_common_sync_fifo.vhd](../hdl/psi_common_sync_fifo.vhd) | [link](files/psi_common_sync_fifo.md) |
| 55 | + |
| 56 | +*** |
| 57 | + |
| 58 | +### Clock domain crossing (CDC) components |
| 59 | +Component | Source | Description |
| 60 | +------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 61 | +Pulse clock crossing (asynchronous pulse/vld transfer) | [psi_common_pulse_cc.vhd](../hdl/psi_common_pulse_cc.vhd) | [link](files/psi_common_pulse_cc.md) |
| 62 | +Simple clock crossing (asynchronous data value transfer) | [psi_common_simple_cc.vhd](../hdl/psi_common_simple_cc.vhd) | [link](files/psi_common_simple_cc.md) |
| 63 | +Status clock crossing (asynchronous slow changing value transfer) | [psi_common_status_cc.vhd](../hdl/psi_common_status_cc.vhd) | [link](files/psi_common_status_cc.md) |
| 64 | +Synchronous CDC with AXI-S handshaking from **Lower** clock to **Higher** multiple integer clock frequency | [psi_common_sync_cc_n2xn.vhd](../hdl/psi_common_sync_cc_n2xn.vhd) | [link](files/psi_common_sync_cc_n2xn.md) |
| 65 | +Synchronous CDC with AXI-S handshaking from **Higher** clock to **lower** multiple integer clock frequency | [psi_common_sync_cc_xn2n.vhd](../hdl/psi_common_sync_cc_xn2n.vhd) | [link](files/psi_common_sync_cc_xn2n.md) |
| 66 | +Bit CDC | [psi_common_bit_cc.vhd](../../hdl/psi_common_bit_cc.vhd) | [link](files/psi_common_bit_cc.md) |
| 67 | + |
| 68 | +##### Other components that can be used as cdc |
| 69 | +- [psi_common_tdp_ram](files/psi_common_tdp_ram.md) |
| 70 | +- [psi_common_async_fifo](files/psi_common_async_fifo.md) |
| 71 | + |
| 72 | +*** |
| 73 | + |
| 74 | +### Conversions components |
| 75 | +Component | Source | Description |
| 76 | +------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 77 | +Data width conversion from a N-bits to a multiple N-bits | [psi_common_wconv_n2xn.vhd](../hdl/psi_common_wconv_n2xn.vhd) | [link](files/psi_common_wconv_n2xn.md) |
| 78 | +Data width conversion from a multiple N-bits to a N-bits | [psi_common_wconv_x2nn.vhd](../hdl/psi_common_wconv_xn2n.vhd) | [link](files/psi_common_wconv_xn2n.md) |
| 79 | + |
| 80 | +*** |
| 81 | + |
| 82 | +### Time Division Multiplexing (TDM) data Handling components |
| 83 | +Component | Source | Description |
| 84 | +------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 85 | +TDM data to parallel | [psi_common_tdm_par.vhd](../hdl/psi_common_tdm_par.vhd) | [link](files/psi_common_tdm_par.md) |
| 86 | +Parallel to TDM data | [psi_common_par_tdm.vhd](../hdl/psi_common_par_tdm.vhd) | [link](files/psi_common_par_tdm.md) |
| 87 | +TDM data to Parallel with configurable valid output channel number | [psi_common_tdm_par_cfg.vhd](../hdl/psi_common_tdm_par_cfg.vhd) | [link](files/psi_common_tdm_par_cfg.md) |
| 88 | +TDM data multiplexer | [psi_common_tdm_mux.vhd](../hdl/psi_common_tdm_mux.vhd) | [link](files/psi_common_tdm_mux.md) |
| 89 | +Parallel to TDM with configurable valid output output channel | [psi_common_par_tdm_cfg.vhd](../hdl/psi_common_par_tdm_cfg.vhd) | [link](files/ch8_5_par_tdpsi_common_par_tdm_cfgm_cfg.md) |
| 90 | +TDM data to parallel with last support and completion | [psi_common_tdm_par_fill.vhd](../hdl/psi_common_tdm_par_fill.vhd) | [link](files/psi_common_tdm_par_fill.md) |
| 91 | +*** |
| 92 | + |
| 93 | +### Arbiters components |
| 94 | +Component | Source | Description |
| 95 | +--------------------|-------------------------------------------------------------|:----------------------------------------: |
| 96 | +Priority | [psi_common_arb_priority.vhd](../hdl/psi_common_arb_priority.vhd) | [link](files/psi_common_arb_priority.md) |
| 97 | +Round robin | [psi_common_arb_round_robin.vhd](../hdl/psi_common_arb_round_robin.vhd) | [link](files/psi_common_arb_round_robin.md) |
| 98 | + |
| 99 | +*** |
| 100 | + |
| 101 | +### Interfaces components |
| 102 | +Package | Source | Description |
| 103 | +--------------------------|-----------------------------------------------------------------------------|:----------------------------------------: |
| 104 | +SPI master | [psi_common_spi_master.vhd](../hdl/psi_common_spi_master.vhd) | [link](files/psi_common_spi_master.md) |
| 105 | +SPI master configurable width | [psi_common_spi_master_cfg.vhd](../hdl/psi_common_spi_master_cfg.vhd) | [link](files/psi_common_spi_master_cfg.md) |
| 106 | +I2C master | [psi_common_i2c_master.vhd](../hdl/psi_common_i2c_master.vhd) | [link](files/psi_common_i2c_master.md) |
| 107 | +AXI master Simple | [psi_common_axi_master_simple.vhd](../hdl/psi_common_axi_master_simple.vhd) | [link](files/psi_common_axi_master_simple.md) |
| 108 | +AXI master Full | [psi_common_axi_master_full.vhd](../hdl/psi_common_axi_master_full.vhd) | [link](files/psi_common_axi_master_full.md) |
| 109 | +AXI slave IP (32 bits) | [psi_common_axi_slave_ipif.vhd](../hdl/psi_common_axi_slave_ipif.vhd) | [link](files/psi_common_axi_slave_ipif.md) |
| 110 | +AXI slave IP (64 bits) | [psi_common_axi_slave_ipif64.vhd](../hdl/psi_common_axi_slave_ipif64.vhd) | N.A |
| 111 | +AXI multi pipeline stage | [psi_common_axi_multi_pl_stage.vhd](../hdl/psi_common_axi_multi_pl_stage.vhd) | N.A |
| 112 | +AXI slave Lite IP | [psi_common_axilite_slave_ipif.vhd](../hdl/psi_common_axilite_slave_ipif.vhd)|[link](files/psi_common_axilite_slave_ipif.md) |
| 113 | +*** |
| 114 | + |
| 115 | +### miscellaneous components |
| 116 | +Component | Source | Description |
| 117 | +----------------------------|-------------------------------------------------------------|:-------------------------------------------: |
| 118 | +Delay settable via generics | [psi_common_delay.vhd](../hdl/psi_common_delay.vhd) | [link](files/psi_common_delay.md) |
| 119 | +Pipeline stage | [psi_common_pl_stage.vhd](../hdl/psi_common_pl_stage.vhd) | [link](files/psi_common_pl_stage.md) |
| 120 | +Multi pipeline stage | [psi_common_multi_pl_stage.vhd](../hdl/psi_common_multi_pl_stage.vhd) | [link](files/psi_common_multi_pl_stage.md) |
| 121 | +Sizable Ping pong buffer // & tdm (interface to stream continuously data into DPRAM) | [psi_common_ping_pong.vhd](../hdl/psi_common_ping_pong.vhd) | [link](files/psi_common_ping_pong.md) |
| 122 | +Delay settable via register | [psi_common_delay_cfg.vhd](../hdl/psi_common_delay_cfg.vhd) | [link](files/psi_common_delay_cfg.md) |
| 123 | +Generic Watchdog | [psi_common_watchdog.vhd](../hdl/psi_common_watchdog.vhd) | [link](files/psi_common_watchdog.md) |
| 124 | +Don't optimize (Xilinx) allows evaluating synthesis | [psi_common_dont_opt.vhd](../hdl/psi_common_dont_opt.vhd) | [link](files/psi_common_dont_opt.md) |
| 125 | +Generic Debouncer | [psi_common_debouncer.vhd](../hdl/psi_common_debouncer.vhd) | [link](files/psi_common_debouncer.md) |
| 126 | +Analog Trigger Generator | [psi_common_trigger_analog.vhd](../hdl/psi_trigger_analog.vhd) | [link](files/psi_trigger_analog.md) |
| 127 | +Digital Trigger Generator | [psi_common_trigger_digital.vhd](../hdl/psi_trigger_digital.vhd) | [link](files/psi_trigger_digital.md) |
| 128 | +Dynamic Shifter | [psi_common_dyn_sft.vhd](../hdl/psi_common_dyn_sft.vhd) | [link](files/psi_common_dyn_sft.md) |
| 129 | +Pulse/Ramp generator | [psi_common_ramp_gene.vhd](../hdl/psi_common_ramp_gene.vhd) | [link](files/psi_common_ramp_gene.md) |
| 130 | +Pulse generator ctrl static | [psi_common_pulse_generator_ctrl_static.vhd](../hdl/psi_common_pulse_generator_ctrl_static.vhd) | [link](files/psi_common_pulse_generator_ctrl_static.md) |
| 131 | +Parallel to serial | [psi_common_par_ser.vhd](../hdl/psi_common_par_ser.vhd) | [link](files/psi_common_par_ser.md) |
| 132 | +Serial to parallel | [psi_common_ser_par.vhd](../hdl/psi_common_ser_par.vhd) | [link](files/psi_common_ser_par.md) |
| 133 | +Find Min Max | [psi_common_find_min_max.vhd](../hdl/psi_common_find_min_max.vhd) | [link](files/psi_common_find_min_max.md) |
| 134 | +Min Max Sum | [psi_common_find_min_max.vhd](../hdl/psi_common_min_max_sum.vhd) | [link](files/psi_common_min_max_sum.md) |
| 135 | +PRBS | [psi_common_prbs.vhd](../hdl/psi_common_prbs.vhd) | [link](files/psi_common_prbs.md) |
| 136 | +PWM | [psi_common_pwm.vhd](../hdl/psi_common_pwm.vhd) | [link](files/psi_common_pwm.md) | |
| 137 | +*** |
| 138 | + |
| 139 | +### Packages |
| 140 | + |
| 141 | +Package | Source | |
| 142 | +--------------------|-------------------------------------------------------------| |
| 143 | +Math | [psi_common_math_pkg.vhd](../hdl/psi_common_math_pkg.vhd) | |
| 144 | +array | [psi_common_array_pkg.vhd](../hdl/psi_common_array_pkg.vhd) | |
| 145 | +logic | [psi_common_logic_pkg.vhd](../hdl/psi_common_logic_pkg.vhd) | |
| 146 | +AXI | [psi_common_axi_pkg.vhd](../hdl/psi_common_axi_pkg.vhd) | |
0 commit comments