2021-11-16 19:39:44 索煒達(dá)電子 2028
項目編號:E2268
文件大小:92M
源碼說明:帶中文注釋
開發(fā)環(huán)境:VHDL
簡要概述
該項目完全用VHDL編寫,使用Altera Quartus 13.0 sp1軟件。所有模塊都有一個測試臺或一個刺激文件。
此外,最后一步是將PID控制器IP集成到avalon總線和Nios軟核處理器。
請查看根文件夾中的方框圖,以便更好地了解該項目。
項目詳情:
在這個項目中,我試圖遵循VHDL開發(fā)的良好實踐,例如Volnei Pedroni和Rafael Cancian在其示例中應(yīng)用的相同實踐(下一狀態(tài)組合邏輯、內(nèi)存元素即觸發(fā)器、輸出邏輯)。
例如,在所有編寫的模塊中,您不會看到在下一狀態(tài)FSM中推斷出的觸發(fā)器。
當(dāng)前狀態(tài):
PID控制器正在Modelsim仿真中運行,但在DE-10板上仍然不起作用。
avalon總線的包裝器已經(jīng)編寫好了,我只需要在測試之前讓項目在板上工作。
目錄│文件列表:
└ pid-fpga
│ blocks-diagram.png
├ avalon_wrapper
│ │ avalon_wrapper.qpf
│ │ avalon_wrapper.qsf
│ │ avalon_wrapper.qws
│ │ avalon_wrapper.sdc
│ │ avalon_wrapper.vhd
│ │ avalon_wrapper.vhd.bak
│ │ pid_controller_hw.tcl
│ │ pid_controller_hw.tcl~
│ ├ .qsys_edit
│ │ │ filters.xml
│ │ └ preferences.xml
│ ├ db
│ │ │ add_sub_01h.tdf
│ │ │ add_sub_08g.tdf
│ │ │ add_sub_27g.tdf
│ │ │ add_sub_2cj.tdf
│ │ │ add_sub_38g.tdf
│ │ │ add_sub_4ti.tdf
│ │ │ add_sub_5ti.tdf
│ │ │ add_sub_8ng.tdf
│ │ │ add_sub_8ti.tdf
│ │ │ add_sub_9ui.tdf
│ │ │ add_sub_bsi.tdf
│ │ │ add_sub_cmg.tdf
│ │ │ add_sub_edj.tdf
│ │ │ add_sub_egg.tdf
│ │ │ add_sub_gvd.tdf
│ │ │ add_sub_hvg.tdf
│ │ │ add_sub_kgi.tdf
│ │ │ add_sub_kui.tdf
│ │ │ add_sub_qsk.tdf
│ │ │ add_sub_ubj.tdf
│ │ │ add_sub_vdk.tdf
│ │ │ altsyncram_7461.tdf
│ │ │ avalon_wrapper.(0).cnf.cdb
│ │ │ avalon_wrapper.(0).cnf.hdb
│ │ │ avalon_wrapper.(1).cnf.cdb
│ │ │ avalon_wrapper.(1).cnf.hdb
│ │ │ avalon_wrapper.(10).cnf.cdb
│ │ │ avalon_wrapper.(10).cnf.hdb
│ │ │ avalon_wrapper.(100).cnf.cdb
│ │ │ avalon_wrapper.(100).cnf.hdb
│ │ │ avalon_wrapper.(101).cnf.cdb
│ │ │ avalon_wrapper.(101).cnf.hdb
│ │ │ avalon_wrapper.(102).cnf.cdb
│ │ │ avalon_wrapper.(102).cnf.hdb
│ │ │ avalon_wrapper.(103).cnf.cdb
│ │ │ avalon_wrapper.(103).cnf.hdb
│ │ │ avalon_wrapper.(104).cnf.cdb
│ │ │ avalon_wrapper.(104).cnf.hdb
│ │ │ avalon_wrapper.(105).cnf.cdb
│ │ │ avalon_wrapper.(105).cnf.hdb
│ │ │ avalon_wrapper.(106).cnf.cdb
│ │ │ avalon_wrapper.(106).cnf.hdb
│ │ │ avalon_wrapper.(107).cnf.cdb
│ │ │ avalon_wrapper.(107).cnf.hdb
│ │ │ avalon_wrapper.(108).cnf.cdb
│ │ │ avalon_wrapper.(108).cnf.hdb
│ │ │ avalon_wrapper.(109).cnf.cdb
│ │ │ avalon_wrapper.(109).cnf.hdb
│ │ │ avalon_wrapper.(11).cnf.cdb
│ │ │ avalon_wrapper.(11).cnf.hdb
│ │ │ avalon_wrapper.(110).cnf.cdb
│ │ │ avalon_wrapper.(110).cnf.hdb
│ │ │ avalon_wrapper.(111).cnf.cdb
│ │ │ avalon_wrapper.(111).cnf.hdb
│ │ │ avalon_wrapper.(112).cnf.cdb
│ │ │ avalon_wrapper.(112).cnf.hdb
│ │ │ avalon_wrapper.(113).cnf.cdb
│ │ │ avalon_wrapper.(113).cnf.hdb
│ │ │ avalon_wrapper.(114).cnf.cdb
│ │ │ avalon_wrapper.(114).cnf.hdb
│ │ │ avalon_wrapper.(115).cnf.cdb
│ │ │ avalon_wrapper.(115).cnf.hdb
│ │ │ avalon_wrapper.(116).cnf.cdb
│ │ │ avalon_wrapper.(116).cnf.hdb
│ │ │ avalon_wrapper.(117).cnf.cdb
│ │ │ avalon_wrapper.(117).cnf.hdb
│ │ │ avalon_wrapper.(118).cnf.cdb
│ │ │ avalon_wrapper.(118).cnf.hdb
│ │ │ avalon_wrapper.(119).cnf.cdb
│ │ │ avalon_wrapper.(119).cnf.hdb
│ │ │ avalon_wrapper.(12).cnf.cdb
│ │ │ avalon_wrapper.(12).cnf.hdb
│ │ │ avalon_wrapper.(120).cnf.cdb
│ │ │ avalon_wrapper.(120).cnf.hdb
│ │ │ avalon_wrapper.(121).cnf.cdb
│ │ │ avalon_wrapper.(121).cnf.hdb
│ │ │ avalon_wrapper.(122).cnf.cdb
│ │ │ avalon_wrapper.(122).cnf.hdb
│ │ │ avalon_wrapper.(123).cnf.cdb
│ │ │ avalon_wrapper.(123).cnf.hdb
│ │ │ avalon_wrapper.(124).cnf.cdb
│ │ │ avalon_wrapper.(124).cnf.hdb
│ │ │ avalon_wrapper.(13).cnf.cdb
│ │ │ avalon_wrapper.(13).cnf.hdb
│ │ │ avalon_wrapper.(14).cnf.cdb
│ │ │ avalon_wrapper.(14).cnf.hdb
│ │ │ avalon_wrapper.(15).cnf.cdb
│ │ │ avalon_wrapper.(15).cnf.hdb
│ │ │ avalon_wrapper.(16).cnf.cdb
│ │ │ avalon_wrapper.(16).cnf.hdb
│ │ │ avalon_wrapper.(17).cnf.cdb
│ │ │ avalon_wrapper.(17).cnf.hdb
│ │ │ avalon_wrapper.(18).cnf.cdb
│ │ │ avalon_wrapper.(18).cnf.hdb
│ │ │ avalon_wrapper.(19).cnf.cdb
│ │ │ avalon_wrapper.(19).cnf.hdb
│ │ │ avalon_wrapper.(2).cnf.cdb
│ │ │ avalon_wrapper.(2).cnf.hdb
│ │ │ avalon_wrapper.(20).cnf.cdb
│ │ │ avalon_wrapper.(20).cnf.hdb
│ │ │ avalon_wrapper.(21).cnf.cdb
│ │ │ avalon_wrapper.(21).cnf.hdb
│ │ │ avalon_wrapper.(22).cnf.cdb
│ │ │ avalon_wrapper.(22).cnf.hdb
│ │ │ avalon_wrapper.(23).cnf.cdb
│ │ │ avalon_wrapper.(23).cnf.hdb
│ │ │ avalon_wrapper.(24).cnf.cdb
│ │ │ avalon_wrapper.(24).cnf.hdb
│ │ │ avalon_wrapper.(25).cnf.cdb
│ │ │ avalon_wrapper.(25).cnf.hdb
│ │ │ avalon_wrapper.(26).cnf.cdb
│ │ │ avalon_wrapper.(26).cnf.hdb
│ │ │ avalon_wrapper.(27).cnf.cdb
│ │ │ avalon_wrapper.(27).cnf.hdb
│ │ │ avalon_wrapper.(28).cnf.cdb
│ │ │ avalon_wrapper.(28).cnf.hdb
│ │ │ avalon_wrapper.(29).cnf.cdb
│ │ │ avalon_wrapper.(29).cnf.hdb
│ │ │ avalon_wrapper.(3).cnf.cdb
│ │ │ avalon_wrapper.(3).cnf.hdb
│ │ │ avalon_wrapper.(30).cnf.cdb
│ │ │ avalon_wrapper.(30).cnf.hdb
│ │ │ avalon_wrapper.(31).cnf.cdb
│ │ │ avalon_wrapper.(31).cnf.hdb
│ │ │ avalon_wrapper.(32).cnf.cdb
│ │ │ avalon_wrapper.(32).cnf.hdb
│ │ │ avalon_wrapper.(33).cnf.cdb
│ │ │ avalon_wrapper.(33).cnf.hdb
│ │ │ avalon_wrapper.(34).cnf.cdb
│ │ │ avalon_wrapper.(34).cnf.hdb
│ │ │ avalon_wrapper.(35).cnf.cdb
│ │ │ avalon_wrapper.(35).cnf.hdb
│ │ │ avalon_wrapper.(36).cnf.cdb
│ │ │ avalon_wrapper.(36).cnf.hdb
│ │ │ avalon_wrapper.(37).cnf.cdb
│ │ │ avalon_wrapper.(37).cnf.hdb
│ │ │ avalon_wrapper.(38).cnf.cdb
│ │ │ avalon_wrapper.(38).cnf.hdb
│ │ │ avalon_wrapper.(39).cnf.cdb
│ │ │ avalon_wrapper.(39).cnf.hdb
│ │ │ avalon_wrapper.(4).cnf.cdb
│ │ │ avalon_wrapper.(4).cnf.hdb
│ │ │ avalon_wrapper.(40).cnf.cdb
│ │ │ avalon_wrapper.(40).cnf.hdb
│ │ │ avalon_wrapper.(41).cnf.cdb
│ │ │ avalon_wrapper.(41).cnf.hdb
│ │ │ avalon_wrapper.(42).cnf.cdb
│ │ │ avalon_wrapper.(42).cnf.hdb
│ │ │ avalon_wrapper.(43).cnf.cdb
│ │ │ avalon_wrapper.(43).cnf.hdb
│ │ │ avalon_wrapper.(44).cnf.cdb
│ │ │ avalon_wrapper.(44).cnf.hdb