tag 标签: 格雷码

相关博文
  • 热度 24
    2017-8-14 22:35
    3204 次阅读|
    0 个评论
    四: RTL (寄存器传输)级的低功耗设计 4.1 状态机的设计 状态机编码中一般有两种方式,普通的二进制编码,特殊的格雷码,格雷码的特点是两个数据之间的跳变时只会有一个 bit 在 toggle ,显然比起多 bit 跳转,从直觉上就比较节能。 另外格雷码的好处有很多,在 CDC 处理的时候,格雷码可是个大救星,格雷码还可以消除毛刺等等。格雷码的特点如下: 格雷码属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数 / 模转换器转换成模拟信号,但在某些情况,例如从十进制的 3 转换为 4 时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于方向的转角位移量-数字量的转换中,当方向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。 格雷码是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。 由于格雷码是一种变权码,每一位码没有固定的大小,很难直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。 典型格雷码是一种采用绝对编码方式的准权码,其权的绝对值为 2^i-1( 设最低位 i=1) 。 格雷码的十进制数奇偶性与其码字中 1 的个数的奇偶性相同。 4.2 门控数据端 数据只要在翻转,那么就会有充放电,有充放电就会有功耗。前面提到对时钟进行 gating ,但是很多时候时钟 gating 可能会带来一些负面效应,也有些 design clk 无法进行 gating 。这个时候可以考虑将 DFF 端的数据进行 gating 。 如上图, sel 无论为什么之,输入端的数据都会向后传播,对 mux 里面的门进行充放电。 在如上图, case 语句选用 one hot 编码,这可以对数据进行门控。 4.3 逻辑资源共享 在设计电路时,或者撰写 RTL 代码时,要想着是否有些逻辑可以 resource 的,如下图的简单的 ALU 写法。 如果换成下面的写法,可能结果就比上面的要好多。目前有些工具已经相当智能,可以进行 logic resource ,但是好的代码风格还是要多学习,多研究。毕竟工具最终如何处理,你不是很清楚,你如果可以做的更好,工具或许也会更好。 4.4 logic enable 及 disable 技巧 有些大的逻辑,例如地址译码, ALU 单元,在需要用的时候最好能够 gating 掉,这个方式其实有点类似 gating data 和 gating clk 。 4.5 高频率翻转的线网( high activity net ) 有些线网相比于其他的线网活动比较频繁,这个时候可以尝 试将其逻辑尽量往后一级摆放,这样对影响到的电路就会少很多。如下图, x1..xn 的变化程度很小,但是 Y 则翻转很快,可以尝试做如下的处理。 4.6 总线翻转( bus inversion ) 总线翻转技术并不是对所有的电路都合适,他比较适合 hamming 距离大于 N/2 的情况,其中 N 是数据位宽。这种方式需要额外的控制 bit 来表示哪些 bit 被 invert 。如下下图 ​ ​
  • 热度 32
    2016-5-12 20:11
    1722 次阅读|
    0 个评论
             了解一下状态机中"状态"的各种编码,我们都知道每一个状态需要一个二进制表示,但是状态之间的关系如何,到底该选用"原码""Gray码""独热码"还是好多好多别的码呢.....^^          下面是我自己搜集一些相关信息结合资料书整理的,想深入了解的可以查资料...恩推荐用(需要VPN)Google,维基百科,当然可以百度,Bing...虽然最近度娘口碑差点,仔细找找还是有好多好资料的 先来熟悉一下各种码(至于实际实现效果,自己找个例程验证一下就行了)   原码:最简单的码,就是对每个状态依照二进制按照顺序依次编码(00,01,10,11.............)         顺序二进制编码,即将状态依次编码为顺序的二进制数。顺序二进制编码是最紧密的编码,优点在于它使用的状态向量位数最少,节约了逻辑资源   Gray码:我么都应该知道的哦(数电中卡诺图的化简...不了解的回去翻书),两个顺序状态之间的差别只有一位不同(00.01,11.10..............)          Gray码在发生状态跳转时,状态向量只有一位发生变化。理论上说 Gray状态机在状态跳转时不会有任何毛刺,但Gray码状态机设计中最大的问题是,在状态机很复杂状态跳转的分支很多时,要合理的分配状态编码保证每个状态跳转都仅有 1 位发生变化,你的数电功底一定要好............   独热码:每个状态只有一个比特是高电平"1"(0001,0010,0100,1000..........)了解?!         因为独热码的特性会多用了触发器,但所用组合电路可省一些,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。同时独热码在状态跃迁时仅需要改变状态变量的某一位,在一定程度上简化了比较逻辑,从而减少了毛刺产生的概率   总结         原码和格雷码是压缩状态编码。 若使用格雷编码,则相邻状态转换时只有一个状态位发生翻转,这样不仅能消除状态转换时由多条状态信号线的传输延迟所造成的毛刺,又可以降低功耗。二进制编码、格雷码编码使用最少的触发器,消耗较多的组合逻辑,而独热码编码反之。         独热码编码的最大优势在于状态比较时仅仅需要比较一个位,一定程度上简化了比较逻辑,减少了毛刺产生的概率.当然在需要表示同样的状态数时,独热编码占用较多的位,也就是消耗较多的触发器,但这些额外触发器占用的面积可与译码电路省下来的面积相抵消。还有由于独热码的状态译码简单,可减少组合逻辑且速度较快, 这种编码方式还易于修改,增加状态或改变状态转换条件都可以在不影响状态机的其它部分的情况下很方便地实现。           恩...看着独热码介绍篇幅最多,那么一定在状态设计中就是用独热码吗?实际上,相对于实际设计中,大型设计(状态要几十+吧...就这么定义,虽然很少见)独热码更有效,而一些小型设计中(我们常用的工程中)使用原码和格雷码更有效! 而相对于原码,就面积与速度的折中考虑来说Gray码是最好的选择,至于撒都不考虑了,图方便还是原码好用~~~         最后,我感觉自己说了一大堆没营养的话==不过像我这样比较懒的搜索的人,希望能有所帮助
  • 热度 27
    2013-10-10 19:18
    2266 次阅读|
    0 个评论
    有认真做上一部分的联系么。现在给出(b)的答案: 1. Y=~A~B~C+A~ B~C+A~BC 2.Y=~B~C+A~B 或   第一种叫做PLA模式。PLA(programmable logic array)就是所谓的可编程逻辑阵列(以后当然会系统的将到FPGA神马的~)。因为各种逻辑门排列的很整齐,有利于芯片的实现。   这里要特别强调一下画图规范哦(在做复杂电路图时很容易把自己搞混,所以养成好习惯必不可少)一般输入都画在左上方,输出在右下方,做到看图纸时一目了然。还有图中的十字线没有圆点的就是不连在一起,T字线交叉口永远连在一起!   接下来,我要引入K图咯~~大名鼎鼎的卡若图(Karnaugh maps)。   实际中设计电路,经常是先得到真值表(就是先确定好输入和输出和自己要的功能之后,进入逻辑电路设计的第一项任务就是画真值表)。 现在,我有一个这样的需要(也就是我想要设计一个有这样功能的回路) 。如果我们有了这个东西的布尔表达式,我们之前学的不就是能用上了~。对的!呵呵,那么我们怎么才能得到布尔表达式呢,以前都是让大家从表达式推出真值表,现在逆向思维的时间到了~。 准备工作(需要引入的知识): 1.大家有没有想到之前我讲过最小项(minterm)和最大项的概念(maxterm)。那里我们处理的是两个变量的输入问题。这里依然要用到那两个概念。 2.这里引入一个叫做格雷码(Gray Code)的东东。说白了就是把二进制的排列顺序变了一下的序列而已。正常的时候(从大到小排列)二进制序列(00,01,10,11),而Gray码是 (00,01,11,10)。精髓就是,Gray序列里的二进制数每一次只变化 一位。这里01到11只有0变成1,所以这有一位变化。同理可以推导到更多bits的序列中去。 好了,下面继续 看我们的需求。我们把真值表写成下列形式     也就是将输入按照Gray码编码,小方块中的是Y就是输出。所谓编码(encoode)就是把一般的字母符号神马的赋予二进制值。这里就是A=1,~A=0。。也就是上面没有一杠的都代表1.接着,我们把一个小方块里的独立表达式写出来,如下图: 。之后把相邻的含1的小方块圈起来, 注意这一条说起来容易让人头晕,所以我放在下一节1.6节K图应应用中讲! 最后一步,观察被圈起来的一小部分的对应输入中, 只要输入中同时出现1,0的输入就要排除在最终表达式之外。而只出现1或0的输入才可以被保留 (灰常重要!!)这里就是说,在所圈起来的小方块中,输入C同时出现0和1,所以扔掉C,而AB都只是0, 所以表达式是 Y=~A~B。     这就是K图咯。用上两部分的定理验证一下结果是否正确:Y=~A~B~C+~A~BC=~A~B(~C+C)=~A~B-------结果毅然吻合!   下一节我们进入K图的应用,会讲到最经典的7段数码管!相信和多人也做了很多设计,但是这个小小数码管背后的理论,很少有学到吧~~~敬请期待。
