基于FPGA的系统构架和编程有感

来源:互联网 发布:通达信软件 编辑:程序博客网 时间:2024/05/05 23:13

                基于FPGA的系统构架和编程有感 

    在进入Ultrawise精英班以来,也算有一个多月了,而其中大多数的时间即为花在FPGA上,从刚开始的完全无知到逐渐了解,再到着手编程,此过程也算难熬,但如今总算对FPGA开发有一点认识。

     该开始只是照着试验文档一步一步做,只是对于FPGA开发工具ISE的认识,如今结合一个项目来自己编程并验证,才算是真正感受到FPGA编程的乐趣和其中的奥妙。本周在许老师的带领下,总体设计是一个基于VGA接口的图形计算器的项目设计。按计划当然是一步一步来,也就是分成好几个模块独立设计。而本周的任务是包括ps2的读键盘操作,音频信号的处理,还有picobraze的编程设计等。

    通过本周的训练,算是实实在在的学到了知识。要设计出一个基于ps2协议的读键盘数据操作,当然就得了解什么是ps2协议,键盘发送数据和接收数据的时钟关系等知识。要编写声音处理信号的程序,当然就得弄懂音频文件的来源以及作为.rom文件后的意义。同样,要学会picobraze的编程,就得掌握picobraze的汇编指令以及它的逻辑资源分布。而这些东西只有在应用过一次后才能掌握和牢记。

    有时候在想:ISE编程中的例化是否就等同于C语言里的子函数调用。而仔细想想,又有很大的不同。C语言的子函数调用是要有主函数作为基础的,子函数之所以称为子函数当然是有“子”的性质。这些子函数声明于主函数mian,但是各子函数之间并没有很大意义上的联系,都是通过主函数调用子涵是,完后则释放。子函数之间没有互相调用。而Verilog编程中的模块间的例化则不同,虽然同样存在一个联系所有模块(可以类比于C函数的Function)的顶层文件(如:top.v,此类似于main.c的功能。但是top.v将所有模块例化进来以后就大不一样。期间工作时主要的信号交换是在子模块与子模块之间完成的。这一点是与c语言的函数调用根本区别。Verilog的例化可以实现各模块之间的无缝连接,这在系统设计时是非常重要的一个应用。

    另外,picobraze的编程我也是颇有所思。类比于51单片机的汇编编程来讲,可谓简单的多,只有49条汇编指令,2个重要标志位(zeroCarry)。这不但简单易学,更重要的是在编程时能够让你思维更加清晰。因为有的时候你只能走一条路,才能到达目的地。Picobraze是一个软核,类似于这样的软核当然还有很多,picobraze8bit处理器,而micobraze32bit处理器。这样第一个占用FPGA很少逻辑资源的软核却可以做很多事。因此在系统构架时是否要应用picobraze等软核是一个值得考虑的问题。而更超乎想象的,要是自己能够设计出一个更有项目针对性的既节省逻辑资源又效率高的软核,那将是一件意义重大的事情。         

    FPGA是因为是一张白纸,所以可以探索和创造的地方太多了,一切还在继续。。。。。                                              

原创粉丝点击