diff options
Diffstat (limited to 'doc/pulse_width_modulator_datasheet.md')
| -rw-r--r-- | doc/pulse_width_modulator_datasheet.md | 206 | 
1 files changed, 206 insertions, 0 deletions
| diff --git a/doc/pulse_width_modulator_datasheet.md b/doc/pulse_width_modulator_datasheet.md new file mode 100644 index 0000000..2f1caa4 --- /dev/null +++ b/doc/pulse_width_modulator_datasheet.md @@ -0,0 +1,206 @@ +Introduction +============ + +A heartbeat generator can be used in a digital system to ... + +Features +======== + +Normal rhythm produces four entities – a P wave, a QRS complex, a T wave, and a U wave – that each +have a fairly unique pattern. [[1]](https://en.wikipedia.org/wiki/Electrocardiography) + +For simplicity the existing heartbeat module generates the QRS complex and T wave only.  + +  * Models QRS-Complex and T-Wave +  * Average time values based on 72 bpm +  * Enable input for external prescaler + + +General Description +=================== + +{width=40%} + +| **Name**    | **Type**          | **Direction** | **Polarity** | **Description** | +|-------------|-------------------|:-------------:|:------------:|-----------------| +| clk_i       | std_ulogic        | IN            | HIGH         | clock           | + +: Heartbeat Generator - Description of I/O Signals + + +Functional Description +====================== + +The shape of an [electrogardiogramm](https://en.wikipedia.org/wiki/Electrocardiography) as a voltage graph over time + + + +{width=20%} + +The important QRS complex and T wave are modelled as digital pulses. + +{width=80%} + + +Design Description +================== + +A conceptional RTL diagram is shown below. + +{width=60%} + +The simulation result shows two full periods based on a clock period of 1 ms + +{width=80%} + +In more detail using cursors to display correct parameters of the QRS complex and T wave. + +{width=80%} + + + +Device Utilization and Performance +================================== + +The following table shows the utilisation of both modules heartbeat_gen and cntdnmodm. + +The following results  are extracted from + +  ```pure +  pnr/de1_heartbeat_gen/de1_heartbeat_gen.fit.rpt +  ``` + + +```pure ++--------------------------------------------------------------------------------------+ +; Fitter Summary                                                                       ; ++------------------------------------+-------------------------------------------------+ +``` + +The following results  are extracted from + +  ```pure +de1_heartbeat_gen.sta.rpt +``` + +```pure ++----------------------------------------------------------------------------------------+ +; TimeQuest Timing Analyzer Summary                                                      ; ++--------------------+-------------------------------------------------------------------+ + +-----------------------------------------+ +; Clocks                                 ;  ++------------+------+--------+-----------+ + + ++-----------------------------------------------------------------------------+ +; Multicorner Timing Analysis Summary                                         ; ++------------------+-------+-------+----------+---------+---------------------+ + +``` + +Application Note +================ + +The following test environment on a DE1 prototype board uses a system clock frequency of 50 MHz. +A prescaler is parameterised to generate an output signal with a period of 1 ms. + +{width=70%} + + + +Appendix +======== + +References +---------- + +* [Wiki: Electrocardiography](https://en.wikipedia.org/wiki/Electrocardiography) + +Project Hierarchy +----------------- + +### Module Hierarchy for Verification + +```pure +t_heartbeat_gen(tbench) +  heartbeat_gen(rtl) +``` + +### Prototype Environment + +```pure +de1_heartbeat_gen(structure) +  heartbeat_gen(rtl) +  cntdnmodm(rtl) +``` + +VHDL Sources +------------ + +```vhdl +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; + +ENTITY heartbeat_gen IS +  PORT (clk_i   : IN  std_ulogic; +        rst_ni  : IN  std_ulogic; +        en_pi   : IN  std_ulogic; +        count_o : OUT std_ulogic_vector; +        heartbeat_o : OUT std_ulogic +        ); +END heartbeat_gen; +``` + +```vhdl +LIBRARY IEEE; +USE IEEE.std_logic_1164.ALL; +USE IEEE.numeric_std.ALL; + +ARCHITECTURE rtl OF heartbeat_gen IS + +  CONSTANT n    : natural                := 10; +  CONSTANT zero : unsigned(n-1 DOWNTO 0) := (OTHERS => '0'); + +  CONSTANT heartbeat_period : unsigned(n-1 DOWNTO 0) := to_unsigned(833, n); +  CONSTANT qrs_width        : unsigned(n-1 DOWNTO 0) := to_unsigned(100, n); +  CONSTANT st_width +  CONSTANT t_width +  CONSTANT qt_width + +  SIGNAL next_state, current_state : unsigned(n-1 DOWNTO 0); + +  SIGNAL tc_qrs                    : std_ulogic;  -- qrs interval +  SIGNAL tc_t                      : std_ulogic;  -- T wave + +BEGIN + +  next_state_logic :  +                      + + +  state_register :  +                    + +  -- output_logic +  t_wave : tc_t <=  +                    +                    +                    +  qrs_complex : tc_qrs <=  +                           + +  output_value : heartbeat_o <=  + + +END rtl; +``` + +Revision History +---------------- + +| **Date**  | **Version**  | **Change Summary**  | +|:----------|:-------------|:--------------------| +| May 2020  | 0.1  | Initial Release  | +| April 2021  | 0.2  | Added parameterisation  | + | 
