前段时间,由于跟导师的沟通不够,一直到11月14号才拿到参赛板子BASYS。拿到板子的时候是很兴奋的,因为从此就可以实现一些自己的设计了,可以一直进行项目的开发,对我来说的确是一件美妙的事情!
拿到板子后,就在Digilent官网上下载了很多与设计相关的资料,不断熟悉BASYS设计板。整体来说还是比较顺利的。
可是,当用ISE编译一个小程序,来验证板子、熟悉板子时,出了一点小意外。就是FPGA器件的选择对了,但是没有注意芯片的封装形式,结果就是在引脚约束的时候出问题了。因为这个还专门去请教老师了,老师就给指出可能芯片的类型选择不对。之后我就在引脚约束界面里发现了封装形式弄错了,改完之后就OK了。当时就很高兴,终于知道板子怎么用了。
但是高兴不久,另外一个问题就出现了。当用前段时间就完成的设计程序(当时是用Quartus II编译的,并曾经用ModelSim仿真过,功能正确)在ISE上编译时,发现了很多麻烦。首先就是分频系数的输入问题。当时设计的时候将分频系数的整数部分和小数部分都定义成整数类型,用的描述语句是:
y,n: in integer range 0 to 99;
当时ISE在编译的时候将它译成了200百个输入,y<0>~y<99>和n<0>~n<99>,不知是什么原因。而且BASYS板子不支持整数输入,除非加上一个编码键盘和A/D转换器。
考虑到此,只好将输入改为二进制码啦。改动过程中,程序在编译时候出现很多错误,改了很久才完成。
另外一个问题是怎么样在BASYS板子上验证设计是正确的。可以有两种办法。
一是:直接将分频输出接到示波器或者频率计上,直接读数、观察结果,判断设计是否正确。
二是:另外用程序设计一个频率计的模块,将小数分频器模块的输出通过频率计来输出并显示,来判断设计是否正确。
第一种办法试过了,首先是输出引脚不好定义。因为BASYS板子上可供用户使用的引脚就不是很多。打算用6针的扩展连接器中的某一针来作为输出,但是发现不行。因为BASYS板子的6针的扩展连接器中的针脚没有接上拉电阻,输出驱动能力不足,在示波器上根本显示不了。
现在的办法就剩编写频率计来验证了。
第二种办法也有难点。首先就是分频系数不能很大,因为将输入分频系数改为二进制后,可供输入的引脚就不多,只有8个开关。然后就是显示不够,因为内部晶振最小是25MHZ,在分频系数小的情况下,分频后的信号输出频率还是很高的,有1M左右,就需要6~7个七段LED译码器,而BASYS板子只有4个。
现在的解决思路就是先对内部晶振的信号频率进行整数分频,再送到小数分频器进行小数分频,然后再送给频率计进行计频后输出显示。
所以还有很多工作要做,要在11月30号之前将设计准确无误的实现,还需要我们继续努力!!!!我们一直享受开发、创造的乐趣!!