2021-11-16 19:39:44 索炜达电子 1149
项目编号:E2268
文件大小:92M
源码说明:带中文注释
开发环境:VHDL
简要概述
该项目完全用VHDL编写,使用Altera Quartus 13.0 sp1软件。所有模块都有一个测试台或一个刺激文件。
此外,最后一步是将PID控制器IP集成到avalon总线和Nios软核处理器。
请查看根文件夹中的方框图,以便更好地了解该项目。
项目详情:
在这个项目中,我试图遵循VHDL开发的良好实践,例如Volnei Pedroni和Rafael Cancian在其示例中应用的相同实践(下一状态组合逻辑、内存元素即触发器、输出逻辑)。
例如,在所有编写的模块中,您不会看到在下一状态FSM中推断出的触发器。
当前状态:
PID控制器正在Modelsim仿真中运行,但在DE-10板上仍然不起作用。
avalon总线的包装器已经编写好了,我只需要在测试之前让项目在板上工作。
目录│文件列表:
└ 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