aboutsummaryrefslogtreecommitdiff
path: root/doc/pulse_width_modulator_datasheet.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/pulse_width_modulator_datasheet.md')
-rw-r--r--doc/pulse_width_modulator_datasheet.md206
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
+===================
+
+![Heartbeat Generator - Schematic Symbol](images/heartbeat_gen.png){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
+
+
+
+![Electrocardiogram](images/ECG-SinusRhythmLabel.png){width=20%}
+
+The important QRS complex and T wave are modelled as digital pulses.
+
+![QRS Complex and T Wave Pulses](images/qrs-complex-t-wave-pulses.pdf){width=80%}
+
+
+Design Description
+==================
+
+A conceptional RTL diagram is shown below.
+
+![Heartbeat Generator - Conceptional RTL](images/heartbeat_gen_conceptional_rtl.pdf){width=60%}
+
+The simulation result shows two full periods based on a clock period of 1 ms
+
+![Two Periods - Simulation Result](images/heartbeat_gen_two_periods_simwave.png){width=80%}
+
+In more detail using cursors to display correct parameters of the QRS complex and T wave.
+
+![QRS-Complex and T-Wave - Simulation Result](images/qrs-complex-t-wave_simwave.png){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.
+
+![Test Environment on DE1 Prototype Board](images/de1_heartbeat_gen_schematic.pdf){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 |
+