园薇

跟我一起学FPGA (1)

0
阅读(2031)

最近看了一些东西,听了一些东西,也想了很多。

 《钱学森的"遗言":中国的大问题》 http://www.gmw.cn/content/2009-11/05/content_1003729.htm

 《谁能回答钱学森最后的提问?http://blog.ifeng.com/article/3388505-4.html

 《别让开发平台绑架了中国未来的电子工程师》http://blog.chinaaet.com/detail/21611.html

 《对FPGA认识、学习和进阶》 http://blog.chinaaet.com/detail/29033.html  我很看重其中的FPGA的意义。

 

在FPGA领域,Xilinx、Altera等国外的公司经过近三十年的发展,已经有几千名员工的规模,现在做的产品确实很赞。那么我们中国的公司有没有必要再造一个轮子呢?从长远来看,当然! 京微雅格就在造这个轮子。麻雀虽小,五脏俱全。倒是因为没有太多花哨的功能,显得格外简洁,很适合fpga初学者。如果我还在学校,我有3000元钱,我不会去羡慕手持iPhone的人,我可以1499买一个小米手机,100元买夏宇闻老师和特权同学的书,然后买一个CME3C06芯片的开发套件。10年后,也许5年后,你就知道这其中深深的意义!

有一件事情我想了很久,觉得做技术的人真的特别低调,以至于京微雅格其实做的很好的东西并不是特别为人所知,特别是对于中国学生们,这真真的是一大损失。所幸看到有远见的人发起了国产FPGA助学活动,算是开了一个好头,不管是对公司,对学生,也许对于中国,都是一件幸事。

我是学计算机专业的,研究生嵌入式方向,FPGA算是个门外汉。但FPGA真的很吸引我,有幸在头脑还能学东西的年龄遇见,愿意与之共同成长。

其实最好的方式是有牛人录制视频教程,但是也许牛人有更重要的事情要做,或者正在准备尚未开始。Xilinx、Altera的视频教程网上很多,也许不久我们的用户有愿意分享他们的经验的也会录制一些。如果我在网上查不到相关资料,我会很不心安,因为酒香很怕巷子深。所以,刚好我有兴趣,愿意跟您一起学习FPGA。

(一)Verilog HDL学习

这第一个例子当做编程中的Hello word了,权当熟悉Primace环境。夏老师书

P18 例[3.1.1]

module adder(count, sum, a, b, cin);

       input[2:0]a,b;

       input cin;

       output count;

       output[2:0] sum;

              assign {count,sum} = a+b+cin;

endmodule

这个例子通过连续赋值语句描述了一个名为adder的三位加法器,可以根据两个三比特数a、b和进位(cin)计算出和(sum)和进位(count)。

打开Primace软件,新建工程,选择器件CME3C06N-L144C7。在工程资源管理器中选择Project,右键选择“Add New File...",如图

在新建的文本编辑器中输入上面的代码,如图

设置top module.如图

 

跑综合。综合的第一步是根据RTL级设计生成一个与具体实现工艺无关的通用电路,然后在此基础上对这个电路进行优化,以满足约束条件的要求,如速度、面积和功耗等。

查看综合后的结果,发现全部是由Lut搭的加法器。开发者说这是由综合策略决定的,目前(a*b)+c形式的运算,并且至少其中一位乘数是10位及以上时,会映射为MAC。比较简单的运算会直接映射到lut上。这个逻辑运算使用到CME3C06N芯片LUT资源不足1%.

为了能够对代码有一个直观的认识,我们可以把信号指定到IO上。在开发板的相关原理图如下(详细资料参考http://www.capital-micro.com/cme_m5.htm

 

由于开发板上开关没有接上拉,所以输入信号加一个默认状态上拉。

然后跑Flow(placement, router, bitgen),最后生成的代码Download到开发板上。

 

      sw3  sw2  sw1

      sw6  sw5  sw4

+               sw7

----------------------------

led4  led3  led2 led1

如果你按动按键,发现小灯如期望闪烁,我为你高兴!

我是真真的希望,每一个学电子或者计算机或者自动化或者对信息科学感兴趣的人,每个人买一块京微雅格的开发板。或者,如果有人关注中国的信息产业,愿意从某种程度上赞助学生,请送他一块京微雅格的开发板(我的个人观点)。

这是一个机会。

 

 

注:

1. 例子引用自《夏宇闻Verilog经典教程.pdf》http://wenku.baidu.com/view/fa3226d549649b6648d747b9.html

2. Primace的详细操作请参考Primace 4.0 User Guide

    原理图和PCB(http://www.capital-micro.com/cme_m5.htm