end process ctrtt; process (clklk) begin
if (clklk'event and clklk='1')then if (s=\ s<=\ else s<=s+1; end if; end if;
end process;
process (s) begin
case s is
when \ when \ when \ when others=>null; end case; end process;
c1: frequency port map(reset,ttclk,ttsig,keepcou1,keepcou2,keepcou3); dis:display1 port map(jishu,clklk,del1,display); end one;
五、仿真截图
将dfre.vhd文件中的clk改成clk1k,并修改相应的位置,让dfre.vhd文件编译通过后,直接给clk1k输入1kHz信号,然后在程序中修改相应的输入测试信号,得到五个档位的相应仿真波形如下:
1、测试信号频率为250KHZ,周期为4us时仿真稳定后的图像如下:
2、测试信号频率为25KHz,周期为40us时,稳定后仿真波形图如下:
3、测试信号频率为5KHz,周期为200us时,波形仿真图如下:
4、测试信号周期为6ms,波形仿真图如下:
5、测试信号为2MHz时,波形仿真如下:
仿真结果与实验预期结果一致,软件实现了其相关功能。
六、软件硬件结合实现
1、打开QUARTUSII软件,新建一个工程。
2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。
3、按照实验原理和自己的想法,在VHDL编辑窗口编写上面的VHDL程序,。其具体的功能如下表23-2:
文件名称 完成功能 Frequency.vhd 在一定的闸门时间内计数所测信号的频率或周期 display.vhd 动态显示所测信号的频率或周期 dfre.vhd 频率计综合设计源文件
4、将自己编辑好的的程序进行编译仿真,并对程序的错误进行修改,最终通过编译。
5、编译仿真无误后,依照所用模块与FPGA的管脚连接表或参照用户手册附表进行管脚分配。分配完成后,再进行全编译一次,以使管脚分配生效。 管脚分配图如下:
6、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与 自己的编程思想一致。
7、观察发现实验结果与开始时实现功能一致,实验成功。当在软件程序里改变测试信 号的值,如后在硬件上实现,得到在误差范围内允许的正确读数。我想在程序部分 添加一锁存器实验结果会更好。
七、仿真及调试心得
仿真时把clk改成clk1k,并将相应部分修改,输入1KHz的时钟信号,这样比输入1MHz时钟信号要节省资源与时间。仿真时会出现各种情况与预期不一致,这时要认真读程序,然后修改程序,让仿真达到实验预期。有时,由于我们不太了解软件仿真的原理过程,可能在硬件上能实现其正确功能,但是在软件仿真时有个别地方错误,这样的情况下应该不是程序原理性错误,而是某个小地方不够完善,要改正这样的地方需要耐心与机遇。做学问就应该有一份持久的耐心。
八、总结
通过这次EDA课程设计我了解了测频的方法和原理;掌握了如何在FPGA内部设计多种功能模块,并通过综合设计实现其功能,并加深了对FPGA开发板的了解;掌握VHDL在测量模块设计方面的一些技巧,了解到了划分模块的一些经验,更提高了我VHDL语言的编程能力及阅读VHDL语言程序的能力,也更加了解了状态机的使用,及动态扫描显示译码的使用。
相关推荐: