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