Skip to content

Commit c779e87

Browse files
committed
Merge branch 'develop'
2 parents ecdf012 + b3e6cf6 commit c779e87

23 files changed

+1463
-10
lines changed

Changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
* Added *psi\_common\_pulse\_gene - Pulse generator
1414
* Added max min within an array & ratio computation to determine if integer in Math package
1515

16+
## 2.14.0
17+
*Added Features
18+
* Added *psi\_common\_ramp\_gene - Ramp generator
19+
* Added *psi\_common\_pulse\_gene - Pulse generator
20+
* Added max min within an array & ratio computation to determine if integer in Math package
21+
1622
## 2.13.0
1723
*Added Features
1824
* Added *psi\_common\_trigger\_analog* - Generic Analog trigger

doc/ch10_interfaces/ch10_6_axilite_slave_ipif.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
This entity is equal to [psi_common_axi_slave_ipif](./ch10_5_axi_slave_ipif.md) but it does only implement the AXILite protocol (e.g. no bursts, no exclusive access, no pending transfers, etc.). See [psi_common_axi_slave_ipif](./ch10_5_axi_slave_ipif.md) for details.
1212

1313
***
14-
[Index](../psi_common_index.md) **|** Previous: [Interfaces > axi slave ipif](./ch10_5_axi_slave_ipif.md) **|**
15-
Next: [Miscellaneous > delay](../ch11_misc/ch11_1_delay.md)
14+
[Index](../psi_common_index.md) **|** Previous: [Interfaces > axi slave ipif](../ch10_interfaces/ch10_5_axi_slave_ipif.md) **|**
15+
Next: [Interfaces > SPI Master cfg](../ch10_interfaces/ch10_7_spi_master_cfg.md)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<img align="right" src="../psi_logo.png">
2+
3+
***
4+
# psi_common_spi_master_cfg
5+
6+
- VHDL source: [psi_common_spi_master_cfg.vhd](../../hdl/psi_common_spi_master_cfg.vhd)
7+
- Testbench: [psi_common_spi_master_cfg_tb.vhd](../../testbench/psi_common_spi_master_cfg_tb/psi_common_spi_master_cfg_tb.vhd)
8+
9+
### Description
10+
11+
**This component allows enlarging dynamically the bit width of the transfer via MaxTransWidth_g generic statement and TransWidth input.**
12+
13+
The description here below is the same as *psi_common_spi_master*
14+
15+
This entity implements a simple SPI master. All common SPI settings are
16+
settable to ensure the master can be configured for different
17+
applications.
18+
19+
The clock and data phase is configurable according to the SPI standard
20+
terminology described in the picture below:
21+
22+
<p align="center"><img src="ch10_1_fig23.png"> </p>
23+
<p align="center"> CPOL and CPHA meaning </p>
24+
25+
For CPHA = 1, the sampling happens on the second edge (blue) and data is
26+
applied on the first edge (red). For CPHA = 0 it is the opposite way.
27+
28+
29+
30+
### Generics
31+
32+
Generics | Description
33+
--------------------|---------------------------------------------------
34+
**ClockDivider\_g** | Ratio between *Clk* and the *SpiSck* frequency
35+
**MaxTransWidth\_g**| Maximum SPI Transfer width (bits per transfer)
36+
**CsHighCycles\_g** | Minimal number of *Cs\_n* high cycles between two transfers
37+
**SpiCPOL\_g** | SPI clock polarity (see figure above)
38+
**SpiCPHA\_g** | SPI sampling edge configuration (see figure above)
39+
**SlaveCnt\_g** | Number of slaves to support (number of *Cs\_n* lines)
40+
**LsbFirst\_g** | **False** = MSB first transmission, **True** = LSB first transmission
41+
**MosiIdleState\_g**| Idle state of the MOSI line
42+
43+
### Interfaces
44+
45+
Signal | Direction | Width | Description
46+
-----------------|-----------|-----------------|-----------------
47+
Clk | Input | 1 | Clock
48+
Rst | Input | 1 | Reset (active high)
49+
Start | Input | 1 | A high pulse on this line starts the transfer. Note that starting a transaction is only possible when *Busy* is low.
50+
Slave | Input | log2(SlaveCnt\_ g) | Slave number to access
51+
Busy | Output | 1 | High during a transaction
52+
Done | Output | 1 | Pulse that goes high for exactly one clock cycle after a transaction is done and *RdData* is valid
53+
WrData | Input | *MaxTransWidth\_g* | Data to send to slave. Sampled during *Start = '1'*
54+
TransWidth | Input | log2ceil(MaxTransWidth\_g) | indicate the actual vector length to forward/receive
55+
RdData | Output | *MaxTransWidth\_g* | Data received from slave. Must be sampled during *Done = '1'* or *Busy = '0'*.
56+
SpiSck | Output | 1 | SPI clock
57+
SpiMosi | Output | 1 | SPI master to slave data signal
58+
SpiMiso | Input | 1 | SPI slave to master data signal
59+
SpiCs\_n | Output | *SlaveCnt\_g* | SPI slave select signal (low active)
60+
61+
62+
<p align="center"><img src="ch10_1_fig24.png"> </p>
63+
<p align="center"> Parallel interface signal behavior </p>
64+
65+
***
66+
[Index](../psi_common_index.md) **|** Previous: [Interfaces > axilite slave ipif](./ch10_6_axilite_slave_ipif.md) **|** Next: [Miscellaneous > delay](../ch11_misc/ch11_1_delay.md)

