DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1349|回复: 0
打印 上一主题 下一主题

[待整理] 《玩转IP core》之二:所见非所得

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 16:26:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
古人有诗赞道:“道德三皇五帝 ,语言二V相争,五霸七雄闹春秋 ,功过兴亡过手,设计几人操心 ,公司无数白首 ,前人播种后人收 ,都是硬件描述。”
        (练家子:古人?Verilog语言是由Gateway设计自动化公司的工程师于1983年末创立的;VHDL语言诞生于1983年,1987年被美国国防部和IEEE确定为标准的硬件描述语言。这个古人也“古”不到哪里去。上板砖!
        前排的:谁家熊孩子乱扔垃圾。。。。。。。。。。。。)
       
        却说某日,上海张江路上来了一位帅小伙,但见他:二十四五岁,穿青挂皂,长得眉清目秀,面白如玉,干净利落,傲骨迎风,鼻梁上颤巍巍,一副深度大眼镜。挽着袖面,走右手一张明晃晃硬件设计聘用书。书中暗表,怀里揣着某著名大学硕士毕业证。此人就是江湖人称作妙手程序无人敌,道号变成小新的新大虾。
       
        但见此人沿路缓缓前行,忽然遇到一双阳岔道。
       
        只见,左边树立一块路标,上书:“Verilog,人见人爱,花见花开”,下面几行小字“通用HDL,易学易用;与C语言类似;允许对同一个电路进行不同抽象层次的描述,包括开关级、门级、RTL级或者行为级描述电路; 即可以设计电路,也可以描述电路的激励,用于电路的验证; IEEE标准,得到绝大多数EDA工具的支持;设计的工艺无关性,支持综合;等等等等”。
        也见,右侧那个路牌式样一般无二,金灿灿几个大字:“VHDL,有些事一旦错过就不在”,再向下也是介绍“用来描述逻辑设计的结构;采用类似高级语言的语句格式完成对硬件行为的描述,具备更强的模块化能力; VHDL调试过程灵活;balabala……”。
       
        新少侠正在犹豫之间,看到路边有一茶馆,名曰“与非茶社”。茶馆内端坐一位掌柜,五短身材,满脸肥肉,一双小眼睛四处放电,一看便是包打听之类的人物。少侠忙进店,要了一壶上好的猴魁,顺道打探道:“敢问掌故的,门前两条道,那条方为正途?”那掌故,微微一笑,说道:“少侠莫急,带我慢慢道来:
       
        前几日,我店来一大汉,手持哨棒,要了一十八碗好酒,一饮而尽,兴冲冲向着左边道路而去。
        又有一客官,坐定时浑如虎相,走动时有若狼形。在我壁上题诗一首,后面两句小子还记得是:‘他时若遂凌云志,敢笑武平不丈夫!’。此人向右边走了。”
        “那后来呢?”
        “后来?后来都在H公司加班呢!”
        “为何不同的方向都到一起了?此中有何蹊跷?”
        “说来简单,难得哦君不知古语有云:殊途同归。”
        画外音:在下从事数字逻辑设计都是用的Verilog,因此写起来顺手一些,所以以后例子什么的都用Verilog描述。子曾经说过:说书的一张嘴,表不来两家事。敬请各位VHDL高手见谅,不要口诛笔伐了,都是出来混的,相煎何太急啊。
       
        新少侠汇了茶钱,抬腿便要向左行去,却被掌柜拦住去路。
       
        “少侠莫急,某家拦你并非为了剪径打劫。只是觉得与客官投缘,免费指路则个。左边一路下去,三山五关并一江。
        三山是:‘寄存器传输级描述’峰、‘逻辑门级描述’山和‘晶体管级描述’岭,一山更比一山高。
        五关为:数据关,主司数据类型定义;流程关,主司数据流向;运算关,主司数学运算;任务关,主司程序输入输出;编译关,主司文件替换。
         
        一江就是‘时延’河,无比宽广。”
       
        新手一听发了怒,用手一拍桌子:“说人话!”
       
        掌柜忙把广告发:“WIKI百科无所不包:http://zh.wikipedia.org/wiki/Verilog。”
       
        但见那少侠向着加班的目的地,大步而去。
       
        这段书就叫:新手侠问道与非网,胖掌柜细说描述语。
        (说书的正想把台下,小二传来老板的话:接着说,老板叫你接着说。唉,到底是资本家啊,狠。所谓浮动工时,我们这行没加班费的。。。。。
        他不仁,休怪我不义,来个甄嬛体恶心人。)
       
        方才臣妾见皇后在屋中烦闷,想必是在做软件做久了,再好的程序也难免腻歪。可巧儿前期与非网放出消息来,说是FPGA板块有个什么劳什子讲座,单就说书倒也罢了,断不敢惊扰皇上的,奇就奇在如何应用Verilog语言上。我空长这许多年,从来只是想Verilog既然和C语言类似,定然编程方法和流程也是一般无二的。哪曾想到模样儿一样,这做法竟然大相径庭,这对奴家真的是匪夷所思啊。难为那说书巴巴地唠叨,还邀请了各路名角儿撑场,只盼着能说服臣妾痛改前非。如若置之不理,倒真真辜负了他们的一番心意。奴家仔细听解,也与皇后皇帝细说端详,一则可体现皇上虚怀若谷之心,二则可解后宫姐妹编程烦躁之苦,四郎以为如何?臣妾闲来无事,拟了个要点单子,供四郎一览。
       
        私心想着,数字逻辑这大好河山,怎得和程序语言一般谋划?如此这般下去,却让数字逻辑工程师情何以堪?FPGA自古至今都是并行工作,越发不似程序语言顺序运行。方才主力开会,本宫自是无言以对,料想再搬语言设计,后果定是真真严重的。怎奈积习难改,本宫也只得四处奔走劝说,却也是泥牛入海。宫里王大总管方才回话,要本宫写一流程,也好对孩儿们说明。回想本宫工作多年,却也落得个如此下场,打工的日子真真是越发难过了。
       
        旦逢项目的第一天,切勿忙着编码,却谨记原理图设计为先的要点。虽是用语言表示,逻辑设计归根到底还是电路设计不是?窃思,如此原理图可以放宽表现,以为电路图、时序图与状态机图皆为可用。
       
        说人话:Verilog设计应该“看图说话”。
         
        这里买一送一,再提供硬件描述语言的综合流程图一份:
         
       

       
        妾身。。。。。呸呸呸,还是说人话吧。
        不知各位在看书还有写程序的的时候,是否想过:这句话如何实现啊?例如:看到IF语句,小脑瓜里面出现一个选择器。如果想过,那么恭喜你,你已经不是菜鸟了。如果还没有,那么恳切地建议你试着想一想,绝对有好处。
       
        老衲在学Verilog的时候,还是一个小沙弥。当时,想破了我的乳(乳是小的意思,别邪恶)头,也没想明白那个时延10 ps(#10)在电路里面是如何严格控制的。直到一天,我遇到了Synopsys的烧火头陀,才被告知不是每个语句都会被实现的。Sodesune(そうですね,有一种个人感情在里面,就想“是呢”“就是这样呀”,有一种感叹的感觉)!把我激动的都说鬼子语了。一句话点醒梦中人啊。于是,发一宏愿,要把所有Verilog语句列一个表纪录其可实现性。结果呢,现在还在这里加班,没有成佛。
       
        这里给个小例子,假设仿真时间单位是ps:
        A = #10 B;
        在仿真里面,B信号变化10 ps之后,A变成与B一致。
        实现后,就成了:
        A = B;
        实现工具会自动忽略不可实现部分。
        虽然没有完全总结,但是以下东东肯定不会被实现:
        initial
        events
        real
        time
        force
        release
        assign
        deassign
        fork join
        primitives
        table
       
        说完收工,回家抱娃,谁拦我,和谁急。
       
        还有一个广告,一讲尤其重要,亲们一定要来啊。
         
        《玩转IP core》之一:我们的目标是ASIC
        摘要:具体到一个产品里面,到底是采用FPGA还是ASIC,这个问题是多方面确定的。简单说,如果产品出货量小、时间紧、生命周期短,那么FPGA比较适合;反之就建议ASIC。但是,也不是完全绝对的,就像很难说少林和武当那个更牛一样。
         
        《玩转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 我们的讲座内容将在微博同步更新。
       
        加菲独家供稿与非网,谢绝任何形式的转载,与非网做你技术生涯中最有价值的电子网站。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-3 04:12 , 耗时 0.094091 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表