DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

[待整理] 《玩转IP core》之十五:国球与其它,输入输出系统介绍

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 16:22:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
天灵灵,地灵灵,观音大士显神灵。老衲掐指一算,诸位竟然已经听了贫僧一十四讲讲座。居然,还有客官依然在听鄙人的唠叨,“衣带渐宽终不改,为伊消得人憔悴”啊。老主顾,老板给个打七折呗!(反正也是免费的,七折还是免费哦。老板你既得人心,又不花钱,好买卖!)诸位辛苦了。(全体起立:“为人民币服务!”)
       
        现在,这个讲座快到尾声了,无论如何也不能叫各位在未来不多的几讲里面失望。“好人做到底,送佛送到西”。能够熬到现在的都是好工程师,“好人有好报,坚持有回报”。京剧里面叫“压轴”,游戏里面叫“彩蛋”,后面的内容更精彩。
       
        我们现在正式为《第三篇:系统篇》剪彩(哗哗哗,掌声响起来,我心更明白…)。在这一部分里面,会在更高的层次上,分析设计问题。大伙儿不仅仅能看到《单元篇》里面的各个部件的应用,而且会发现系统绝对不是单元的简单的搭积木。在整个讲座里面,“变化”是永远的主题。《孙子变法》有云:“水因地而制流,兵因敌而制胜。故兵无常势,水无常形;能因敌而制胜者,谓之神。”。我们说,系统设计也应该“无常势”、“无常形”,就是这个道理。
       
        这一讲里面,在下会给各位看官介绍一下系统的输入输出部分。
       
        这里的“输入输出”不是说的“TTL”、“COMS”、“PECL”或者“LVDS”之类的物理信号形式。而是说明,芯片的数据如何稳定地、安全地和有效地进入、输出芯片。这个需要事先声明一下,省的有人误会,来找我麻烦。
       
        在前面有关测试向量的一讲里面说过:没有只有一个芯片的PCB。我们的系统是存在输入输出,也存在输出的。大家配合才好干活。(随便说句闲话:不知道为什么,那一讲的点击量一直不是很高,都被茶馆老板批评了。那一讲虽然无图无真相,但是后面的两种测试向量可是一般资料没有介绍的。而且,在多数系统验证的时候,这两种测试向量的应用量绝对比第一种大多了。)
       
        系统的输入输出按照外部连接的芯片种类,可以分为两种形式。第一种是和特殊接口协议的芯片,例如,DSP、MPU、RAM或者SDRAM等。这些芯片的输入输出接口时序是固定的。除非你是那个生产商的CTO的小舅子,要不然就得按照人家的时序实现我们的系统。另一种接口是高速数据的通道,例如外接的高速ADC和DAC,一般是经过LVDS进出的。LVDS如何输入输出数据,自然有非常专业的代码,不是我们需要操心的。但是,这些高速数据是否能够及时处理,却是我们的职责范围。为了保住大家饭碗,也为了保证这个书场的客流,某家会详细介绍。
       
        按照由简单到复杂的原则,我们先介绍固定时序的接口设计。其实,这也就是数字逻辑设计工程师耳熟能详的有限状态机设计。一下用图举一个例子,不用多讲了,省的有人又说“没有技术含量”、“不资深”。例子里面,外部芯片与设计的系统是异步的,这是非常经常的情况。这里的系统内的数据使能“EN”信号和有效数据“Data”宽度均大于片外的时钟,这是异步的消耗,没办法。
        如果信号完整性做的好,上面所说的消耗可以避免。
         
       

       
        对于专用数据端口输入输出呢,又分为两种情况。第一类是输入输出数据是阵发的,两个数据流之间存在较大的间隔。这个类似数码相机,拍一张照片要等很久才有第二张的数据。另一类是输入输出数据一直匀速的,数据间没有明显间隔。这个类似数码摄像机,图像是一直持续不断的按照帧的周期到达的。
         
        对于阵发性数据的输入输出,建议采用FIFO(先入先出队列,First In First Out)的接口形式。下图是一个利用双口RAM,实现异步FIFO的例子,具体细节请列位自己考量。到了现在的程度了,这个本事应该具备了。
         
       

       
        FIFO作为一个缓冲器,把阵发的数据先存储在里面。等到数据到来之间的空隙,进行必要的数据处理。具体示意图见下图。在数据到达时刻,进行写操作,FIFO里面的数据量增加。在数据到达和数据空闲时刻,均存在读操作,数据量缓慢减少。FIFO的容量取决于数据阵发到达的数量。并且,读操作以及后续处理的时间,不能超过数据阵发的周期。
       
        对于非周期性的数据,可能会存在数据未被处理就丢弃的现象,这个没有什么好办法解决。增加RAM容量可以减少数据丢弃的可能,但是提高了系统的代价。这就是“一份价格,一份货色”的道理。只有老板才是“只要马儿跑,不叫马吃草”的,我们工程师干不来这种昧良心的勾当。(就是想做,逻辑仿真也过不去啊。)
       
        (看来叫我学习高校教师那样,正儿八经地说话,某家还真的做不到。庄子曰:随性,老衲还是坚持一贯的扯犊子的风格了,某些人见谅。)
         
       

       
        终于写到“乒乓操作”了,感觉都快文不对题了(所谓“一行白鹭上青天”----离题万里,读书人骂人的方法----不带脏字的)。终于,大伙儿明白了题目里面的“国球”是乒乓球的意思。不是足球了,足球哪里比得了乒乓球的辉煌啊。
       
        对于连续性数据的输入输出一般都采用乒乓操作的套路。我又忍不住要多说一句了。工程设计里面,有很多套路的。如果没有特殊的必要,最好还是按照套路来。工程不是耍杂技,不用标新立异。我博士的师兄有句名言,送给大家:世界是简单的,真理是朴素的。
       
        乒乓操作说白了就是两块存储器,第一块存储,第二块被读取;然后下一个周期,第一块被读取,第二块存储;周而复始。为什么叫“乒乓”呢?就是因为这两块存储器不停交换功能,有点象打乒乓球,一来一回的。可以看到,乒乓操作比FIFO所用的存储器要多,但是,对应的处理能力要强,又是一个“面积换速度”的例子。
       
        乒乓操作的两块存储器的交换时间,一般采用系统内的“自然”周期,例如:摄像机里面的帧、无线通讯系统里面的时隙等等。
       
        乒乓操作单元结构如下图。除了前面提到的两个存储器之外,还需要写选择单元、读选择单元和读写时序控制单元等。
         
       

       
        乒乓操作的时序示意图如下,一个周期内,两个存储器一读一写;下一个周期颠倒。
         
       

       
        技术就是一层窗户纸,一捅就破。说明白了,感觉也没什么高深的。但是,有时候自己想,却不见得能想出来。以前读博士的时候,看到过很多论文。明明线性代数就能解决的问题,偏偏要范数、内积的定义一堆。这就叫故弄玄虚,这种事情我干不来。所以,不敢留在高学里面误人子弟。
       
        这一个讲座里面,贫僧介绍的东西,在多时钟系统的数据隔离可以被应用。另外,即使是同步系统,某些模块间的隔离,也是可以采用的。这里顺便说说,我就是唐僧,你又能如何?
       
        这正是:数据交换需隔离,时序状态巧设计。FIFO乒乓分场景,选择应用靠分析。
       
        诸位客官,小小的广告。下面会用两讲的时间,介绍两个稍稍复杂的系统设计。列位可以体会到,如何把前面的单元“砸碎了,再粘在一起”的快感。还是那句话(学我最喜欢的新闻类节目《世界周刊》):下周的事情,下周再说,大家不见不散。
        --------
        《玩转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》系列技术讲座,每周三加菲博士与你不见不散,如果针对本讲座有任何技术问题欢迎与加菲进行技术互动可以加入QQ群(FPGA交流圈:23294742),或者去交流区提问:《玩转IP core》交流区
       
        关注与非网官方微博:http://e.weibo.com/eefocus 我们的讲座内容将在微博同步更新。
       
        加菲独家供稿与非网,谢绝任何形式的转载,与非网做你技术生涯中最有价值的电子网站。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-2 21:13 , 耗时 0.098398 秒, 21 个查询请求 , Gzip 开启.

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

桂公网安备 45031202000115号

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

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

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

QQ:28000622;Email:libyoufer@sina.com

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

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