doc/ch11_misc/ch11.vsd

62.5 KB
Binary file not shown.

doc/ch11_misc/ch11_13_pulse_generator_ctrl_static.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ busy_o | output |1 | set to 1 when the block is in process
4040
str_o | output |1 | strobe Output
4141
dat_o | output | length_g | data output
4242

43-
[Index](../psi_common_index.md) **|** Previous: [Misc > ramp generator](../ch11_misc/ch11_12_ramp_gene.md)
43+
[Index](../psi_common_index.md) **|** Previous: [Misc > ramp generator](../ch11_misc/ch11_12_ramp_gene.md) **|** Next: [Misc > parallel to serial](../ch11_misc/ch11_14_par_ser.md)

doc/ch11_misc/ch11_14_fig52.png

11.9 KB
Loading

doc/ch11_misc/ch11_14_fig53.png

14.5 KB
Loading

doc/ch11_misc/ch11_14_par_ser.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<img align="right" src="../psi_logo.png">
2+
3+
***
4+
# psi_common_par_ser
5+
6+
- VHDL source: [psi_common_par_ser.vhd](../../hdl/psi_common_par_ser.vhd)
7+
- Testbench: [psi_common_par_ser_tb.vhd](../../testbench/psi_common_par_ser_tb/psi_common_par_ser_tb.vhd)
8+
9+
### Description
10+
This component implements a serializer from a vector, the user indicates either the MSB either LSB are forwarded first with MSB_g generic. The serializer can run at full/clock speed under one condition is that the input data is sampled at N times lower than the serialized bit where N is the vector input length; if a valid input arrives before this time an error flag is aroused.
11+
Additionally a frame output flag is given at the last serialized bit and a load output is also given at the first output bit. The valid stays high for one clock cycle at each new bit produced.
12+
13+
#### throughput divided by 3 related to clock cycle frequency
14+
<p align="center"><img src="ch11_14_fig52.png"></p>
15+
16+
#### highest throughput datagram
17+
<p align="center"><img src="ch11_14_fig53.png"></p>
18+
19+
### Generics
20+
21+
Generics | Description
22+
----------------|------------------------------
23+
**rst\_pol\_g** |reset polarity ('1' or '0')
24+
**msb\_g** |MSB first output if true
25+
**ratio\_g** |slow the serialized dat output with ratio to clock freq
26+
**length\_g** |Width of the data in bits
27+
28+
29+
### Interfaces
30+
31+
Signal |Direction |Width |Description
32+
--------|-----------|--------|---------------------------------
33+
clk_i |Input |1 |Clock
34+
rst_i |Input |1 |Reset
35+
dat_i |Input |length_g|data vector input to serialize
36+
vld_i |Input |1 |strobe input
37+
vld_o |Input |1 |strobe output
38+
dat_o |Input |1 |data bit output
39+
ld_o |Input |1 |flag load output is high at first output bit
40+
frm_o | output |1 |flag frame output is high at last output bit
41+
err_o | output |1 |error occurs when *vld_i* arrives before the serializing ended
42+
43+
[Index](../psi_common_index.md) **|** Previous: [Misc > Pulse generator ctrl static](../ch11_misc/ch11_13_pulse_generator_ctrl_static.md) **|** Next [Misc > Serial to parallel](../ch11_misc/ch11_15_ser_par.md)

doc/ch11_misc/ch11_15_fig54.png

10.7 KB
Loading

doc/ch11_misc/ch11_15_ser_par.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<img align="right" src="../psi_logo.png">
2+
3+
***
4+
# psi_common_par_ser
5+
6+
- VHDL source: [psi_common_ser_par.vhd](../../hdl/psi_common_ser_par.vhd)
7+
- Testbench: [psi_common_ser_par_tb.vhd](../../testbench/psi_common_ser_par_tb/psi_common_ser_par_tb.vhd)
8+
9+
### Description
10+
This component implements a deserializer, the user indicates either the MSB or LSB are received first with **MSB_g** generic. The deserializer can run at full/clock speed under one condition is that the input data is sampled at N times lower than the serialized bit where N is the vector input length **ld_i** is used to determine the input sampling frequency; However it is not required to process data. If a load input arrives before this the full de-serializing process has ended up an error flag is aroused.
11+
12+
#### throughput divided by 3 related to clock cycle frequency
13+
<p align="center"><img src="ch11_15_fig54.png"></p>
14+
15+
### Generics
16+
17+
Generics | Description
18+
----------------|------------------------------
19+
**rst\_pol\_g** |reset polarity ('1' or '0')
20+
**msb\_g** |MSB first output if true
21+
**length\_g** |Width of the data in bits
22+
23+
24+
### Interfaces
25+
26+
Signal |Direction |Width |Description
27+
--------|-----------|--------|---------------------------------
28+
clk_i |Input |1 |Clock
29+
rst_i |Input |1 |Reset
30+
dat_i |Input |1 |data bit input to de-serialize
31+
vld_i |Input |1 |strobe input
32+
vld_o |Input |1 |strobe output
33+
dat_o |Input |length_g|data bit output
34+
ld_o |Input |1 |flag load output is high at first output bit
35+
err_o | output |1 |error occurs when *ld_i* arrives before the de-serializing ended
36+
37+
[Index](../psi_common_index.md) **|** Previous: [Misc > Parallel to serial](../ch11_misc/ch11_14_par_ser.md)

0 commit comments

Comments
 (0)