From fc6a4e6b56b02abf1cb7828fdb0cad9c55900191 Mon Sep 17 00:00:00 2001 From: Joakim Argillander <joakim@argillander.se> Date: Fri, 31 Jul 2020 21:08:11 +0200 Subject: [PATCH] Stashed for safekeeping --- PmodAD1 RefComp/AD1Refcomp.vhd | 284 +++++++ PmodDA2 RefComp/PmodDA2RefComp.pdf | Bin 0 -> 91427 bytes PmodDA2 RefComp/SourceFiles/DA2RefComp.vhd | 287 +++++++ .../SourceFiles/backup_dac_inner.vhd | 785 ++++++++++++++++++ 4 files changed, 1356 insertions(+) create mode 100644 PmodAD1 RefComp/AD1Refcomp.vhd create mode 100644 PmodDA2 RefComp/PmodDA2RefComp.pdf create mode 100644 PmodDA2 RefComp/SourceFiles/DA2RefComp.vhd create mode 100644 PmodDA2 RefComp/SourceFiles/backup_dac_inner.vhd diff --git a/PmodAD1 RefComp/AD1Refcomp.vhd b/PmodAD1 RefComp/AD1Refcomp.vhd new file mode 100644 index 0000000..624ee76 --- /dev/null +++ b/PmodAD1 RefComp/AD1Refcomp.vhd @@ -0,0 +1,284 @@ +------------------------------------------------------------------------- +-- AD1RefComp.VHD +------------------------------------------------------------------------- +-- Author : Ioana Dabacan +-- CopyRight 2008 Digilent Ro. +------------------------------------------------------------------------- +-- Description : This file is the VHDL code for a PMOD-AD1 controller. +-- +------------------------------------------------------------------------- +-- Revision History: +-- Feb/29/2008 Created (Ioana Dabacan) +------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +package ADC is + component AD1RefComp is + Port ( + --General usage + CLK : in std_logic; + RST : in std_logic; + + --Pmod interface signals + SDATA1 : in std_logic; + SDATA2 : in std_logic; + SCLK : out std_logic; + nCS : out std_logic; + + --User interface signals + DATA1 : out std_logic_vector(11 downto 0); + DATA2 : out std_logic_vector(11 downto 0); + START : in std_logic; + DONE : out std_logic + ); + end component AD1RefComp; +end package ADC; + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +------------------------------------------------------------------------- +--Title : AD1 Reference Component +-- +-- Inputs : 5 +-- Outputs : 5 +-- +-- Description: This is the AD1 Reference Component entity. The input +-- ports are a 50 MHz clock and an asynchronous reset +-- button along with the data from the ADC7476 that +-- is serially shifted in on each clock cycle(SDATA1 and +-- SDATA2). The outputs are the SCLK signal which clocks +-- the PMOD-AD1 board at 12.5 MHz and a chip select +-- signal (nCS) that enables the ADC7476 chips on the +-- PMOD-AD1 board as well as two 12-bit output +-- vectors labeled DATA1 and DATA2 which can be used by +-- any external components. The START is used to tell +-- the component when to start a conversion. After a +-- conversion is done the component activates the DONE +-- signal. +-- +-------------------------------------------------------------------------- + +entity AD1RefComp is + Port ( + --General usage + CLK : in std_logic; + RST : in std_logic; + + --Pmod interface signals + SDATA1 : in std_logic; + SDATA2 : in std_logic; + SCLK : out std_logic; + nCS : out std_logic; + + --User interface signals + DATA1 : out std_logic_vector(11 downto 0); + DATA2 : out std_logic_vector(11 downto 0); + START : in std_logic; + DONE : out std_logic + ); + +end AD1RefComp ; + +architecture AD1 of AD1RefComp is + +-------------------------------------------------------------------------------- +-- Title : Local signal assignments +-- +-- Description : The following signals will be used to drive the +-- processes of this VHDL file. +-- +-- current_state : This signal will be the pointer that will point at the +-- current state of the Finite State Machine of the +-- controller. +-- next_state : This signal will be the pointer that will point at the +-- current state of the Finite State Machine of the +-- controller. +-- temp1 : This is a 16-bit vector that will store the 16-bits of data +-- that are serially shifted-in form the first ADC7476 chip +-- inside the PMOD-AD1 board. +-- temp2 : This is a 16-bit vector that will store the 16-bits of data +-- that are serially shifted-in form the second ADC7476 chip +-- inside the PMOD-AD1 board. +-- clk_div : This will be the divided 12.5 MHz clock signal that will +-- clock the PMOD-AD1 board +-- clk_counter : This counter will be used to create a divided clock signal. +-- +-- shiftCounter : This counter will be used to count the shifted data from +-- the ADC7476 chip inside the PMOD-AD1 board. +-- enShiftCounter: This signal will be used to enable the counter for the +-- shifted data from the ADC7476 chip inside the PMOD-AD1. +-- enParalelLoad : This signal will be used to enable the load the shifted +-- data in a register. +-------------------------------------------------------------------------------- + +type states is (Idle, + ShiftIn, + SyncData); + signal current_state : states; + signal next_state : states; + + signal temp1 : std_logic_vector(15 downto 0); + signal temp2 : std_logic_vector(15 downto 0); + signal clk_div : std_logic; + signal clk_counter : std_logic_vector(1 downto 0); + signal shiftCounter : std_logic_vector(3 downto 0) := x"0"; + signal enShiftCounter: std_logic; + signal enParalelLoad : std_logic; + + +begin + +-------------------------------------------------------------------------------- +-- Title : clock divider process +-- +-- Description : This is the process that will divide the 50 MHz clock +-- down to a clock speed of 12.5 MHz to drive the ADC7476 chip. +-------------------------------------------------------------------------------- + clock_divide : process(rst,clk) + begin + if rst = '1' then + clk_counter <= "00"; + elsif (clk = '1' and clk'event) then + clk_counter <= clk_counter + '1'; + end if; + end process; + + clk_div <= clk_counter(1); + SCLK <= not clk_counter(1); + +----------------------------------------------------------------------------------- +-- +-- Title : counter +-- +-- Description: This is the process were the converted data will be colected and +-- output.When the enShiftCounter is activated, the 16-bits of data +-- from the ADC7476 chips will be shifted inside the temporary +-- registers. A 4-bit counter is used to keep shifting the data +-- inside temp1 and temp2 for 16 clock cycles. When the enParalelLoad +-- signal is generated inside the SyncData state, the converted data +-- in the temporary shift registers will be placed on the outputs +-- DATA1 and DATA2. +-- +----------------------------------------------------------------------------------- + +counter : process(clk_div, enParalelLoad, enShiftCounter) + begin + if (clk_div = '1' and clk_div'event) then + + if (enShiftCounter = '1') then + temp1 <= temp1(14 downto 0) & SDATA1; + temp2 <= temp2(14 downto 0) & SDATA2; + shiftCounter <= shiftCounter + '1'; + elsif (enParalelLoad = '1') then + shiftCounter <= "0000"; + DATA1 <= temp1(11 downto 0); + DATA2 <= temp2(11 downto 0); + end if; + end if; + end process; + +--------------------------------------------------------------------------------- +-- +-- Title : Finite State Machine +-- +-- Description: This 3 processes represent the FSM that contains three states. +-- The first state is the Idle state in which a temporary registers +-- are assigned the updated value of the input "DATA1" and "DATA2". +-- The next state is the ShiftIn state where the 16-bits of data +-- from each of the ADCS7476 chips are left shifted in the temp1 +-- and temp2 shift registers. The third state, SyncData drives the +-- output signal nCS high for 1 clock period maintainig nCS high +-- also in the Idle state telling the ADCS7476 to mark the end of +-- the conversion. +-- Notes: The data will change on the lower edge of the clock signal. There +-- is also an asynchronous reset that will reset all signals to +-- their original state. +-- +----------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------- +-- +-- Title : SYNC_PROC +-- +-- Description: This is the process were the states are changed synchronously. At +-- reset the current state becomes Idle state. +-- +----------------------------------------------------------------------------------- +SYNC_PROC: process (clk_div, rst) + begin + if (clk_div'event and clk_div = '1') then + if (rst = '1') then + current_state <= Idle; + else + current_state <= next_state; + end if; + end if; + end process; + +----------------------------------------------------------------------------------- +-- +-- Title : OUTPUT_DECODE +-- +-- Description: This is the process were the output signals are generated +-- unsynchronously based on the state only (Moore State Machine). +-- +----------------------------------------------------------------------------------- +OUTPUT_DECODE: process (current_state) + begin + if current_state = Idle then + enShiftCounter <='0'; + DONE <='1'; + nCS <='1'; + enParalelLoad <= '0'; + elsif current_state = ShiftIn then + enShiftCounter <='1'; + DONE <='0'; + nCS <='0'; + enParalelLoad <= '0'; + else --if current_state = SyncData then + enShiftCounter <='0'; + DONE <='0'; + nCS <='1'; + enParalelLoad <= '1'; + end if; + end process; + +---------------------------------------------------------------------------------- +-- +-- Title : NEXT_STATE_DECODE +-- +-- Description: This is the process were the next state logic is generated +-- depending on the current state and the input signals. +-- +----------------------------------------------------------------------------------- + NEXT_STATE_DECODE: process (current_state, START, shiftCounter) + begin + + next_state <= current_state; -- default is to stay in current state + + case (current_state) is + when Idle => + if START = '1' then + next_state <= ShiftIn; + end if; + when ShiftIn => + if shiftCounter = x"F" then + next_state <= SyncData; + end if; + when SyncData => + if START = '0' then + next_state <= Idle; + end if; + when others => + next_state <= Idle; + end case; + end process; + + +end AD1; \ No newline at end of file diff --git a/PmodDA2 RefComp/PmodDA2RefComp.pdf b/PmodDA2 RefComp/PmodDA2RefComp.pdf new file mode 100644 index 0000000000000000000000000000000000000000..39d0aea32f05eb96d38c8e22681cab0108e0874b GIT binary patch literal 91427 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 literal 0 HcmV?d00001 diff --git a/PmodDA2 RefComp/SourceFiles/DA2RefComp.vhd b/PmodDA2 RefComp/SourceFiles/DA2RefComp.vhd new file mode 100644 index 0000000..62200f2 --- /dev/null +++ b/PmodDA2 RefComp/SourceFiles/DA2RefComp.vhd @@ -0,0 +1,287 @@ +-------------------------------------------------------------------------------- +-- DA2 Reference Component +-------------------------------------------------------------------------------- +-- Author : Ioana Dabacan +-- CopyRight 2008 Digilent Ro. +-------------------------------------------------------------------------------- +-- Desription : This file is the VHDL code for a PMOD-DA2 controller. +-- +-------------------------------------------------------------------------------- +-- Revision History: +-- Feb/29/2008 (Created) Ioana Dabacan +-------------------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + + +-------------------------------------------------------------------------------- +-- +-- Title : DA1 controller entity +-- +-- Inputs : 5 +-- Outputs : 5 +-- +-- Description: This is the DA2 Reference Component entity. The input ports are +-- a 50MHz clock and and an asynchronous reset button along with the +-- data to be serially shifted in the 2 DAC121S101 chips on a DA2 +-- Pmod on each clock cycle.There is also a signal to start a +-- conversion. +-- The outputs of this entity are: a output clock signal, two serial +-- output signals D1 and D2, a sync signal to synchronize the data +-- in the DAC121S101 chip, a done signal to tell that the chip is +-- done converting the data and another set of data can be sent. +-- +--------------------------------------------------------------------------------- + +entity DA2RefComp is + Port ( + + + --General usage + CLK : in std_logic; -- System Clock (50MHz) + RST : in std_logic; + + --Pmod interface signals + D1 : out std_logic; + --D2 : out std_slogic; + CLK_OUT : out std_logic; + nSYNC : out std_logic; + + --User interface signal + DATA1 : in std_logic_vector(7 downto 0); + -- DATA2 : in std_logic_vector(11 downto 0); + --START : in std_logic; + DONE : buffer std_logic + + ); +end DA2RefComp ; + +architecture DA2 of DA2RefComp is + + +-- control constant: Normal Operation + constant control : std_logic_vector(3 downto 0) := "0000"; +------------------------------------------------------------------------------------ +-- Title : signal assignments +-- +-- Description: The following signals are enumerated signals for the +-- finite state machine,2 temporary vectors to be shifted out to the +-- DAC121S101 chips, a divided clock signal to drive the DAC121S101 chips, +-- a counter to divide the internal 50 MHz clock signal, +-- a 4-bit counter to be used to shift out the 16-bit register, +-- and 2 enable signals for the paralel load and shift of the +-- shift register. +-- +------------------------------------------------------------------------------------ + type states is (Idle, + ShiftOut, + SyncData); + signal current_state : states; + signal next_state : states; + + + signal temp1 : std_logic_vector(15 downto 0) := (others => '0'); + signal temp2 : std_logic_vector(15 downto 0) := (others => '0'); + signal clk_div : std_logic := '0'; + signal clk_counter : std_logic_vector(27 downto 0) := (others => '0'); + signal shiftCounter : std_logic_vector(3 downto 0) := (others => '0'); + signal enShiftCounter: std_logic := '0'; + signal enParalelLoad : std_logic := '0'; + signal data_int : std_logic_vector(11 downto 0) := (others => '0'); + + signal START : std_logic := '1'; + + signal sweep_clk : std_logic := '0'; + signal sweep_ctr : std_logic_vector(11 downto 0) := (others => '0'); +begin + + + + + + + + + +------------------------------------------------------------------------------------ +-- +-- Title : Clock Divider +-- +-- Description: The following process takes a 50 MHz clock and divides it down to a +-- 25 MHz clock signal by assigning the signals clk_out and clk_div +-- to the 2nd bit of the clk_counter vector. clk_div is used by +-- the Finite State Machine and clk_out is used by the DAC121S101 chips. +-- +------------------------------------------------------------------------------------ + + clock_divide : process(rst,clk) + begin + if rising_edge(clk) then + if rst = '1' then + clk_counter <= "0000000000000000000000000000"; + else + clk_counter <= clk_counter + '1'; + end if; + + end if; + end process; + + clk_div <= clk_counter(1); + clk_out <= clk_counter(1); + sweep_clk <= clk_counter(6); + + + +process(sweep_clk) begin + if(rising_edge(sweep_clk)) then + if(unsigned(sweep_ctr) >= 4095) then + sweep_ctr <= (others => '0'); + else + sweep_ctr <= sweep_ctr + '1'; + end if; + end if; +end process; + +data_int <= sweep_ctr; + + + +----------------------------------------------------------------------------------- +-- +-- Title : counter +-- +-- Description: This is the process were the teporary registers will be loaded and +-- shifted.When the enParalelLoad signal is generated inside the state +-- the temp1 and temp2 registers will be loaded with the 8 bits of control +-- concatenated with the 8 bits of data. When the enShiftCounter is +-- activated, the 16-bits of data inside the temporary registers will be +-- shifted. A 4-bit counter is used to keep shifting the data +-- inside temp1 and temp 2 for 16 clock cycles. +-- +----------------------------------------------------------------------------------- + +--data_int(11 downto 4) <= DATA1; +--data_int(3 downto 0) <= "1111"; +counter : process(clk_div, enParalelLoad, enShiftCounter) + begin + if rising_edge(clk_div) then + if enParalelLoad = '1' then + shiftCounter <= "0000"; + temp1 <= control & data_int; + --temp2 <= control & DATA2; + elsif (enShiftCounter = '1') then + temp1 <= temp1(14 downto 0)&temp1(15); + temp2 <= temp2(14 downto 0)&temp2(15); + shiftCounter <= shiftCounter + '1'; + end if; + end if; + end process; + + D1 <= temp1(15); + --D2 <= temp2(15); + + +--------------------------------------------------------------------------------- +-- +-- Title : Finite State Machine +-- +-- Description: This 3 processes represent the FSM that contains three states. +-- First one is the Idle state in which the temporary registers are +-- assigned the updated value of the input "DATA1" and "DATA2". +-- The next state is the ShiftOut state which is the state where the +-- 16-bits of temporary registers are shifted out left from the MSB +-- to the two serial outputs, D1 and D2. Immediately following the +-- second state is the third state SyncData. This state drives the +-- output signal sync high for2 clock signals telling the DAC121S101 +-- to latch the 16-bit data it just recieved in the previous state. +-- Notes: The data will change on the upper edge of the clock signal. Their +-- is also an asynchronous reset that will reset all signals to their +-- original state. +-- +----------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------- +-- +-- Title : SYNC_PROC +-- +-- Description: This is the process were the states are changed synchronously. At +-- reset the current state becomes Idle state. +-- +----------------------------------------------------------------------------------- +SYNC_PROC: process (clk_div, rst) + begin + if rising_edge(clk_div) then + if (rst = '1') then + current_state <= Idle; + else + current_state <= next_state; + end if; + end if; + end process; + +----------------------------------------------------------------------------------- +-- +-- Title : OUTPUT_DECODE +-- +-- Description: This is the process were the output signals are generated +-- unsynchronously based on the state only (Moore State Machine). +-- +----------------------------------------------------------------------------------- +OUTPUT_DECODE: process (current_state) + begin + if current_state = Idle then + enShiftCounter <='0'; + DONE <='1'; + nSYNC <='1'; + enParalelLoad <= '1'; + elsif current_state = ShiftOut then + enShiftCounter <='1'; + DONE <='0'; + nSYNC <='0'; + enParalelLoad <= '0'; + else --if current_state = SyncData then + enShiftCounter <='0'; + DONE <='0'; + nSYNC <='1'; + enParalelLoad <= '0'; + end if; + end process; + +----------------------------------------------------------------------------------- +-- +-- Title : NEXT_STATE_DECODE +-- +-- Description: This is the process were the next state logic is generated +-- depending on the current state and the input signals. +-- +----------------------------------------------------------------------------------- + NEXT_STATE_DECODE: process (current_state, START, shiftCounter, CLK) -- added clk + begin + + next_state <= current_state; --default is to stay in current state + + case (current_state) is + when Idle => + if START = '1' and DONE = '1' then + next_state <= ShiftOut; + end if; + when ShiftOut => + if shiftCounter = x"F" then + next_state <= SyncData; + end if; + when SyncData => + if START = '1' then -- was 0 + next_state <= Idle; + end if; + when others => + next_state <= Idle; + end case; + end process; + + +end DA2; + + diff --git a/PmodDA2 RefComp/SourceFiles/backup_dac_inner.vhd b/PmodDA2 RefComp/SourceFiles/backup_dac_inner.vhd new file mode 100644 index 0000000..c6c0779 --- /dev/null +++ b/PmodDA2 RefComp/SourceFiles/backup_dac_inner.vhd @@ -0,0 +1,785 @@ +library ieee; +use ieee.std_logic_1164.all; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +use ieee.numeric_std.all; + +entity DAC_controller_v1_0_S00_AXI is + generic ( + -- Users to add parameters here + + -- User parameters ends + -- Do not modify the parameters beyond this line + + -- Width of S_AXI data bus + C_S_AXI_DATA_WIDTH : integer := 32; + -- Width of S_AXI address bus + C_S_AXI_ADDR_WIDTH : integer := 6 + ); + port ( + -- Users to add ports here + + S_GCLK : in std_logic; + S_GRESET : in std_logic; + S_D1 : out std_logic; + S_D2 : out std_logic; + S_CLK_OUT : out std_logic; + S_NSYNC : out std_logic; + + S_DONE : out std_logic; + S_EXT_START : in std_logic; + + S_LEDS_OUT : out std_logic_vector(7 downto 0); + + -- User ports ends + -- Do not modify the ports beyond this line + + + + + + + + -- Global Clock Signal + S_AXI_ACLK : in std_logic; + -- Global Reset Signal. This Signal is Active LOW + S_AXI_ARESETN : in std_logic; + -- Write address (issued by master, acceped by Slave) + S_AXI_AWADDR : in std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0); + -- Write channel Protection type. This signal indicates the + -- privilege and security level of the transaction, and whether + -- the transaction is a data access or an instruction access. + S_AXI_AWPROT : in std_logic_vector(2 downto 0); + -- Write address valid. This signal indicates that the master signaling + -- valid write address and control information. + S_AXI_AWVALID : in std_logic; + -- Write address ready. This signal indicates that the slave is ready + -- to accept an address and associated control signals. + S_AXI_AWREADY : out std_logic; + -- Write data (issued by master, acceped by Slave) + S_AXI_WDATA : in std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + -- Write strobes. This signal indicates which byte lanes hold + -- valid data. There is one write strobe bit for each eight + -- bits of the write data bus. + S_AXI_WSTRB : in std_logic_vector((C_S_AXI_DATA_WIDTH/8)-1 downto 0); + -- Write valid. This signal indicates that valid write + -- data and strobes are available. + S_AXI_WVALID : in std_logic; + -- Write ready. This signal indicates that the slave + -- can accept the write data. + S_AXI_WREADY : out std_logic; + -- Write response. This signal indicates the status + -- of the write transaction. + S_AXI_BRESP : out std_logic_vector(1 downto 0); + -- Write response valid. This signal indicates that the channel + -- is signaling a valid write response. + S_AXI_BVALID : out std_logic; + -- Response ready. This signal indicates that the master + -- can accept a write response. + S_AXI_BREADY : in std_logic; + -- Read address (issued by master, acceped by Slave) + S_AXI_ARADDR : in std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0); + -- Protection type. This signal indicates the privilege + -- and security level of the transaction, and whether the + -- transaction is a data access or an instruction access. + S_AXI_ARPROT : in std_logic_vector(2 downto 0); + -- Read address valid. This signal indicates that the channel + -- is signaling valid read address and control information. + S_AXI_ARVALID : in std_logic; + -- Read address ready. This signal indicates that the slave is + -- ready to accept an address and associated control signals. + S_AXI_ARREADY : out std_logic; + -- Read data (issued by slave) + S_AXI_RDATA : out std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + -- Read response. This signal indicates the status of the + -- read transfer. + S_AXI_RRESP : out std_logic_vector(1 downto 0); + -- Read valid. This signal indicates that the channel is + -- signaling the required read data. + S_AXI_RVALID : out std_logic; + -- Read ready. This signal indicates that the master can + -- accept the read data and response information. + S_AXI_RREADY : in std_logic + ); +end DAC_controller_v1_0_S00_AXI; + +architecture arch_imp of DAC_controller_v1_0_S00_AXI is + + -- AXI4LITE signals + signal axi_awaddr : std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0); + signal axi_awready : std_logic; + signal axi_wready : std_logic; + signal axi_bresp : std_logic_vector(1 downto 0); + signal axi_bvalid : std_logic; + signal axi_araddr : std_logic_vector(C_S_AXI_ADDR_WIDTH-1 downto 0); + signal axi_arready : std_logic; + signal axi_rdata : std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal axi_rresp : std_logic_vector(1 downto 0); + signal axi_rvalid : std_logic; + + -- Example-specific design signals + -- local parameter for addressing 32 bit / 64 bit C_S_AXI_DATA_WIDTH + -- ADDR_LSB is used for addressing 32/64 bit registers/memories + -- ADDR_LSB = 2 for 32 bits (n downto 2) + -- ADDR_LSB = 3 for 64 bits (n downto 3) + constant ADDR_LSB : integer := (C_S_AXI_DATA_WIDTH/32)+ 1; + constant OPT_MEM_ADDR_BITS : integer := 3; + ------------------------------------------------ + ---- Signals for user logic register space example + + + + + +-- control constant: Normal Operation + constant control : std_logic_vector(3 downto 0) := "0000"; + ------------------------------------------------------------------------------------ +-- Title : signal assignments +-- +-- Description: The following signals are enumerated signals for the +-- finite state machine,2 temporary vectors to be shifted out to the +-- DAC121S101 chips, a divided clock signal to drive the DAC121S101 chips, +-- a counter to divide the internal 50 MHz clock signal, +-- a 4-bit counter to be used to shift out the 16-bit register, +-- and 2 enable signals for the paralel load and shift of the +-- shift register. +-- +------------------------------------------------------------------------------------ + type states is (Idle, + ShiftOut, + SyncData); + signal current_state : states; + signal next_state : states; + + signal temp1 : std_logic_vector(15 downto 0); + signal temp2 : std_logic_vector(15 downto 0); + signal clk_div : std_logic; + signal clk_counter : std_logic_vector(27 downto 0); + signal shiftCounter : std_logic_vector(3 downto 0); + signal enShiftCounter: std_logic; + signal enParalelLoad : std_logic; + + signal DATA1 :std_logic_vector(11 downto 0); + signal DATA2 :std_logic_vector(11 downto 0); + + signal START : std_logic; + + -------------------------------------------------- + ---- Number of Slave Registers 16 + signal slv_reg0 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg1 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg2 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg3 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg4 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg5 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg6 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg7 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg8 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg9 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg10 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg11 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg12 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg13 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg14 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg15 :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal slv_reg_rden : std_logic; + signal slv_reg_wren : std_logic; + signal reg_data_out :std_logic_vector(C_S_AXI_DATA_WIDTH-1 downto 0); + signal byte_index : integer; + signal aw_en : std_logic; + +begin + -- I/O Connections assignments + + S_AXI_AWREADY <= axi_awready; + S_AXI_WREADY <= axi_wready; + S_AXI_BRESP <= axi_bresp; + S_AXI_BVALID <= axi_bvalid; + S_AXI_ARREADY <= axi_arready; + S_AXI_RDATA <= axi_rdata; + S_AXI_RRESP <= axi_rresp; + S_AXI_RVALID <= axi_rvalid; + -- Implement axi_awready generation + -- axi_awready is asserted for one S_AXI_ACLK clock cycle when both + -- S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_awready is + -- de-asserted when reset is low. + + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_awready <= '0'; + aw_en <= '1'; + else + if (axi_awready = '0' and S_AXI_AWVALID = '1' and S_AXI_WVALID = '1' and aw_en = '1') then + -- slave is ready to accept write address when + -- there is a valid write address and write data + -- on the write address and data bus. This design + -- expects no outstanding transactions. + axi_awready <= '1'; + aw_en <= '0'; + elsif (S_AXI_BREADY = '1' and axi_bvalid = '1') then + aw_en <= '1'; + axi_awready <= '0'; + else + axi_awready <= '0'; + end if; + end if; + end if; + end process; + + -- Implement axi_awaddr latching + -- This process is used to latch the address when both + -- S_AXI_AWVALID and S_AXI_WVALID are valid. + + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_awaddr <= (others => '0'); + else + if (axi_awready = '0' and S_AXI_AWVALID = '1' and S_AXI_WVALID = '1' and aw_en = '1') then + -- Write Address latching + axi_awaddr <= S_AXI_AWADDR; + end if; + end if; + end if; + end process; + + -- Implement axi_wready generation + -- axi_wready is asserted for one S_AXI_ACLK clock cycle when both + -- S_AXI_AWVALID and S_AXI_WVALID are asserted. axi_wready is + -- de-asserted when reset is low. + + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_wready <= '0'; + else + if (axi_wready = '0' and S_AXI_WVALID = '1' and S_AXI_AWVALID = '1' and aw_en = '1') then + -- slave is ready to accept write data when + -- there is a valid write address and write data + -- on the write address and data bus. This design + -- expects no outstanding transactions. + axi_wready <= '1'; + else + axi_wready <= '0'; + end if; + end if; + end if; + end process; + + -- Implement memory mapped register select and write logic generation + -- The write data is accepted and written to memory mapped registers when + -- axi_awready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. Write strobes are used to + -- select byte enables of slave registers while writing. + -- These registers are cleared when reset (active low) is applied. + -- Slave register write enable is asserted when valid address and data are available + -- and the slave is ready to accept the write address and write data. + slv_reg_wren <= axi_wready and S_AXI_WVALID and axi_awready and S_AXI_AWVALID ; + + process (S_AXI_ACLK) + variable loc_addr :std_logic_vector(OPT_MEM_ADDR_BITS downto 0); + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + slv_reg0 <= (others => '0'); + slv_reg1 <= (others => '0'); + slv_reg2 <= (others => '0'); + slv_reg3 <= (others => '0'); + slv_reg4 <= (others => '0'); + slv_reg5 <= (others => '0'); + slv_reg6 <= (others => '0'); + slv_reg7 <= (others => '0'); + slv_reg8 <= (others => '0'); + slv_reg9 <= (others => '0'); + --slv_reg10 <= (others => '0'); + slv_reg11 <= (others => '0'); + slv_reg12 <= (others => '0'); + slv_reg13 <= (others => '0'); + slv_reg14 <= (others => '0'); + slv_reg15 <= (others => '0'); + else + loc_addr := axi_awaddr(ADDR_LSB + OPT_MEM_ADDR_BITS downto ADDR_LSB); + if (slv_reg_wren = '1') then + case loc_addr is + when b"0000" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 0 + slv_reg0(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0001" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 1 + slv_reg1(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0010" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 2 + slv_reg2(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0011" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 3 + slv_reg3(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0100" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 4 + slv_reg4(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0101" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 5 + slv_reg5(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0110" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 6 + slv_reg6(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"0111" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 7 + slv_reg7(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1000" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 8 + slv_reg8(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1001" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 9 + slv_reg9(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1010" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 10 + -- slv_reg10(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1011" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 11 + slv_reg11(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1100" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 12 + slv_reg12(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1101" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 13 + slv_reg13(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1110" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 14 + slv_reg14(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when b"1111" => + for byte_index in 0 to (C_S_AXI_DATA_WIDTH/8-1) loop + if ( S_AXI_WSTRB(byte_index) = '1' ) then + -- Respective byte enables are asserted as per write strobes + -- slave registor 15 + slv_reg15(byte_index*8+7 downto byte_index*8) <= S_AXI_WDATA(byte_index*8+7 downto byte_index*8); + end if; + end loop; + when others => + slv_reg0 <= slv_reg0; + slv_reg1 <= slv_reg1; + slv_reg2 <= slv_reg2; + slv_reg3 <= slv_reg3; + slv_reg4 <= slv_reg4; + slv_reg5 <= slv_reg5; + slv_reg6 <= slv_reg6; + slv_reg7 <= slv_reg7; + slv_reg8 <= slv_reg8; + slv_reg9 <= slv_reg9; + --slv_reg10 <= slv_reg10; + slv_reg11 <= slv_reg11; + slv_reg12 <= slv_reg12; + slv_reg13 <= slv_reg13; + slv_reg14 <= slv_reg14; + slv_reg15 <= slv_reg15; + end case; + end if; + end if; + end if; + end process; + + + + + + + +------------------------------------------------------------------------------------ +-- +-- Title : Clock Divider +-- +-- Description: The following process takes a 50 MHz clock and divides it down to a +-- 25 MHz clock signal by assigning the signals clk_out and clk_div +-- to the 2nd bit of the clk_counter vector. clk_div is used by +-- the Finite State Machine and clk_out is used by the DAC121S101 chips. +-- +------------------------------------------------------------------------------------ + + clock_divide : process(S_GCLK) + begin + if rising_edge(S_GCLK) then + if S_GRESET = '1' then + clk_counter <= "0000000000000000000000000000"; + else + clk_counter <= clk_counter + '1'; + end if; + end if; + end process; + + clk_div <= clk_counter(0); + S_CLK_OUT <= clk_counter(0); + + +----------------------------------------------------------------------------------- +-- +-- Title : counter +-- +-- Description: This is the process were the teporary registers will be loaded and +-- shifted.When the enParalelLoad signal is generated inside the state +-- the temp1 and temp2 registers will be loaded with the 8 bits of control +-- concatenated with the 8 bits of data. When the enShiftCounter is +-- activated, the 16-bits of data inside the temporary registers will be +-- shifted. A 4-bit counter is used to keep shifting the data +-- inside temp1 and temp 2 for 16 clock cycles. +-- +----------------------------------------------------------------------------------- + +counter : process(clk_div, enParalelLoad, enShiftCounter) + begin + if rising_edge(clk_div) then + if enParalelLoad = '1' then + shiftCounter <= "0000"; + temp1 <= control & DATA1; + temp2 <= control & DATA2; + elsif (enShiftCounter = '1') then + temp1 <= temp1(14 downto 0)&temp1(15); + temp2 <= temp2(14 downto 0)&temp2(15); + shiftCounter <= shiftCounter + '1'; + end if; + end if; + end process; + + S_D1 <= temp1(15); + S_D2 <= temp2(15); + --S_D2 <= S_GCLK; + + DATA1 <= slv_reg1(11 downto 0); + DATA2 <= slv_reg2(11 downto 0); +--------------------------------------------------------------------------------- +-- +-- Title : Finite State Machine +-- +-- Description: This 3 processes represent the FSM that contains three states. +-- First one is the Idle state in which the temporary registers are +-- assigned the updated value of the input "DATA1" and "DATA2". +-- The next state is the ShiftOut state which is the state where the +-- 16-bits of temporary registers are shifted out left from the MSB +-- to the two serial outputs, D1 and D2. Immediately following the +-- second state is the third state SyncData. This state drives the +-- output signal sync high for2 clock signals telling the DAC121S101 +-- to latch the 16-bit data it just recieved in the previous state. +-- Notes: The data will change on the upper edge of the clock signal. Their +-- is also an asynchronous reset that will reset all signals to their +-- original state. +-- +----------------------------------------------------------------------------------- + +----------------------------------------------------------------------------------- +-- +-- Title : SYNC_PROC +-- +-- Description: This is the process were the states are changed synchronously. At +-- reset the current state becomes Idle state. +-- +----------------------------------------------------------------------------------- +SYNC_PROC: process (clk_div, S_GRESET) + begin + if rising_edge(clk_div) then + if (S_GRESET = '1') then + current_state <= Idle; + else + current_state <= next_state; + end if; + end if; + end process; + +----------------------------------------------------------------------------------- +-- +-- Title : OUTPUT_DECODE +-- +-- Description: This is the process were the output signals are generated +-- unsynchronously based on the state only (Moore State Machine). +-- +----------------------------------------------------------------------------------- +OUTPUT_DECODE: process (current_state) + begin + if current_state = Idle then + enShiftCounter <='0'; + S_DONE <='1'; + S_NSYNC <='1'; + enParalelLoad <= '1'; + elsif current_state = ShiftOut then + enShiftCounter <='1'; + S_DONE <='0'; + S_NSYNC <='0'; + enParalelLoad <= '0'; + else --if current_state = SyncData then + enShiftCounter <='0'; + S_DONE <='0'; + S_NSYNC <='1'; + enParalelLoad <= '0'; + end if; + end process; + + + + START <= slv_reg0(0); + + S_LEDS_OUT(0) <= START; + + + + +----------------------------------------------------------------------------------- +-- +-- Title : NEXT_STATE_DECODE +-- +-- Description: This is the process were the next state logic is generated +-- depending on the current state and the input signals. +-- +----------------------------------------------------------------------------------- + NEXT_STATE_DECODE: process (current_state, START, shiftCounter) + begin + + next_state <= current_state; --default is to stay in current state + + case (current_state) is + when Idle => + if START = '1' then + next_state <= ShiftOut; + end if; + when ShiftOut => + if shiftCounter = x"F" then + next_state <= SyncData; + end if; + when SyncData => + if START = '0' then + next_state <= Idle; + end if; + when others => + next_state <= Idle; + end case; + end process; + + + + + + + + -- Implement write response logic generation + -- The write response and response valid signals are asserted by the slave + -- when axi_wready, S_AXI_WVALID, axi_wready and S_AXI_WVALID are asserted. + -- This marks the acceptance of address and indicates the status of + -- write transaction. + + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_bvalid <= '0'; + axi_bresp <= "00"; --need to work more on the responses + else + if (axi_awready = '1' and S_AXI_AWVALID = '1' and axi_wready = '1' and S_AXI_WVALID = '1' and axi_bvalid = '0' ) then + axi_bvalid <= '1'; + axi_bresp <= "00"; + elsif (S_AXI_BREADY = '1' and axi_bvalid = '1') then --check if bready is asserted while bvalid is high) + axi_bvalid <= '0'; -- (there is a possibility that bready is always asserted high) + end if; + end if; + end if; + end process; + + -- Implement axi_arready generation + -- axi_arready is asserted for one S_AXI_ACLK clock cycle when + -- S_AXI_ARVALID is asserted. axi_awready is + -- de-asserted when reset (active low) is asserted. + -- The read address is also latched when S_AXI_ARVALID is + -- asserted. axi_araddr is reset to zero on reset assertion. + + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_arready <= '0'; + axi_araddr <= (others => '1'); + else + if (axi_arready = '0' and S_AXI_ARVALID = '1') then + -- indicates that the slave has acceped the valid read address + axi_arready <= '1'; + -- Read Address latching + axi_araddr <= S_AXI_ARADDR; + else + axi_arready <= '0'; + end if; + end if; + end if; + end process; + + -- Implement axi_arvalid generation + -- axi_rvalid is asserted for one S_AXI_ACLK clock cycle when both + -- S_AXI_ARVALID and axi_arready are asserted. The slave registers + -- data are available on the axi_rdata bus at this instance. The + -- assertion of axi_rvalid marks the validity of read data on the + -- bus and axi_rresp indicates the status of read transaction.axi_rvalid + -- is deasserted on reset (active low). axi_rresp and axi_rdata are + -- cleared to zero on reset (active low). + process (S_AXI_ACLK) + begin + if rising_edge(S_AXI_ACLK) then + if S_AXI_ARESETN = '0' then + axi_rvalid <= '0'; + axi_rresp <= "00"; + else + if (axi_arready = '1' and S_AXI_ARVALID = '1' and axi_rvalid = '0') then + -- Valid read data is available at the read data bus + axi_rvalid <= '1'; + axi_rresp <= "00"; -- 'OKAY' response + elsif (axi_rvalid = '1' and S_AXI_RREADY = '1') then + -- Read data is accepted by the master + axi_rvalid <= '0'; + end if; + end if; + end if; + end process; + + -- Implement memory mapped register select and read logic generation + -- Slave register read enable is asserted when valid address is available + -- and the slave is ready to accept the read address. + slv_reg_rden <= axi_arready and S_AXI_ARVALID and (not axi_rvalid) ; + + process (slv_reg0, slv_reg1, slv_reg2, slv_reg3, slv_reg4, slv_reg5, slv_reg6, slv_reg7, slv_reg8, slv_reg9, slv_reg10, slv_reg11, slv_reg12, slv_reg13, slv_reg14, slv_reg15, axi_araddr, S_AXI_ARESETN, slv_reg_rden) + variable loc_addr :std_logic_vector(OPT_MEM_ADDR_BITS downto 0); + begin + -- Address decoding for reading registers + loc_addr := axi_araddr(ADDR_LSB + OPT_MEM_ADDR_BITS downto ADDR_LSB); + case loc_addr is + when b"0000" => + reg_data_out <= slv_reg0; + when b"0001" => + reg_data_out <= slv_reg1; + when b"0010" => + reg_data_out <= slv_reg2; + when b"0011" => + reg_data_out <= slv_reg3; + when b"0100" => + reg_data_out <= slv_reg4; + when b"0101" => + reg_data_out <= slv_reg5; + when b"0110" => + reg_data_out <= slv_reg6; + when b"0111" => + reg_data_out <= slv_reg7; + when b"1000" => + reg_data_out <= slv_reg8; + when b"1001" => + reg_data_out <= slv_reg9; + when b"1010" => + reg_data_out <= slv_reg10; + when b"1011" => + reg_data_out <= slv_reg11; + when b"1100" => + reg_data_out <= slv_reg12; + when b"1101" => + reg_data_out <= slv_reg13; + when b"1110" => + reg_data_out <= slv_reg14; + when b"1111" => + reg_data_out <= slv_reg15; + when others => + reg_data_out <= (others => '0'); + end case; + end process; + + -- Output register or memory read data + process( S_AXI_ACLK ) is + begin + if (rising_edge (S_AXI_ACLK)) then + if ( S_AXI_ARESETN = '0' ) then + axi_rdata <= (others => '0'); + else + if (slv_reg_rden = '1') then + -- When there is a valid read address (S_AXI_ARVALID) with + -- acceptance of read address by the slave (axi_arready), + -- output the read dada + -- Read address mux + axi_rdata <= reg_data_out; -- register read data + end if; + end if; + end if; + end process; + + + -- Add user logic here + + -- User logic ends + +end arch_imp; -- GitLab