Motion FPGA
Motion FPGA for the MachX02-7000HE Breakout Board
sim_drv8711_spi.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 --! @file
3 --! @brief Simulated drv8711 SPI device
4 -------------------------------------------------------------------------------
5 
6 --! Using IEEE library
7 LIBRARY ieee;
8 
9 --! Using IEEE standard logic components
10 USE ieee.std_logic_1164.ALL;
11 
12 --! Using IEE standard numeric components
13 USE ieee.numeric_std.ALL;
14 
15 --! @brief Simulated drv8711 entity
16 ENTITY sim_drv8711_spi IS
17  PORT (
18  rst_in : IN std_logic; --! Asynchronous reset
19  spi_scs_in : IN std_logic; --! SPI scs line
20  spi_sclk_in : IN std_logic; --! SPI sclk line
21  spi_mosi_in : IN std_logic; --! SPI mosi line
22  spi_miso_out : OUT std_logic; --! SPI miso line
23  dat_miso_in : IN std_logic_vector(15 DOWNTO 0); --! SPI data to send
24  dat_mosi_out : OUT std_logic_vector(15 DOWNTO 0) --! SPI data received
25  );
26 END ENTITY sim_drv8711_spi;
27 
28 --! Architectur sim of entity sim_drv8711_spi
29 ARCHITECTURE sim OF sim_drv8711_spi IS
30 
31  SIGNAL dat_miso : std_logic_vector(15 DOWNTO 0);
32  SIGNAL dat_mosi : std_logic_vector(15 DOWNTO 0);
33 
34 BEGIN
35 
36  --! @brief Process to handle SPI traffic
37  pr_spi : PROCESS (rst_in, spi_scs_in, spi_sclk_in) IS
38  BEGIN
39 
40  IF (rst_in = '1') THEN
41  -- Reset
42  dat_miso <= (OTHERS => '0');
43  dat_mosi <= (OTHERS => '0');
44  ELSIF (rising_edge(spi_scs_in)) THEN
45  -- Populate shift registers
46  dat_miso <= dat_miso_in;
47  dat_mosi <= (OTHERS => '0');
48  ELSIF (rising_edge(spi_sclk_in)) THEN
49  -- Capture incoming data on rising edge
50  dat_mosi <= dat_mosi(14 DOWNTO 0) & spi_mosi_in;
51  ELSIF (falling_edge(spi_sclk_in)) THEN
52  -- Shift outgoing data on falling edge
53  dat_miso <= dat_miso(14 DOWNTO 0) & '0';
54  END IF;
55 
56  END PROCESS pr_spi;
57 
58  spi_miso_out <= dat_miso(15) WHEN spi_scs_in = '1' ELSE
59  '0';
60 
61  dat_mosi_out <= dat_mosi;
62 
63 END ARCHITECTURE sim;
out dat_mosi_outstd_logic_vector( 15 DOWNTO 0)
SPI data received.
in spi_mosi_instd_logic
SPI mosi line.
in spi_scs_instd_logic
SPI scs line.
in dat_miso_instd_logic_vector( 15 DOWNTO 0)
SPI data to send.
_library_ ieeeieee
Using IEEE library.
Definition: sim_drv8711.vhd:7
Simulated drv8711 entity.
in rst_instd_logic
Asynchronous reset.
in spi_sclk_instd_logic
SPI sclk line.
out spi_miso_outstd_logic
SPI miso line.