相关资源
  • 所需E币: 1
    时间: 2023-3-30 09:21
    大小: 295.03KB
    上传者: 张红川
    格雷码Gray编码器与单片机的接口设计.pdf
  • 所需E币: 1
    时间: 2022-8-6 10:00
    大小: 3.71KB
    上传者: Argent
    s7-200库格雷码
  • 所需E币: 1
    时间: 2022-8-6 09:56
    大小: 8.92KB
    上传者: Argent
    S7-200的格雷码与二进制的转换、S7-200寻址例程
  • 所需E币: 1
    时间: 2022-7-23 18:09
    大小: 8.49KB
    上传者: Argent
    OMRONE6CP绝对值编码器使用实例。编码器为8位格雷码输出
  • 所需E币: 0
    时间: 2020-11-16 10:04
    大小: 576.65KB
    上传者: 指的是在下
    高速模数转换器中格雷码与二进制编码对比.
  • 所需E币: 4
    时间: 2019-12-28 21:35
    大小: 336.64KB
    上传者: givh79_163.com
    分析了同步数字体系中2.048Mbps支路信号E1异步映射进VC-12的过程,并根据正/零/负码速调整原理确定了缓冲存储器的容量和正负码速调整的判定门限.通过对异步FIFO读控制实现了此异步映射过程的正/零/负码速调整.同时,为了在异步时钟域之间可靠地传递数据,采用格雷码实现读时钟域对写指针的采样.该设计通过了功能仿真、综合及FPGA验证.……
  • 所需E币: 5
    时间: 2019-12-25 16:12
    大小: 140.76KB
    上传者: 2iot
    异步FIFO结构及FPGA设计……
  • 所需E币: 5
    时间: 2019-12-25 10:15
    大小: 350.67KB
    上传者: 16245458_qq.com
    格雷码计数器的Verilog描述……
  • 所需E币: 4
    时间: 2020-1-4 12:52
    大小: 301.7KB
    上传者: 二不过三
    在实际工作中常常遇到由异步时钟产生亚稳态的问题.针对这个问题阐述了几种解决方案,其中异步FIFO应用更广泛.在FIFO中关键的问题是标志位的产生,提出了一种新的异步比较产生空满标志位,然后再利用锁存器实现标志位与时钟的同步,同时在Cadence的EDA平台上实现了逻辑仿真和时序仿真.异步时钟亚稳态及FIFo标志位的产生徐世伟,刘严严,刘红侠(西安电子科技大学微电子学院,陕西西安710071)摘要:在实际工作中常常遇到由异步时钟产生亚稳态的问题。针对这个问题阐述了几种解决方案,其中异步FIFO应用更广泛。在FIFO中关键的问题是标志位的产生,提出了一种新的异步比较产生空满标志位,然后再利用锁存器实现标志位与时钟的同步,同时在Cadence的EDA平台上实现了逻辑仿真和时序仿真。关键词:异步FIF0亚稳态格雷码绳解法随着信息技术的飞速发展,特别是在二十世纪90年代以后,美国在南斯拉夫战争和两次海湾战争中成功地运用了电子战、信息战,以及近年来我国在航天航空事业方面的高速发展,使我国开始重视和发展信息技术。与此同时对高速、大容量、高可靠性的静态存储器的需求越来越多,对军用的数据存储器的设计也提出了更高的要求。目前军用计算机传输数据的最快方式――DMA方式的传输速率最大也只是在5Mbps以下。对于几十Mbps的超高速采样速率,往往是上一次数据还没有被计算机读取,下一次的采集过程就结束了。因此采图1异步时钟和亚稳态用传统的计算机传输处理数据的方法,显然会造成数据步信号的概率。对于多个触发器的输出所组成的写地的丢失与混乱。所以对于快速采集,慢速处理的系统必……