Add skip-every-N function to CPLD, where N is controlled by three input pins from the microcontroller.

Updated SGPIO CPLD testbench, as it had fallen a bit out of date.
Add SGPIO API initialization and control of CPLD decimation feature.
This commit is contained in:
Jared Boone
2013-11-19 19:52:06 -08:00
parent 24a8e2bdb5
commit 3bf6573dc6
7 changed files with 158 additions and 115 deletions

View File

@ -20,6 +20,7 @@
* Boston, MA 02110-1301, USA. * Boston, MA 02110-1301, USA.
*/ */
#include <libopencm3/lpc43xx/gpio.h>
#include <libopencm3/lpc43xx/scu.h> #include <libopencm3/lpc43xx/scu.h>
#include <libopencm3/lpc43xx/sgpio.h> #include <libopencm3/lpc43xx/sgpio.h>
@ -41,9 +42,13 @@ void sgpio_configure_pin_functions() {
scu_pinmux(SCU_PINMUX_SGPIO10, SCU_GPIO_FAST | SCU_CONF_FUNCTION6); scu_pinmux(SCU_PINMUX_SGPIO10, SCU_GPIO_FAST | SCU_CONF_FUNCTION6);
scu_pinmux(SCU_PINMUX_SGPIO11, SCU_GPIO_FAST | SCU_CONF_FUNCTION6); scu_pinmux(SCU_PINMUX_SGPIO11, SCU_GPIO_FAST | SCU_CONF_FUNCTION6);
scu_pinmux(SCU_PINMUX_SGPIO12, SCU_GPIO_FAST | SCU_CONF_FUNCTION6); scu_pinmux(SCU_PINMUX_SGPIO12, SCU_GPIO_FAST | SCU_CONF_FUNCTION6);
scu_pinmux(SCU_PINMUX_SGPIO13, SCU_GPIO_FAST | SCU_CONF_FUNCTION7); scu_pinmux(SCU_PINMUX_SGPIO13, SCU_GPIO_FAST | SCU_CONF_FUNCTION4); /* GPIO5[12] */
scu_pinmux(SCU_PINMUX_SGPIO14, SCU_GPIO_FAST | SCU_CONF_FUNCTION7); scu_pinmux(SCU_PINMUX_SGPIO14, SCU_GPIO_FAST | SCU_CONF_FUNCTION4); /* GPIO5[13] */
scu_pinmux(SCU_PINMUX_SGPIO15, SCU_GPIO_FAST | SCU_CONF_FUNCTION7); scu_pinmux(SCU_PINMUX_SGPIO15, SCU_GPIO_FAST | SCU_CONF_FUNCTION4); /* GPIO5[14] */
sgpio_cpld_stream_rx_set_decimation(0);
GPIO_DIR(GPIO5) |= GPIOPIN14 | GPIOPIN13 | GPIOPIN12;
} }
@ -238,3 +243,15 @@ void sgpio_cpld_stream_disable() {
bool sgpio_cpld_stream_is_enabled() { bool sgpio_cpld_stream_is_enabled() {
return (SGPIO_GPIO_OUTREG & (1L << 10)) == 0; /* SGPIO10 */ return (SGPIO_GPIO_OUTREG & (1L << 10)) == 0; /* SGPIO10 */
} }
bool sgpio_cpld_stream_rx_set_decimation(const uint_fast8_t skip_n) {
/* CPLD interface is three bits, SGPIO[15:13]:
* 111: decimate by 1 (skip_n=0, skip no samples)
* 110: decimate by 2 (skip_n=1, skip every other sample)
* 101: decimate by 3 (skip_n=2, skip two of three samples)
* ...
* 000: decimate by 8 (skip_n=7, skip seven of eight samples)
*/
GPIO_SET(GPIO5) = GPIOPIN14 | GPIOPIN13 | GPIOPIN12;
GPIO_CLR(GPIO5) = (skip_n & 7) << 12;
}

View File

@ -39,4 +39,6 @@ void sgpio_cpld_stream_enable();
void sgpio_cpld_stream_disable(); void sgpio_cpld_stream_disable();
bool sgpio_cpld_stream_is_enabled(); bool sgpio_cpld_stream_is_enabled();
bool sgpio_cpld_stream_rx_set_decimation(const uint_fast8_t skip_n);
#endif//__SGPIO_H__ #endif//__SGPIO_H__

BIN
firmware/cpld/sgpio_if/default.xsvf Executable file → Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
Programmer Jedec Bit Map Programmer Jedec Bit Map
Date Extracted: Sat Sep 21 23:00:53 2013 Date Extracted: Tue Nov 19 16:33:01 2013
QF25812* QF25812*
QP100* QP100*
@ -12,20 +12,20 @@ N DEVICE XC2C64A-7-VQ100*
Note Block 0 * Note Block 0 *
Note Block 0 ZIA * Note Block 0 ZIA *
L000000 1111111111111111* L000000 1111111011100111*
L000016 1111111111111111* L000016 1110101011111111*
L000032 1111111011110011* L000032 1111111011110011*
L000048 1111111111111111* L000048 1111111111111111*
L000064 1111111111111111* L000064 1111111111111111*
L000080 1111111011010111* L000080 1111111011100111*
L000096 1111111111111111* L000096 1110101011111111*
L000112 1111111111111111* L000112 1111111111111111*
L000128 1111111111111111* L000128 1110101011111111*
L000144 1111111111111111* L000144 1111111111111111*
L000160 1111111111111111* L000160 1111111111111111*
L000176 1111111111111111* L000176 1111111111111111*
L000192 1111111111111111* L000192 1111111111111111*
L000208 1111111111111111* L000208 1111111011100111*
L000224 1111111111111111* L000224 1111111111111111*
L000240 1111111111111111* L000240 1111111111111111*
L000256 1111111111111111* L000256 1111111111111111*
@ -54,11 +54,11 @@ L000608 1111111111111111*
L000624 1111111111111111* L000624 1111111111111111*
Note Block 0 PLA AND array * Note Block 0 PLA AND array *
L000640 11110111110111111111111111111111111111111111111111111111111111111111111111111111* L000640 11010111111101110111111111011111111111111111111111111111111111111111111111111111*
L000720 11111011111011111111111111111111111111111111111111111111111111111111111111111111* L000720 11111011111111111111111111111111111111111111111111111111111111111111111111111111*
L000800 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L000800 01011111111101110111111111111111111111111111111111111111111111111111111111111111*
L000880 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L000880 11010111111011110111111111111111111111111111111111111111111111111111111111111111*
L000960 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L000960 11010111111110110111111111111111111111111111111111111111111111111111111111111111*
L001040 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L001040 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L001120 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L001120 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L001200 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L001200 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
@ -109,14 +109,14 @@ L004720 111111111111111111111111111111111111111111111111111111111111111111111111
L004800 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L004800 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L004880 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L004880 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L004960 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L004960 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L005040 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L005040 11110111111111110111111111111111111111111111111111111111111111111111111111111111*
Note Block 0 PLA OR array * Note Block 0 PLA OR array *
L005120 1111111111111110* L005120 1111111111111110*
L005136 1111111111111110* L005136 1111111111111101*
L005152 1111111111111111* L005152 1111111111111101*
L005168 1111111111111111* L005168 1111111111111011*
L005184 1111111111111111* L005184 1111111111111011*
L005200 1111111111111111* L005200 1111111111111111*
L005216 1111111111111111* L005216 1111111111111111*
L005232 1111111111111111* L005232 1111111111111111*
@ -184,9 +184,9 @@ L006259 000001111001111110011111100*
L006286 000001111001111110011111100* L006286 000001111001111110011111100*
L006313 000001111001111110011111100* L006313 000001111001111110011111100*
L006340 000001111001111110011111100* L006340 000001111001111110011111100*
L006367 000001111001111110011111100* L006367 000101111101110110011111100*
L006394 000001111001111110011111100* L006394 000101111101110111111111100*
L006421 000001111001100110011111101* L006421 000101111101110111011111100*
Note Block 1 * Note Block 1 *
Note Block 1 ZIA * Note Block 1 ZIA *
@ -374,15 +374,15 @@ L012928 1111111011110011*
L012944 1111111111111111* L012944 1111111111111111*
L012960 1111111010110111* L012960 1111111010110111*
L012976 1111111011010111* L012976 1111111011010111*
L012992 1111111010110111* L012992 1110101011111111*
L013008 1111111011010111* L013008 1100111011111111*
L013024 1111111010110111* L013024 1110101011111111*
L013040 1111111010110111* L013040 1111111010110111*
L013056 1111111010110111* L013056 1111111010110111*
L013072 1111111011100111* L013072 1111111011010111*
L013088 1111111011010111* L013088 1111111010110111*
L013104 1111111111111111* L013104 1111111111111111*
L013120 1111111111111111* L013120 1111111010110111*
L013136 1111111011010111* L013136 1111111011010111*
L013152 1111111111111111* L013152 1111111111111111*
L013168 1111111111111111* L013168 1111111111111111*
@ -392,7 +392,7 @@ L013216 1111111111111111*
L013232 1111111111111111* L013232 1111111111111111*
L013248 1111111111111111* L013248 1111111111111111*
L013264 1111111111111111* L013264 1111111111111111*
L013280 1111111111111111* L013280 1111111011010111*
L013296 1111111111111111* L013296 1111111111111111*
L013312 1111111111111111* L013312 1111111111111111*
L013328 1111111111111111* L013328 1111111111111111*
@ -400,7 +400,7 @@ L013344 1111111111111111*
L013360 1111111111111111* L013360 1111111111111111*
L013376 1111111111111111* L013376 1111111111111111*
L013392 1111111111111111* L013392 1111111111111111*
L013408 1111111111111111* L013408 1111111011100111*
L013424 1111111111111111* L013424 1111111111111111*
L013440 1111111111111111* L013440 1111111111111111*
L013456 1111111111111111* L013456 1111111111111111*
@ -410,27 +410,27 @@ L013504 1111111111111111*
L013520 1111111111111111* L013520 1111111111111111*
Note Block 2 PLA AND array * Note Block 2 PLA AND array *
L013536 11111011111111111101111111111111111111111111111111111111111111111111111111111111* L013536 11110111110111111111111111111111111111111111111111111111111111111011111111111111*
L013616 11110111111111111110111111111111111111111111111111111111111111111111111111111111* L013616 11011011111001110111111111111111111111111111111111111111111111111011111111111111*
L013696 11111011111101111111111111111111111111111111111111111111111111111111111111111111* L013696 11110111111011011111111111111111111111111111111111111111111111111111111111111111*
L013776 11110111111110111111111111111111111111111111111111111111111111111111111111111111* L013776 11111011110111011111111111111111111111111111111111111111111111111111111111111111*
L013856 11111011011111111111111111111111111111111111111111111111111111111111111111111111* L013856 11111011111111111101111111111111111111111111111111111111111111111111111111111111*
L013936 11110111101111111111111111111111111111111111111111111111111111111111111111111111* L013936 11110111111111111110111111111111111111111111111111111111111111111111111111111111*
L014016 11111011111111110111111111111111111111111111111111111111111111111111111111111111* L014016 11111011111111111111111111110111111111111111111111111111111111111111111111111111*
L014096 11111111111011111111111111111111111111111111111111111111111111111111111111111111* L014096 11111111111011111111111111111111111111111111111111111111111111111111111111111111*
L014176 11110111111111111011111111111111111111111111111111111111111111111111111111111111* L014176 11110111111111111111111111111011111111111111111111111111111111111111111111111111*
L014256 11111011111111111111011111111111111111111111111111111111111111111111111111111111* L014256 11111011011111111111111111111111111111111111111111111111111111111111111111111111*
L014336 11011111111111111111111111111111111111111111111111111111111111111111111111111111* L014336 11110111101111111111111111111111111111111111111111111111111111111111111111111111*
L014416 11110111111111111111101111111111111111111111111111111111111111111111111111111111* L014416 11111011111111111111111101111111111111111111111111111111111111111111111111111111*
L014496 11111011111111011111111111111111111111111111111111111111111111111111111111111111* L014496 11110111111111111111111110111111111111111111111111111111111111111111111111111111*
L014576 11110111111111101111111111111111111111111111111111111111111111111111111111111111* L014576 11111011111111111111011111111111111111111111111111111111111111111111111111111111*
L014656 11111011111111111111111111111101111111111111111111111111111111111111111111111111* L014656 11110111111111111111101111111111111111111111111111111111111111111111111111111111*
L014736 11110111111111111111111111111110111111111111111111111111111111111111111111111111* L014736 11111011111111111111110111111111111111111111111111111111111111111111111111111111*
L014816 11111011111111111111111101111111111111111111111111111111111111111111111111111111* L014816 11110111111111111111111011111111111111111111111111111111111111111111111111111111*
L014896 11110111111111111111111110111111111111111111111111111111111111111111111111111111* L014896 11111011111111111111111111111101111111111111111111111111111111111111111111111111*
L014976 11111111111111111111111011111111111111111111111111111111111111111111111111111111* L014976 11110111111111111111111111111110111111111111111111111111111111111111111111111111*
L015056 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L015056 11111011111111111111111111111111111111111111111101111111111111111111111111111111*
L015136 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L015136 11110111111111111111111111111111111111111111111110111111111111111111111111111111*
L015216 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L015216 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L015296 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L015296 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
L015376 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L015376 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
@ -468,27 +468,27 @@ L017856 111111111111111111111111111111111111111111111111111111111111111111111111
L017936 11111111111111111111111111111111111111111111111111111111111111111111111111111111* L017936 11111111111111111111111111111111111111111111111111111111111111111111111111111111*
Note Block 2 PLA OR array * Note Block 2 PLA OR array *
L018016 1101111111111111* L018016 0111111111111111*
L018032 1101111111111111* L018032 0111111111111111*
L018048 1111011111111111* L018048 0111111111111111*
L018064 1111011111111111* L018064 0111111111111111*
L018080 1111111101111111* L018080 1101111111111111*
L018096 1111111101111111* L018096 1101111111111111*
L018112 1111111110111111* L018112 1111011111111111*
L018128 1111111111111111* L018128 1111111111111111*
L018144 1111111110111111* L018144 1111011111111111*
L018160 1111111111111011* L018160 1111111101111111*
L018176 1111111111111111* L018176 1111111101111111*
L018192 1111111111111011* L018192 1111111110111111*
L018208 1111111111111101* L018208 1111111110111111*
L018224 1111111111111101* L018224 1111111111111011*
L018240 1111111111111110* L018240 1111111111111011*
L018256 1111111111111110* L018256 1111111111111101*
L018272 1111110111111111* L018272 1111111111111101*
L018288 1111110111111111* L018288 1111111111111110*
L018304 0111111111111111* L018304 1111111111111110*
L018320 1111111111111111* L018320 1111110111111111*
L018336 1111111111111111* L018336 1111110111111111*
L018352 1111111111111111* L018352 1111111111111111*
L018368 1111111111111111* L018368 1111111111111111*
L018384 1111111111111111* L018384 1111111111111111*
@ -527,12 +527,12 @@ L018896 1111111111111111*
Note Block 2 I/O Macrocell Configuration 27 bits * Note Block 2 I/O Macrocell Configuration 27 bits *
N Aclk ClkOp Clk:2 ClkFreq R:2 P:2 RegMod:2 INz:2 FB:2 InReg St XorIn:2 RegCom Oe:4 Tm Slw Pu* N Aclk ClkOp Clk:2 ClkFreq R:2 P:2 RegMod:2 INz:2 FB:2 InReg St XorIn:2 RegCom Oe:4 Tm Slw Pu*
L018912 000101111111111100000000011* L018912 000101111001110100000000011*
L018939 000001111001111110011111100* L018939 000001111000011100011111100*
L018966 000101111000011101101000111* L018966 000101111000011101101000111*
L018993 000001111001111110011111100* L018993 000001111000011100011111100*
L019020 000101111000011101101000111* L019020 000101111000011101101000111*
L019047 000001111001111110011111100* L019047 000001111000011100011111100*
L019074 000101111000011100001000111* L019074 000101111000011100001000111*
L019101 000001111000011100011111100* L019101 000001111000011100011111100*
L019128 000101111000011101101000111* L019128 000101111000011101101000111*
@ -753,5 +753,5 @@ L025810 0*
Note I/O Bank 1 Vcco * Note I/O Bank 1 Vcco *
L025811 0* L025811 0*
C1565* C0D64*
AA4D AA1A

View File

@ -56,6 +56,10 @@ NET "HOST_DATA<2>" LOC="74" |IOSTANDARD=LVCMOS33 | SLEW=SLOW | TNM=to_host;
NET "HOST_DATA<1>" LOC="79" |IOSTANDARD=LVCMOS33 | SLEW=SLOW | TNM=to_host; NET "HOST_DATA<1>" LOC="79" |IOSTANDARD=LVCMOS33 | SLEW=SLOW | TNM=to_host;
NET "HOST_DATA<0>" LOC="89" |IOSTANDARD=LVCMOS33 | SLEW=SLOW | TNM=to_host; NET "HOST_DATA<0>" LOC="89" |IOSTANDARD=LVCMOS33 | SLEW=SLOW | TNM=to_host;
NET "HOST_DECIM_SEL<2>" LOC="78" |IOSTANDARD=LVCMOS33;
NET "HOST_DECIM_SEL<1>" LOC="81" |IOSTANDARD=LVCMOS33;
NET "HOST_DECIM_SEL<0>" LOC="90" |IOSTANDARD=LVCMOS33;
TIMEGRP "adc_data" OFFSET = IN 16 ns BEFORE "CODEC_X2_CLK"; TIMEGRP "adc_data" OFFSET = IN 16 ns BEFORE "CODEC_X2_CLK";
TIMEGRP "dac_data" OFFSET = OUT 15 ns AFTER "CODEC_X2_CLK"; TIMEGRP "dac_data" OFFSET = OUT 15 ns AFTER "CODEC_X2_CLK";

View File

@ -21,6 +21,7 @@
library IEEE; library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
library UNISIM; library UNISIM;
use UNISIM.vcomponents.all; use UNISIM.vcomponents.all;
@ -31,6 +32,7 @@ entity top is
HOST_CAPTURE : out std_logic; HOST_CAPTURE : out std_logic;
HOST_DISABLE : in std_logic; HOST_DISABLE : in std_logic;
HOST_DIRECTION : in std_logic; HOST_DIRECTION : in std_logic;
HOST_DECIM_SEL : in std_logic_vector(2 downto 0);
DA : in std_logic_vector(7 downto 0); DA : in std_logic_vector(7 downto 0);
DD : out std_logic_vector(9 downto 0); DD : out std_logic_vector(9 downto 0);
@ -57,6 +59,10 @@ architecture Behavioral of top is
signal data_from_host_i : std_logic_vector(7 downto 0); signal data_from_host_i : std_logic_vector(7 downto 0);
signal data_to_host_o : std_logic_vector(7 downto 0); signal data_to_host_o : std_logic_vector(7 downto 0);
signal decimate_count : std_logic_vector(2 downto 0) := "111";
signal decimate_sel_i : std_logic_vector(2 downto 0);
signal decimate_en : std_logic;
begin begin
------------------------------------------------ ------------------------------------------------
@ -88,8 +94,25 @@ begin
transfer_direction_i <= to_dac when HOST_DIRECTION = '1' transfer_direction_i <= to_dac when HOST_DIRECTION = '1'
else from_adc; else from_adc;
decimate_sel_i <= HOST_DECIM_SEL;
------------------------------------------------ ------------------------------------------------
decimate_en <= '1' when decimate_count = "111" else '0';
process(host_clk_i)
begin
if rising_edge(host_clk_i) then
if codec_clk_i = '1' then
if decimate_count = "111" then
decimate_count <= decimate_sel_i;
else
decimate_count <= decimate_count + 1;
end if;
end if;
end if;
end process;
process(host_clk_i) process(host_clk_i)
begin begin
if rising_edge(host_clk_i) then if rising_edge(host_clk_i) then
@ -123,7 +146,7 @@ begin
end if; end if;
else else
if codec_clk_i = '0' then if codec_clk_i = '0' then
host_data_capture_o <= host_data_enable_i; host_data_capture_o <= host_data_enable_i and decimate_en;
end if; end if;
end if; end if;
end if; end if;

View File

@ -32,12 +32,11 @@ ARCHITECTURE behavior OF top_tb IS
HOST_CAPTURE : OUT std_logic; HOST_CAPTURE : OUT std_logic;
HOST_DISABLE : IN std_logic; HOST_DISABLE : IN std_logic;
HOST_DIRECTION : IN std_logic; HOST_DIRECTION : IN std_logic;
HOST_DECIM_SEL : IN std_logic_vector(2 downto 0);
DA : IN std_logic_vector(7 downto 0); DA : IN std_logic_vector(7 downto 0);
DD : OUT std_logic_vector(9 downto 0); DD : OUT std_logic_vector(9 downto 0);
CODEC_CLK : IN std_logic; CODEC_CLK : IN std_logic;
CODEC_X2_CLK : IN std_logic; CODEC_X2_CLK : IN std_logic
B1AUX : INOUT std_logic_vector(16 downto 9);
B2AUX : INOUT std_logic_vector(16 downto 1)
); );
END COMPONENT; END COMPONENT;
@ -47,11 +46,10 @@ ARCHITECTURE behavior OF top_tb IS
signal CODEC_X2_CLK : std_logic := '0'; signal CODEC_X2_CLK : std_logic := '0';
signal HOST_DISABLE : std_logic := '1'; signal HOST_DISABLE : std_logic := '1';
signal HOST_DIRECTION : std_logic := '0'; signal HOST_DIRECTION : std_logic := '0';
signal HOST_DECIM_SEL : std_logic_vector(2 downto 0) := "010";
--BiDirs --BiDirs
signal HOST_DATA : std_logic_vector(7 downto 0); signal HOST_DATA : std_logic_vector(7 downto 0);
signal B1AUX : std_logic_vector(16 downto 9);
signal B2AUX : std_logic_vector(16 downto 1);
--Outputs --Outputs
signal DD : std_logic_vector(9 downto 0); signal DD : std_logic_vector(9 downto 0);
@ -64,12 +62,11 @@ begin
HOST_CAPTURE => HOST_CAPTURE, HOST_CAPTURE => HOST_CAPTURE,
HOST_DISABLE => HOST_DISABLE, HOST_DISABLE => HOST_DISABLE,
HOST_DIRECTION => HOST_DIRECTION, HOST_DIRECTION => HOST_DIRECTION,
HOST_DECIM_SEL => HOST_DECIM_SEL,
DA => DA, DA => DA,
DD => DD, DD => DD,
CODEC_CLK => CODEC_CLK, CODEC_CLK => CODEC_CLK,
CODEC_X2_CLK => CODEC_X2_CLK, CODEC_X2_CLK => CODEC_X2_CLK
B1AUX => B1AUX,
B2AUX => B2AUX
); );
clk_process :process clk_process :process
@ -90,11 +87,11 @@ begin
begin begin
wait until rising_edge(CODEC_CLK); wait until rising_edge(CODEC_CLK);
wait for 9 ns; wait for 9 ns;
DA <= (others => '0'); DA <= "00000000";
wait until falling_edge(CODEC_CLK); wait until falling_edge(CODEC_CLK);
wait for 9 ns; wait for 9 ns;
DA <= (others => '1'); DA <= "00000001";
end process; end process;