原创 Altera编程杂谈

2011-3-14 20:33 2025 10 10 分类: FPGA/CPLD
        不同的FPGA内部有不同的结构,就好比不同的单片机有不同的处理器一样,不同的处理器指令不一样,这是因为每个处理器的指令都是根据处理器硬件设计的,那么FPGA也一样,不同的FPGA编写代码的风格或者说不同的FPGA我们编写的程序也应该不同,这里我不再争论FPGA语言究竟是VHDL好还是Verilog好,这就好比争论吃饭到底是用筷子好还是用刀叉好,却没有重点争论一下晚餐究竟吃什么。

        Altera在其QuartusII手册上有专门的一章讲解了在Altera器件上的代码风格,有兴趣的可以看一下,起初总以为这些只是说说而已,或者根本不会去看QuartusII手册,说实话,近两千页的手册的确是博大精深,再加上英文水平有限和google翻译也不怎么的,导致很多人都望而却步。但是静下心来看的话,里面的东西还是很有用的,当年张无忌练习九阳神功也花了5年时间。

        资料不再在这里翻译,这里就举几个有用的例子和几个小方法,可能在今后的设计中会用到。

        1:FPGA设计尽量采用同步设计,但不是只能用同步设计。编程之前请看一下器件手册,了解一下器件结构,毕竟四输入LUT和六输入LUT还是有区别的。不同的RAM结构也是不一样的。

        2:要会用原语,往往最简单的才是最好的,好比生活

        3:如果你的程序有多个时钟,请多多考虑或者多找点资料看看,不要急于设计。时钟是整个系统的心脏。

        4:如果你的程序有双口ram,请确定尽量不要同时读写同一个地址。不是说不可以同时读写,至少之前你要确定读写的数据。至于RAM上电后值以及初始化方法,可以见文档。不要以为verilog语法的initial或者$readmemb是不可综合的就不能用来设计FPGA的RAM了。

        5:最后一条,FPGA设计要学会偷程序,人家辛辛苦苦写好的IP都不要钱给你用了,你还不要,那就没话说了,或许有些人一直认为,自主研发最重要,那我只说一句,看你是偷到手里还是偷到心里……

最后补充一点,上一篇说到可以通过指令直接修改SOF文件或者POF文件。而不需要再重新编译。Altera的具体的描述为:

Update Memory Contents Without Recompiling
    You can use two commands to update the contents of memory blocks in your design without recompiling. Use the quartus_cdb executable with the --update_mif option to update memory contents from .mif or .hexout files. Then, rerun the assembler with the quartus_asm executable to regenerate the .sof, .pof, and any other programming files.

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条