|
|
-- ADS1274_DRIVER.vhd
|
|
|
library IEEE;
|
|
|
use IEEE.std_logic_1164.all;
|
|
|
use IEEE.numeric_std.all;
|
|
|
library lpp;
|
|
|
use lpp.lpp_ad_conv.all;
|
|
|
use lpp.general_purpose.all;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
entity DUAL_ADS1278_DRIVER is
|
|
|
port(
|
|
|
Clk : in std_logic;
|
|
|
reset : in std_logic;
|
|
|
SpiClk : out std_logic;
|
|
|
DIN : in std_logic_vector(1 downto 0);
|
|
|
SmplClk : in std_logic;
|
|
|
OUT00 : out std_logic_vector(23 downto 0);
|
|
|
OUT01 : out std_logic_vector(23 downto 0);
|
|
|
OUT02 : out std_logic_vector(23 downto 0);
|
|
|
OUT03 : out std_logic_vector(23 downto 0);
|
|
|
OUT04 : out std_logic_vector(23 downto 0);
|
|
|
OUT05 : out std_logic_vector(23 downto 0);
|
|
|
OUT06 : out std_logic_vector(23 downto 0);
|
|
|
OUT07 : out std_logic_vector(23 downto 0);
|
|
|
OUT10 : out std_logic_vector(23 downto 0);
|
|
|
OUT11 : out std_logic_vector(23 downto 0);
|
|
|
OUT12 : out std_logic_vector(23 downto 0);
|
|
|
OUT13 : out std_logic_vector(23 downto 0);
|
|
|
OUT14 : out std_logic_vector(23 downto 0);
|
|
|
OUT15 : out std_logic_vector(23 downto 0);
|
|
|
OUT16 : out std_logic_vector(23 downto 0);
|
|
|
OUT17 : out std_logic_vector(23 downto 0);
|
|
|
FSynch : out std_logic
|
|
|
);
|
|
|
end DUAL_ADS1278_DRIVER;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
architecture ar_DUAL_ADS1278_DRIVER of DUAL_ADS1278_DRIVER is
|
|
|
|
|
|
signal Vec00,Vec01,Vec02,Vec03,Vec04,Vec05,Vec06,Vec07,Vec10,Vec11,Vec12,Vec13,Vec14,Vec15,Vec16,Vec17 : std_logic_vector(23 downto 0);
|
|
|
signal SmplClk_Reg : std_logic:= '0';
|
|
|
signal N : integer range 0 to 23*8 := 0;
|
|
|
signal SPI_CLk : std_logic;
|
|
|
signal SmplClk_clkd : std_logic:= '0';
|
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
|
CLKDIV0 : Clk_Divider2
|
|
|
generic map(16)
|
|
|
port map(Clk,SPI_CLk);
|
|
|
|
|
|
|
|
|
FSynch <= SmplClk_clkd;
|
|
|
SpiClk <= SPI_CLk;
|
|
|
|
|
|
process(reset,SPI_CLk)
|
|
|
begin
|
|
|
|
|
|
if reset = '0' then
|
|
|
Vec00 <= (others => '0');
|
|
|
Vec01 <= (others => '0');
|
|
|
Vec02 <= (others => '0');
|
|
|
Vec03 <= (others => '0');
|
|
|
Vec04 <= (others => '0');
|
|
|
Vec05 <= (others => '0');
|
|
|
Vec06 <= (others => '0');
|
|
|
Vec07 <= (others => '0');
|
|
|
|
|
|
Vec10 <= (others => '0');
|
|
|
Vec11 <= (others => '0');
|
|
|
Vec12 <= (others => '0');
|
|
|
Vec13 <= (others => '0');
|
|
|
Vec14 <= (others => '0');
|
|
|
Vec15 <= (others => '0');
|
|
|
Vec16 <= (others => '0');
|
|
|
Vec17 <= (others => '0');
|
|
|
N <= 0;
|
|
|
elsif SPI_CLk'event and SPI_CLk = '1' then
|
|
|
-- SmplClk_clkd <= SmplClk;
|
|
|
-- SmplClk_Reg <= SmplClk_clkd;
|
|
|
--if ((SmplClk_clkd = '1' and SmplClk_Reg = '0') or (N /= 0)) then
|
|
|
if ((SmplClk_clkd = '1' and SmplClk_Reg = '0') or (N /= 0)) then
|
|
|
--Vec0(0) <= DIN(0);
|
|
|
--Vec1(0) <= DIN(1);
|
|
|
--Vec2(0) <= DIN(2);
|
|
|
--Vec3(0) <= DIN(3);
|
|
|
--Vec0(23 downto 1) <= Vec0(22 downto 0);
|
|
|
--Vec1(23 downto 1) <= Vec1(22 downto 0);
|
|
|
--Vec2(23 downto 1) <= Vec2(22 downto 0);
|
|
|
--Vec3(23 downto 1) <= Vec3(22 downto 0);
|
|
|
Vec00(0) <= DIN(0);
|
|
|
Vec00(23 downto 1) <= Vec00(22 downto 0);
|
|
|
Vec01(0) <= Vec00(23);
|
|
|
|
|
|
Vec01(23 downto 1) <= Vec01(22 downto 0);
|
|
|
Vec02(0) <= Vec01(23);
|
|
|
|
|
|
Vec02(23 downto 1) <= Vec02(22 downto 0);
|
|
|
Vec03(0) <= Vec02(23);
|
|
|
|
|
|
Vec03(23 downto 1) <= Vec03(22 downto 0);
|
|
|
Vec04(0) <= Vec03(23);
|
|
|
|
|
|
Vec04(23 downto 1) <= Vec04(22 downto 0);
|
|
|
Vec05(0) <= Vec04(23);
|
|
|
|
|
|
Vec05(23 downto 1) <= Vec05(22 downto 0);
|
|
|
Vec06(0) <= Vec05(23);
|
|
|
|
|
|
Vec06(23 downto 1) <= Vec06(22 downto 0);
|
|
|
Vec07(0) <= Vec06(23);
|
|
|
|
|
|
Vec07(23 downto 1) <= Vec07(22 downto 0);
|
|
|
|
|
|
|
|
|
Vec10(0) <= DIN(1);
|
|
|
Vec10(23 downto 1) <= Vec10(22 downto 0);
|
|
|
Vec11(0) <= Vec10(23);
|
|
|
|
|
|
Vec11(23 downto 1) <= Vec11(22 downto 0);
|
|
|
Vec12(0) <= Vec11(23);
|
|
|
|
|
|
Vec12(23 downto 1) <= Vec12(22 downto 0);
|
|
|
Vec13(0) <= Vec12(23);
|
|
|
|
|
|
Vec13(23 downto 1) <= Vec13(22 downto 0);
|
|
|
Vec14(0) <= Vec13(23);
|
|
|
|
|
|
Vec14(23 downto 1) <= Vec14(22 downto 0);
|
|
|
Vec15(0) <= Vec14(23);
|
|
|
|
|
|
Vec15(23 downto 1) <= Vec15(22 downto 0);
|
|
|
Vec16(0) <= Vec15(23);
|
|
|
|
|
|
Vec16(23 downto 1) <= Vec16(22 downto 0);
|
|
|
Vec17(0) <= Vec16(23);
|
|
|
|
|
|
Vec17(23 downto 1) <= Vec17(22 downto 0);
|
|
|
if N = (23*8) then
|
|
|
N <= 0;
|
|
|
else
|
|
|
N <= N+1;
|
|
|
end if;
|
|
|
end if;
|
|
|
end if;
|
|
|
end process;
|
|
|
|
|
|
|
|
|
process(SPI_CLk)
|
|
|
begin
|
|
|
if SPI_CLk'event and SPI_CLk ='0' then
|
|
|
SmplClk_clkd <= SmplClk;
|
|
|
SmplClk_Reg <= SmplClk_clkd;
|
|
|
end if;
|
|
|
end process;
|
|
|
|
|
|
|
|
|
process(SPI_CLk)
|
|
|
begin
|
|
|
if SPI_CLk'event and SPI_CLk ='1' then
|
|
|
if N = 0 then
|
|
|
OUT00 <= Vec00;
|
|
|
OUT01 <= Vec01;
|
|
|
OUT02 <= Vec02;
|
|
|
OUT03 <= Vec03;
|
|
|
OUT04 <= Vec04;
|
|
|
OUT05 <= Vec05;
|
|
|
OUT06 <= Vec06;
|
|
|
OUT07 <= Vec07;
|
|
|
|
|
|
OUT10 <= Vec10;
|
|
|
OUT11 <= Vec11;
|
|
|
OUT12 <= Vec12;
|
|
|
OUT13 <= Vec13;
|
|
|
OUT14 <= Vec14;
|
|
|
OUT15 <= Vec15;
|
|
|
OUT16 <= Vec16;
|
|
|
OUT17 <= Vec17;
|
|
|
end if;
|
|
|
end if;
|
|
|
end process;
|
|
|
|
|
|
end ar_DUAL_ADS1278_DRIVER;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|