• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

AD7321代碼12位ADC,SPI接口模數(shù)轉(zhuǎn)換連接DAC0832輸出

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-23102R2255K56.doc

共1個文件

名稱:AD7321代碼12位ADC,SPI接口模數(shù)轉(zhuǎn)換連接DAC0832輸出(代碼在文末付費(fèi)下載)

軟件:QuartusII

語言:VHDL

代碼功能:

使用VHDL語言編寫代碼,實現(xiàn)AD7321的控制,將模擬信號轉(zhuǎn)換為數(shù)字信號,再經(jīng)過處理后,將數(shù)據(jù)通過DAC0832轉(zhuǎn)換為模擬信號輸出。

AD7321輸入,(2000-輸入)/6(仿真輸出=009),DAC0832輸出。

要求:有vhdl代碼(詳盡注釋),有fpga連線圖,有完整功能仿真結(jié)果,有方案分析。

演示視頻:

FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com

部分代碼展示

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--AD控制模塊,輸出011110011010
ENTITY?AD7321?IS
???PORT?(
??????clk?????:?IN?STD_LOGIC;--時鐘
??????rst?????:?IN?STD_LOGIC;--復(fù)位
??????CS_n????:?OUT?STD_LOGIC;--AD控制信號
??????SCLK????:?OUT?STD_LOGIC;--AD控制信號
??????DOUT????:?IN?STD_LOGIC;--AD控制信號
??????DIN?????:?OUT?STD_LOGIC;--AD控制信號
??????DB??????:?OUT?STD_LOGIC_VECTOR(11?DOWNTO?0)--輸出AD值
???);
END?AD7321;
ARCHITECTURE?behaval?OF?AD7321?IS
???TYPE?State_type?IS?(s_init,?s_cs_h,?s_sclk,?s_end);??--?定義狀態(tài)
???SIGNAL?state?:?State_type;
???SIGNAL?cs_h_cnt?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";--CS計數(shù)
???SIGNAL?sclk_cnt?:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";--sclk計數(shù)
BEGIN
--狀態(tài)機(jī)控制
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN--復(fù)位
?????????state?<=?s_init;
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN--時鐘上升沿
?????????CASE?state?IS
????????????WHEN?s_init?=>--初始狀態(tài)
???????????????state?<=?s_cs_h;
????????????WHEN?s_cs_h?=>--cS高電平狀態(tài)
???????????????IF?(cs_h_cnt?>=?"1010")?THEN--計數(shù)10個時鐘
??????????????????state?<=?s_sclk;
???????????????END?IF;
????????????WHEN?s_sclk?=>--SCLK狀態(tài)
???????????????IF?(sclk_cnt?>=?"00100000")?THEN--計數(shù)32時鐘
??????????????????state?<=?s_end;--結(jié)束
???????????????END?IF;
????????????WHEN?s_end?=>--結(jié)束狀態(tài)
???????????????state?<=?s_init;
????????????WHEN?OTHERS?=>
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???--根據(jù)狀態(tài)控制CS信號
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN
?????????CS_n?<=?'1';--復(fù)位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN--時鐘上升沿
?????????IF?(state?=?s_cs_h)?THEN--CS高電平狀態(tài)
????????????CS_n?<=?'1';--輸出高電平
?????????ELSIF?(state?=?s_sclk)?THEN--SCLK狀態(tài)
????????????CS_n?<=?'0';--輸出低電平
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--根據(jù)狀態(tài)控制SCLK信號
???PROCESS?(clk,?rst)
???BEGIN
??????IF?(rst?=?'1')?THEN
?????????SCLK?<=?'1';--復(fù)位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN--時鐘上升沿
?????????IF?(state?=?s_sclk)?THEN--SCLK狀態(tài)
????????????SCLK?<=?NOT(sclk_cnt(0));--SCLK輸出sclk_cnt(0)取反信號作為SCLK
?????????ELSIF?(state?=?s_end)?THEN
????????????SCLK?<=?'1';
?????????END?IF;
??????END?IF;
???END?PROCESS;

設(shè)計文檔:

1. 工程文件

2. 程序文件

連線圖

3. 程序編譯

4. RTL圖

5. 仿真圖

  • 1-23102R2255K56.doc
    下載

相關(guān)推薦