名稱:ADI模數(shù)轉(zhuǎn)換AD7091的SPI驅(qū)動(dòng)(代碼在文末付費(fèi)下載)
軟件:QuartusII
語言:Verilog
代碼功能:
完成ADI單通道模數(shù)轉(zhuǎn)換器AD7091R的邏輯接口設(shè)計(jì)。1 MSPS、超低功耗、12-Bit ADC。
(1)實(shí)現(xiàn)全部邏輯接口功能,完成對(duì)外設(shè)AD7091R訪問;
(2)自行設(shè)計(jì)應(yīng)用場景,構(gòu)造相應(yīng)數(shù)據(jù);
(3)實(shí)現(xiàn)數(shù)據(jù)手冊(cè)中的最高數(shù)據(jù)率;
(4)硬件平臺(tái)以拿到手的開發(fā)板為準(zhǔn),自行完成設(shè)計(jì)與驗(yàn)證;
(5)完成全部流程:設(shè)計(jì)規(guī)范文檔、模塊設(shè)計(jì)、代碼輸入、功能仿真、約束與綜合、時(shí)序仿真、下載驗(yàn)證等。
演示視頻:
FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com
部分代碼展示
module?AD7091( input?clk,//50MHz input?reset,//高電平復(fù)位 //AD接口 output?reg?convst,//AD轉(zhuǎn)換信號(hào) output?reg?CS,//使能信號(hào) output?reg?SCLK,//AD時(shí)鐘 input?SDO,//AD數(shù)據(jù)輸入 output?reg?[11:0]?AD_data//AD轉(zhuǎn)換結(jié)果 ); reg?[2:0]?state=3'd0; parameter?s_idle=3'd0;//空閑狀態(tài) parameter?s_convst_low=3'd1; parameter?s_convst_high=3'd2; parameter?s_CS_low=3'd3; parameter?s_SCLK=3'd4; parameter?s_CS_high=3'd5; reg?[7:0]?convst_cnt=8'd0;//convst高電平時(shí)間計(jì)數(shù) reg?[3:0]?bit_cnt=4'd0;//bit計(jì)數(shù) reg?[3:0]?CS_high_cnt=4'd0;//CS高電平計(jì)數(shù) always@(posedge?clk?or?posedge?reset) if(reset) state<=3'd0; else case(state) s_idle: state<=s_convst_low; s_convst_low://轉(zhuǎn)換信號(hào)低電平狀態(tài) state<=s_convst_high; s_convst_high://轉(zhuǎn)換信號(hào)高電平狀態(tài)(等待t8最大650ns) if(convst_cnt>=8'd40)//等待800ns>650ns state<=s_CS_low; else state<=s_convst_high; s_CS_low:?//CS低電平狀態(tài) state<=s_SCLK; s_SCLK:?//SCLK讀數(shù)狀態(tài) if(bit_cnt>=4'd13)//計(jì)數(shù)13bit state<=s_CS_high; else state<=s_SCLK; s_CS_high: if(CS_high_cnt>=4'd4)//延遲4*20ns,tquiet至少50ns state<=s_idle; else state<=s_CS_high;
時(shí)序要求:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench
6. 仿真圖
附:AD7091R時(shí)序圖和時(shí)序表
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=217