将输出接口连接到DAC-VHDL

时间:2019-02-14 10:59:09

标签: vhdl fpga dac

我正在尝试将FPGA的输出连接到DAC。我正在使用PmodDA2 DAC。我遇到的麻烦是正在研究如何在每个时钟周期将16位寄存器的数据输出为1位。

我研究了时序图,并了解到CS需要在数据传输开始之前发送一个脉冲。

我尝试使用必要的重置和其他功能,这些设计适用于整个设计。

我尝试实现一个在0到16/17之间循环的计数,当计数开始时,它将CS设置为高电平并开始传输。但是我不认为这绝对是正确的方法。

 architecture Behavioral of DAC is
 signal count : integer range 0 to 15;
 signal selected : std_logic;
 signal data_storage : std_logic_vector(15 downto 0);

 begin

 process(D_DAC, CE_DAC, RES_DAC, RES_DAC, data_storage)
 begin
 if RES_DAC = '1' then
    data_storage <= "0000000000000000";
end if;

 if rising_edge(CLK_DAC) then
        if CE_DAC = '1' then
        data_storage <= D_DAC;          
        end if;

    end if;
    end if;


end process ;
CS_DAC <= CE_DAC;
SCLK_DAC <= CLK_DAC;
DATA1_DAC <= data_storage;
end Behavioral;

我对此感到非常困惑。

我将不胜感激。

************************编辑********************** **

我还有另外一个办法来实现计数器...

process(D_DAC, CE_DAC, CLK_DAC, RES_DAC, data_storage)
 begin
     if RES_DAC = '1' then
        data_storage <= "0000000000000000";
        cound <= 0;
        selected <= '0';
    elsif rising_edge(CLK_DAC) then 
        if CE_DAC = '1' then                
            if count = 0 then
                selected <= '1';
            end if;
            if selected = 1  then
                if count = 15 then
                    count <= 0;
                    selected <= '0';
                else
                count <= count + 1;
                data_storage <= D_DAC;          
        end if;
        end if;
    end if;
    end if;

end process ;
CS_DAC <= CE_DAC;
SCLK_DAC <= CLK_DAC;
DATA1_DAC <= data_storage;
end Behavioral;

0 个答案:

没有答案