DIY编程器网
标题:
《玩转IP core》之一:我们的目标是ASIC
[打印本页]
作者:
admin
时间:
2014-10-12 16:29
标题:
《玩转IP core》之一:我们的目标是ASIC
----FPGA/ASIC设计流程与IP core介绍
各种讲座一般都是从“痛说革命家史”开始的,例如哪年出现了什么啊的。感觉从PN结、晶体管说起的,都算客气,没说开天辟地、三皇五帝。这里我不免俗的给大家几个网址,自己看看好了,如果你有兴趣(如果英文好,建议看对应的英文资料,更翔实些):
FPGA介绍:http://zh.wikipedia.org/wiki/FPGA
ASIC介绍:http://zh.wikipedia.org/wiki/%E7%89%B9%E6%AE%8A%E6%87%89%E7%94%A8%E7%A9%8D%E9%AB%94%E9%9B%BB%E8%B7%AF
具体到一个产品里面,到底是采用FPGA还是ASIC,这个问题是多方面确定的。简单说,如果产品出货量小、时间紧、生命周期短,那么FPGA比较适合;反之就建议ASIC。但是,也不是完全绝对的,就像很难说少林和武当那个更牛一样。幸好,这不是大多数一般工程师需要考虑的问题。我们就不详细讨论了,把这个恼人的问题留给高薪(实际也没大家想象的高,但是,阿Q说:你总比我富)的架构师和产品经理们去头疼好了。
闲言少叙,言归正传。
估计大多数客官应该是数字逻辑设计工程师,我就看人下菜碟,首先介绍一下,我们职位的输入和输出、还有如何从输入走到输出。装严肃,这就叫数字逻辑的设计流程。
为了叫我们干活以获得剩余价值,资本家们会雇佣一些系统架构工程师和算法工程师来写文档给我们输入。这些输入一般叫做算法说明书和系统架构说明书。
算法说明书里面,洋洋洒洒充满了各种各样的数学公式、计算流程。如果你足够幸运遇到好的算法工程师,那么你还能看到算法的结构图。这些都是告诉我们,我们该把什么量做什么运算,以及什么时候运算。
系统架构说明书的作者,显然和我们更有共同语言,因为他们大多数是我们的前辈。在这些资料里面,会有系统有那些模块、模块如何设置、模块合适启动以及模块之间的接口定义、模块的时钟频率等等。按道理,还应该有各个模块的规模要求,但是这个太难了,大多数系统架构师也得叫“臣妾,我做不到啊”。
那么我们又如何说服老板:“我们干活了,您花的薪水不亏”呢?如果您是在FPGA上实现的,那么您需要利用软件生成可以在FPGA上运行的二进制文件,叫二进制文件欢快的跑起来。如果你的目标是ASIC,那么我们不叫ASIC工程师,而是ASIC前端工程师。(有前端肯定还有后端了,他们的区别属于“小孩没娘,说来话长”,我就不多啰嗦了,省的您说我话唠。)ASIC前端工程师输出的是所谓网表文件,里面是门级电路的连接和约束关系。这个给后端的兄弟来布局布线,后面还有加工的孩子们研究工艺、加工什么的。(ASIC就是麻烦,没办法,谁叫人家速度快、后期价格便宜呢?)
按照设计流程,我们上面定义了系统的输入输出,下来我们来掰扯掰扯模块行为。首先,我们需要把输入的文档变成真正硬件描述语言需要的图,可以是原理图、时序图或者状态机图。(有的看官要说了:竟然没有流程图,这个可以有啊?答曰:这个真没有。具体原因我们会在后面一讲里面介绍。)下来,我们照图说话,用硬件描述语言实现系统/模块的行为模型。接着,经过前仿真(行为仿真)、实现、布局布线和后仿真(时序仿真),我们就打完收工了。(妈妈咪啊,一堆名词啊。鉴于篇幅,不详细解释了,可以参考我可爱的Wiki百科:http://zh.wikipedia.org/wiki/%E9%9B%86%E6%88%90%E7%94%B5%E8%B7%AF%E8%AE%BE%E8%AE%A1。还有与非文章参考http://www.eefocus.com/rainlt/blog/07-10/75596_d8dc7.html。“拿人的手短,吃人的嘴短”,就算投桃报李吧。如果您不是专门的设计工程师,可能有些晕。不过没关系,这些绝对不会影响您下来的理解。因为,这个讲座不是讲如何做工作的,而是关注于步骤一,如何画图的。下来步骤都是经验,只要做过一次就驾轻就熟了。)多说一句,对于ASIC设计,最后一步是前后端乃至工厂合作完成的。当然,所有步骤都有验证和测试工作,这个不劳多说。
5258e92348275-thumb.jpg
(10.67 KB, 下载次数: 13)
下载附件
保存到相册
《玩转IP core》之一:我们的目标是ASIC
2014-10-12 16:29 上传
(
点击图片看大图
)
上图是一个描述,下面是可以采用的对应软件。(对于这个图,请求您不要和我较真。如果你该非说为什么用Modelsim而不用VCS啊,我无话可说,真的没有拿Mentor的广告费。当然,如果M愿意资助本讲座,我自当笑纳。)图里面,多了一个简单后仿真,此乃Synpilify一个功能,可能模拟处理时延,叫我们更早验证设计。(又有广告嫌疑啊。)以上内容,可以在FPGA厂家的集成环境,例如Xilinx的ISE或者Altra的Quatus II。(这次说全点,这叫避嫌。)
花开两朵,各表一枝。
话说工程界里面总是充满着各种争论,例如:到底是多用DSP呢还是ASIC?我们都是工程师,不属于时尚界,在开发的过程中也会遇到各种取舍。FPGA的开发总而言之,存在着两个流派:到底是基于厂家的IP core的快速开发 ,还是面向ASIC的基础开发。前者,工作量小、开发效率高,但是,却无法直接将我们在FPGA上的设计引入未来的ASIC设计。后面的方法呢,虽然存在直接将我们在FPGA上的设计引入未来的ASIC设计的可能,但是耗时耗力,开发周期长。还是武当少林的说法,这两个方法都没有绝对的对错,所谓“存在即合理”,只是要区别应用场合选择。
我不会讨论什么商业模式啊,FPGA公司可持续发展啊,这些无聊的内容,省的倍你们转发五百次。各位看看本讲的内容,也应该明白了,以后的内容肯定是为后面的方法定制的。(哗啦啦,走了一半的人。开口饭难吃啊。为了某家明天的嚼谷,请列位准我做一个小小的广告:“这个讲座也适合做算法的人员。所谓“知己知彼,百战不殆”。听了我的讲座,就不会出现下文书里所讲的 ‘被除3’的尴尬了。”)
下面是预告片时间,想去洗手间的人可以下周见了。
整个讲座会分为三个部分:
基础篇、单元篇和系统篇
。
基础篇
里面,各位将会遇到硬件描述语言的风光,见到系统时钟的高峰,不同设计结构的山谷,最后由test bench港湾结束这个阶段的旅行。
单元篇
会把大家从基础的宇宙边沿拉回到现实的残酷世界。大家会真正研究一些基本单元的设计。子曾经曰过:“All Roads Lead to Rome(条条大路通罗马)”,诗云:“没有一个单元只有一种结构”。
系统篇
也不是单元的简单叠加,这个讲座会充满着“变”这个字,即使大家不是大师兄。能坚持到最后的各位听众,海外侨胞们,台湾同胞们会看到同一个功能,由于需求不同而面目迥异。就是换了马甲,大家还真的认不出来了。
如果还有好学生,鄙人也希望大家复习一下D触发器之类的数字电路概念,捎带脚了解一下加法和乘法定律(尤其是分配率)还有高中三角的和角公式。
《玩转IP core》之二:所见非所得
摘要:Verilog语言是由Gateway设计自动化公司的工程师于1983年末创立的;VHDL语言诞生于1983年,1987年被美国国防部和IEEE确定为标准的硬件描述语言。这个古人也“古”不到哪里去。上板砖!
《玩转IP core》之三::统一行动听指挥
摘 要:现在我们正沿着PCB数据大道,走向芯片大厦----就是大家眼前的巨大的、银色的大厦。我是本次旅行的导游,敝姓十,大叫可以叫我十导。路途之中, 为了大家不感到无聊,本人先给大家略略介绍一下,什么是数字电路的时钟。数字电路中,时钟是整个电路最重要、最特殊的信号。
《玩转IP core》之四:踏雪寻熊---面积与速度的协调
摘 要:具体到我们的FPGA/ASIC设计,这个“鱼”就是面积,而“熊掌”时钟频率(速度)。能不能很好的协调面积与速度的关系,是衡量一个数字逻辑设计 工程师能力的一个重要标准。在本讲座的第二篇里面,会说明各种单元模块的不同面积和速度的基本解构;在第三篇中,则会通过例子,介绍如何在系统中很好综合 考虑两者的关系,选择比较合适的实现解构。
《玩转IP core》之五:测试向量生成
摘要:在不考虑电源输入的前提下,在我们系统/板子上,能够不依靠其他外界输入而产生输出信号的器件有木有呢?当然有,而且必须有,那就是大名鼎鼎的晶振了,用来产生我们说过的、对以系统极端重要的系统时钟信号。
《玩转IP core》之六:程咬金的三板斧--系统基本结构
摘要:今天我们开始进入本讲座的第二部分:单元篇。大家将会发现,我们在基本单元设计里面,也就是三板斧:查找表、时分复用和流水线。但是,我们比程大将军稍稍高一点,我们会把这三招糅合,能产生变招。
《玩转IP core》之七:一个计数器引起的思考
摘 要:设问句:在进行一个计数器单元设计之前,我们需要什么前提条件呢?首先,需要功能描述(一个计数器嘛,不就是在不是复位“RST”的状态,每来一个时 钟内部/输出加一吗?还描述什么啊?磨洋工吧?----“非也,非也”,这个还是要描述一下。至少我们需要知道一下计数器的内部位数吧?也就是,计数器加 到多大回到0。)另外,就象我们在前面“菜谱”那一讲里面说过的,需要了解系统需要的时钟频率。
《玩转IP core》之八:小学一年级水平,加法器的结构
摘要:工程设计里面有一个原则:从简单做起。这里面还有一个小故事,今天就不讲了。现在,我们先瞧瞧最简单的一个比特位宽的加法器:半/全加器。全加器的输入为三个一比特的信号a0、a1,还有低位的进位c0;输出也是两个一比特的信号:结果s和进位位c1。
《玩转IP core》之九:小学二年级水平,乘法器的结构
摘 要:大伙儿已经通过两次讲座,了解了计数器和加法器大体结构。大家不难发 现,同样的一种功能,可能由于需要、工作频率和代价的不同要求,存在若干种不同的结 构。这些结构如何选择,实际上是一个艰难的选择。这些选择,很多时候都是靠一个工程师的经验(我们老年人也就靠这个混口饭吃了。要不就被“长江后浪推前 浪,前浪死在沙滩上”了)。
《玩转IP core》之十:除法器的结构
摘 要:如果各位在加法器和乘法器里面可以欣赏到了变化多端的话,那么在下不得不很遗憾的通知诸位:除法器里面大家只能看到“自古华山一条路”。不是 我保守,是除法这个东西的本性。用《数学分析》里的说法,加法和乘法都是线性运算满足交换律的,除法是非线性运算不满足交换律的。这是数学上的根子,可以 用来唬人。
《玩转IP core》之十一:非线性求值的孤独九剑,CORDIC方法
摘要:现在来个“师夷长技以制夷”,给大家画画CORDIC的流水线(因为是小数运算,假设实数“1”为十六进制的全1,实数值就可以折算了。这是普遍的技巧,不详述。)。还有一个小技巧就是由于每步的放大作用,公式里预先收缩了一把。
《玩转IP core》之十二:电路串串香,D触发器链
摘 要:今个儿寡人给大家讲点有“理论”的:CRC校验(循环冗余校验 码,Cyclic Redundancy Check)和编码器。CRC校验的目的就是看接收的一串比特和原来发射的是不是一致,有没有接收误码。CRC在编码界的春典,就是“gCRC16(D) = [D16 + D12 + D5 + 1]”和“1 0001 0000 0001 0001”。给大家一个口诀:“延时触发串一串,遇到一字砍一段。输入牵来异或算,输出导出入口看。”
《玩转IP core》之十三:简直的层层叠,FIR滤波器的串联实现
摘要:今天我们继续信号处理的行程,给大家介绍FIR滤波的串行实现。却说“请介绍FIR滤波器和IIR滤波器的差别”,这可是一道非常典型的面试题。这道题目类似于《哈利波特》里面那个“分院帽”的作用,当然这个题目里面没有宝剑。
《玩转IP core》之十四:我的地盘我做主,锁相与分频
摘要:在 做设计的时候,谁都希望片子的输入时钟是稳定的、可靠 的,并且和我们系统的采样频率是一致的。这是最理想状态。可惜啊,希望是丰满的,现实是骨感的。很 多时候,情况并没有这么理想。这种时候,就需要我们自己调节系统时钟,达到系统工作的目的了。不是大伙儿“无知者无畏”,是不得不为啊。实际上,在很多通 讯系统中,对于系统时钟的调节都是不可避免的。
《玩转IP core》之十五:国球与其它,输入输出介绍
摘 要:我们现在正式为《第三篇:系统篇》剪彩(哗哗哗,掌声响起来,我心更明白…)。在这一部分里面,会在更高的层次上,分析设计问题。大伙儿不仅 仅能看到《单元篇》里面的各个部件的应用,而且会发现系统绝对不是单元的简单的搭积木。在整个讲座里面,“变化”是永远的主题。
《玩转IP core》之十六:来个批发价,多路数字中频系统设计
摘要:数字中频主要分两种类型:数字上变频(DUC)和数字下变频(DDC),它们的主要功能是相反,但原理和实现的方法是十分相似。由于FIR滤波器里面讲的是下采样的例子,这里也就以数字下变频作为例子,这样匹配。
《玩转IP core》之十七:看客做饭,CDMA接收机的同步
摘要:这一讲里面会介绍CDMA系统的同步部分,这不是重点。关键是,大伙儿会看到同样的算法,在终端和基站侧由于系统用户数目不同,会有不同实现。这是给大家的一个启示:不能因循守旧,要与时俱进。
《玩转IP core》之十八:磨刀不误砍柴工,程序的风格
摘要:“代 码风格和规则”这个问题,很多人看来不是十分重要。但是,我问问大伙儿几个现象,看看是否遇到过?过了三个 月,读不懂自己的程序的,有木有?看别人代 码,赶脚不如自己重写的,有木有?做C代码的,竟然能看懂你的程序的,有木有?调试的时候,感觉是老虎吃天----无从下口,有木有?如果有,以老衲的经 验,多多少少和“代码风格和规则”有些瓜葛。
----------------------------
如果你从事FPGA研发,或者你对IP core设计感兴趣,欢迎关注《玩转IP core》系列技术讲座,每周三加菲博士与你不见不散,如果针对本讲座有任何技术问题欢迎与加菲进行技术互动:
《玩转IP core》交流区
关注与非网官方微博:
http://e.weibo.com/eefocus
我们的讲座内容将在微博同步更新。
加菲独家供稿与非网,谢绝任何形式的转载,与非网做你技术生涯中最有价值的电子网站。
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2