Download
fundamentals of digital signal processing n.
Skip this Video
Loading SlideShow in 5 Seconds..
Fundamentals of Digital Signal Processing PowerPoint Presentation
Download Presentation
Fundamentals of Digital Signal Processing

Fundamentals of Digital Signal Processing

114 Views Download Presentation
Download Presentation

Fundamentals of Digital Signal Processing

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Fundamentals of Digital Signal Processing יהודה אפק, נתן אינטרטור אוניברסיטת תל אביב

  2. What is DSP? Converting a continuously changing waveform (analog) into a series of discrete levels (digital) and then performing Digital Computations

  3. What is DSP? The analog waveform is sliced into equal segments and the waveform amplitude is measured in the middle of each segment The collection of measurements make up the digital representation of the waveform

  4. A/D Parameters 1. Sampling Frequency – The rate at which we convert the analog data into digital 2. Dynamic range – The ratio between the highest to lowest value (which is not zero)

  5. What is DSP?

  6. Converting Analog into DigitalElectronically The device that does the conversion is called an Analog to Digital Converter (ADC) There is a device that converts digital to analog that is called a Digital to Analog Converter (DAC)

  7. The simplest form of DAC uses a resistance ladder where the different bits close a gate enabling more current to flow through the resistors and create the corresponding analog voltage. Converting Digital to Analog Electronically

  8. The output of the resistance ladder is compared to the analog voltage in a comparator When there is a match, the digital equivalent (switch configuration) is captured Converting Analog into DigitalElectronically

  9. Analog to Digital (Ladder Comparison)

  10. Converting Analog into DigitalComputationally The binary search is a mathematical technique that uses an initial guess, the expected high, and the expected low in a simple computation to refine a new guess The computation continues until the refined guess matches the actual value (or until the maximum number of calculations is reached) Faster way, start with previous value as the initial guess

  11. First Pacemaker: 1957

  12. Pacemaker / Defribliator

  13. Congestive Heart Failure Detector

  14. VHDL: A QUICK PRIMER

  15. Let’s Start Simple • Support different description levels • Structural (specifying interconnections of the gates), • Dataflow (specifying logic equations), and • Behavioral (specifying behavior)

  16. VHDL Description of Combinational Networks

  17. Entity-Architecture Pair port names port mode (direction) entity name punctuation port type reserved words

  18. VHDL Program Structure

  19. 4-bit Adder

  20. 4-bit Adder (cont’d)

  21. 4-bit Adder - Simulation

  22. Modeling Flip-Flops Using VHDL Processes • Whenever one of the signals in the sensitivity list changes, the sequential statements are executed in sequence one time General form of process

  23. D Flip-flop Model Bit values are enclosed in single quotes

  24. JK Flip-Flop Model

  25. JK Flip-Flop Model

  26. Using Nested IFs and ELSEIFs

  27. VHDL Models for a MUX Sel represents the integerequivalent of a 2-bit binary number with bits A and B If a MUX model is used inside a process, the MUX can be modeled using a CASE statement(cannot use a concurrent statement):

  28. library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity SELECTOR is port ( A : in std_logic_vector(15 downto 0); SEL : in std_logic_vector( 3 downto 0); Y : out std_logic); end SELECTOR; architecture RTL1 of SELECTOR is begin p0 : process (A, SEL) begin if (SEL = "0000") then Y <= A(0); elsif (SEL = "0001") then Y <= A(1); elsif (SEL = "0010") then Y <= A(2); elsif (SEL = "0011") then Y <= A(3); elsif (SEL = "0100") then Y <= A(4); elsif (SEL = "0101") then Y <= A(5); elsif (SEL = "0110") then Y <= A(6); elsif (SEL = "0111") then Y <= A(7); elsif (SEL = "1000") then Y <= A(8); elsif (SEL = "1001") then Y <= A(9); elsif (SEL = "1010") then Y <= A(10); elsif (SEL = "1011") then Y <= A(11); elsif (SEL = "1100") then Y <= A(12); elsif (SEL = "1101") then Y <= A(13); elsif (SEL = "1110") then Y <= A(14); else Y <= A(15); end if; end process; end RTL1; MUX Models (1)

  29. architecture RTL3 of SELECTOR is begin with SEL select Y <= A(0) when "0000", A(1) when "0001", A(2) when "0010", A(3) when "0011", A(4) when "0100", A(5) when "0101", A(6) when "0110", A(7) when "0111", A(8) when "1000", A(9) when "1001", A(10) when "1010", A(11) when "1011", A(12) when "1100", A(13) when "1101", A(14) when "1110", A(15) when others; end RTL3; library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity SELECTOR is port ( A : in std_logic_vector(15 downto 0); SEL : in std_logic_vector( 3 downto 0); Y : out std_logic); end SELECTOR; MUX Models (2)

  30. architecture RTL2 of SELECTOR is begin p1 : process (A, SEL) begin case SEL is when "0000" => Y <= A(0); when "0001" => Y <= A(1); when "0010" => Y <= A(2); when "0011" => Y <= A(3); when "0100" => Y <= A(4); when "0101" => Y <= A(5); when "0110" => Y <= A(6); when "0111" => Y <= A(7); when "1000" => Y <= A(8); when "1001" => Y <= A(9); when "1010" => Y <= A(10); when "1011" => Y <= A(11); when "1100" => Y <= A(12); when "1101" => Y <= A(13); when "1110" => Y <= A(14); when others => Y <= A(15); end case; end process; end RTL2; library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity SELECTOR is port ( A : in std_logic_vector(15 downto 0); SEL : in std_logic_vector( 3 downto 0); Y : out std_logic); end SELECTOR; MUX Models (3)

  31. architecture RTL4 of SELECTOR is begin Y <= A(conv_integer(SEL)); end RTL4; library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity SELECTOR is port ( A : in std_logic_vector(15 downto 0); SEL : in std_logic_vector( 3 downto 0); Y : out std_logic); end SELECTOR; MUX Models (4)

  32. Moore FSM • Output depends ONLY on current state • Outputs associated with each state are set at clock transition

  33. Mealy FSM • Output depends on inputs AND current state • Outputs are set during transitions

  34. Coding FSMs in Altera

  35. Process Statement • Process computes outputs of sequential statements on each clock tick with respect to the sensitive signals. Sensitivity list

  36. ’EVENT • ’EVENT is an Altera construct that represents when the signal is transitioning IF statement reads:If Clock is making a positive transition THEN…

  37. VHDL codes for FSM • Mealy FSM – see mealy1.vhd on the web • Moore FSM - see moore.vhd on the web • Now let’s take a look how to edit, compile, simulate and synthesize your design using Altera software …. • …. (proceed with hands on tutorial)

  38. FSMs in VHDL • Finite State Machines Can Be Easily Described With Processes • Synthesis Tools Understand FSM Description If Certain Rules Are Followed • State transitions should be described in a process sensitive to clock and asynchronous reset signals only • Outputs described as concurrent statements outside the process

  39. FSM States (1) architecture behavior of FSM is type state is (list of states); signal FSM_state:state; begin process(clk, reset) begin if reset = ‘1’ then FSM_state <= initial state; else case FSM_state is

  40. FSM States (2) case FSM_state is when state_1 => if transition condition 1 then FSM_state <= state_1; end if; when state_2 => if transition condition 2 then FSM_state <= state_2; end if; end case; end if; end process;

  41. 0 1 0 S0 / 0 1 S1 / 0 S2 / 1 1 0 Moore FSM - Example 1 • Moore FSM that Recognizes Sequence 10 reset

  42. Moore FSM in VHDL type state is (S0, S1, S2); signal Moore_state: state; U_Moore: process(clock, reset) Begin if(reset = ‘1’) then Moore_state <= S0; elsif (clock = ‘1’ and clock’event) then case Moore_state is when S0 => if input = ‘1’ then Moore_state <= S1; end if; when S1 => if input = ‘0’ then Moore_state <= S2; end if; when S2 => if input = ‘0’ then Moore_state <= S0; else Moore_state <= S1; end if; end case; end if; End process; Output <= ‘1’ when Moore_state = S2 else ‘0’;

  43. Mealy FSM - Example 1 • Mealy FSM that Recognizes Sequence 10 0 / 0 1 / 0 1 / 0 S0 S1 reset 0 / 1

  44. Mealy FSM in VHDL type state is (S0, S1); signal Mealy_state: state; U_Mealy: process(clock, reset) Begin if(reset = ‘1’) then Mealy_state <= S0; elsif (clock = ‘1’ and clock’event) then case Mealy_state is when S0 => if input = ‘1’ then Mealy_state <= S1; end if; when S1 => if input = ‘0’ then Mealy_state <= S0; end if; end case; end if; End process; Output <= ‘1’ when (Mealy_state = S1 and input = ‘0’) else ‘0’;

  45. Reset w = 1 ¤ ¤ A z = 0 B z = 0 w = 0 w = 0 w = 1 w = 0 ¤ C z = 1 w = 1 Moore FSM – Example 2: State diagram

  46. Next state Present Output z state w = 0 w = 1 A A B 0 B A C 0 C A C 1 Moore FSM – Example 2: State table

  47. Moore FSM Input: w Transition function Next State: Present State: y Memory (register) Output function Output: z

  48. Moore FSM – Example 2: VHDL code (1) USE ieee.std_logic_1164.all ; ENTITY simple IS PORT ( Clock, Resetn, w : IN STD_LOGIC ; z : OUT STD_LOGIC ) ; END simple ; ARCHITECTURE Behavior OF simple IS TYPE State_type IS (A, B, C) ; SIGNAL y : State_type ; BEGIN PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN y <= A ; ELSIF (Clock'EVENT AND Clock = '1') THEN con’t ...