本发明属于信号处理技术领域,尤其是涉及一种优化格雷码编码方式实现跨时钟域的装置。

背景技术:

随着时间的推移,集成电路行业发展至今,已有类似如intel这样先进的foundry,提出迈入10nm制程的规划。高集成度的推行,也使芯片规模越来越大,功能越来越复杂,目前soc的内部时钟高度复杂,导致跨时钟域的接口越来越多。针对这些异步信号的处理方法多种多样,在最常用的异步fifo实现的跨时钟域处理中个,大量采用格雷码编码的方式实现读写指针的跨时钟域处理。

格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。

然而采用格雷码实现地址指针的跨时钟域处理时,根据格雷码编解码方式的特点,需要地址变化范围必须是2的n次方,当地址变化范围不满足2的n次方时,地址回0时就不能保证格雷码是单bit跳变的了,很难保证跨接后采样的正确性。

技术实现要素:

有鉴于此,本发明旨在提出一种优化格雷码编码方式实现跨时钟域的装置,通过增加2bit指示信号和2个mux逻辑,实现了n>2的任意深度的地址指针的跨时钟域处理。

为达到上述目的,本发明的技术方案是这样实现的:

一种优化格雷码编码方式实现跨时钟域的装置,包括flag_gen模块、bin2gray模块、gray2bin模块、以及flag_sel模块,其中,flag_gen模块的输入端为地址指针的最大值addr_max以及第一时钟域下的地址指针addr_in,输出端一方面连接第四d触发器的d端,另一方面分别连接第一多路选择器m1和第二多路选择器m2的输入端,第四触发器的q端连接第五触发器的d端,第五触发器的q端连接第六触发器的d端,第六触发器的q端连接flag_sel模块的输入端,第一多路选择器的输入端还连接第一时钟域下的地址指针addr_in,第一多路选择器m1的输出端连接bin2gray模块的输入端,bin2gray模块的输出端连接第二多路选择器m2的输入端,第二多路选择器的输出端连接第一d触发器的d端,第一d触发器的q端连接第二d触发器的d端,第二d触发器的q端连接第三触发器的d端,第三触发器的q端连接gray2bin模块的输入端,gray2bin模块的输出端连接flag_sel模块的输入端,第一d触发器、第四d触发器的cp端连接第一时钟,第二d触发器、第三d触发器、第五d触发器、第六d触发器的cp端连接第二时钟。

进一步的,所述bin2gray模块为标准的二进制数据向格雷码的转换逻辑。

进一步的,所述gray2bin模块为标准的格雷码向二进制数据转换的逻辑。

进一步的,所述flag_gen模块为编码器,其功能为:

当addr_in的值与addr_max的值相等时,flag_gen输出的2bit信号值为10,flag_gen控制m2给d1触发器的信号为0;

当addr_in的值与addr_max–1的值相等时,flag_gen输出的2bit信号值为11,flag_gen控制m2给d1触发器的信号为0;

当addr_in的值与addr_max–2的值相等时,flag_gen输出的2bit信号值为01,flag_gen控制m2给d1触发器的信号为bin2gray的输出值,flag_gen控制m1给bin2gray模块的输入信号为addr_max-3;

在其他情况下,flag_gen输出的2bit信号值为00,flag_gen控制m2给d触发器的输入为bin2gray的输出值,flag_gen控制m1给bin2gray的输入为addr_in。

进一步的,在第二时钟域下经过连续两次打拍消除亚稳态后,在flag_sel模块中实现地址指针的恢复,其功能为:

当输入flag_sel的2bit指示信号为10时,addr_out的值为addr_max;

当输入flag_sel的2bit指示信号为11时,addr_out的值为addr_max-1;

当输入flag_sel的2bit指示信号为01时,addr_out的值为addr_max–2;

当输入flag_sel的2bit指示信号为00时,addr_out的值为gray2bin的输出值。

相对于现有技术,本发明所述的一种优化格雷码编码方式实现跨时钟域的装置具有以下优势:

(1)本发明通过在原有格雷码转换电路基础上,通过增加2bit指示信号,实现了非2的n次幂地址编码转换逻辑时,在最大值与0地址之间的过渡期间,只根据新增的2bit指示信号进行判断,在其他情况下,仍然采用标准的格雷码转换逻辑。

(2)本发明从跨时钟处理的效果上看,编码后仍然可以保证有效的地址指示信号只发生一bit变化,原理上保证了时钟跨接处理的正确性,并与标准的格雷码转换效果相当

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例所述的一种优化格雷码编码方式实现跨时钟域的装置逻辑电路示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

下面将参考附图并结合实施例来详细说明本发明。

如图1所示为本发明的逻辑电路,包括flag_gen模块、bin2gray模块、gray2bin模块、以及flag_sel模块,其中,flag_gen模块的输入端为地址指针的最大值addr_max以及第一时钟域下的地址指针addr_in,输出端一方面连接第四d触发器的d端,另一方面分别连接第一多路选择器m1和第二多路选择器m2的输入端,第四触发器的q端连接第五触发器的d端,第五触发器的q端连接第六触发器的d端,第六触发器的q端连接flag_sel模块的输入端,第一多路选择器的输入端还连接第一时钟域下的地址指针addr_in,第一多路选择器m1的输出端连接bin2gray模块的输入端,bin2gray模块的输出端连接第二多路选择器m2的输入端,第二多路选择器的输出端连接第一d触发器的d端,第一d触发器的q端连接第二d触发器的d端,第二d触发器的q端连接第三触发器的d端,第三触发器的q端连接gray2bin模块的输入端,gray2bin模块的输出端连接flag_sel模块的输入端,第一d触发器、第四d触发器的cp端连接第一时钟,第二d触发器、第三d触发器、第五d触发器、第六d触发器的cp端连接第二时钟。

图中,地址指针的最大值为addr_max,在clk_1时钟域下的地址指针为addr_in,地址指针的bit位宽为n,其中n>2。经过本文所述逻辑电路转换后,在clk_2时钟下输出的地址指针为addr_out。图中:

(1)clk_1为地址指针addr_in的产生时钟,经过本逻辑电路跨时钟域处理后,跨接到clk_2时钟域,产生addr_out地址指针输出。addr_max为一个常量,表示地址指针的最大值时多少。

(2)bin2gray模块为标准的二进制数据向格雷码的转换逻辑。gray2bin模块为标准的格雷码向二进制数据转换的逻辑。该逻辑电路共有6组d触发器。

(3)flag_gen模块为一个编码器,其功能为:

当addr_in的值与addr_max的值相等时,flag_gen输出的2bit信号值为10,flag_gen控制m2给d1触发器的信号为0;

当addr_in的值与addr_max–1的值相等时,flag_gen输出的2bit信号值为11,flag_gen控制m2给d1触发器的信号为0;

当addr_in的值与addr_max–2的值相等时,flag_gen输出的2bit信号值为01,flag_gen控制m2给d1触发器的信号为bin2gray的输出值,flag_gen控制m1给bin2gray模块的输入信号为addr_max-3;

在其他情况下,flag_gen输出的2bit信号值为00,flag_gen控制m2给d触发器的输入为bin2gray的输出值,flag_gen控制m1给bin2gray的输入为addr_in;

(4)在clk_2时钟域下经过连续两次打拍消除亚稳态后,在flag_sel模块中实现地址指针的恢复,其功能为:

当输入flag_sel的2bit指示信号为10时,addr_out的值为addr_max;

当输入flag_sel的2bit指示信号为11时,addr_out的值为addr_max-1;

当输入flag_sel的2bit指示信号为01时,addr_out的值为addr_max–2;

当输入flag_sel的2bit指示信号为00时,addr_out的值为gray2bin的输出值。

综上所述,本申请所采用的编码规则如下表所示,为了表述方便,假设n为4,地址指针的最大值addr_max为13,表中addr为地址指针,flag为2bit位宽跨时钟域的指示信号,gray为4bit位宽跨时钟域编码信号。则他们的编码规则如表1:

表1

需要着重说明的是,当地址指针addr从11跳变到12时,因为此时addr_out的输出结果只根据2bit的flag信号产生,与gray的跳变无关,因此可以保证仍然可以看做时只有1bit发生跳变。

本发明在传统的格雷码转换电路的基础上,增加了2bit指示信号,通过对编解码逻辑规则的改动,实现了时钟跨接逻辑设计。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

3位格雷码的顺序编码_一种优化格雷码编码方式实现跨时钟域的装置的制作方法...相关推荐

  1. 4位格雷码的顺序编码_一种基于格雷码的方形QAM星座图编码方法和系统与流程...

    本发明属于测试技术领域,尤其涉及一种基于格雷码的方形QAM星座图编码方法和系统. 背景技术: 矢量信号分析中通常采用星座图来表征调制信号质量,星座图中星座点的编码方法直接影响信号解调后的BER(即比特 ...

  2. 充电枪cp信号控制板_一种带CC/CP及电子锁的车载充电机电路的制作方法

    本实用新型涉及充电系统领域,具体的说,是涉及一种带CC/CP及电子锁的车载充电机电路. 背景技术: 随着全球能源危机的加深,石油资源的日趋枯竭,人们越来越注重节能减排的应用,发展电动汽车是其中一个较为 ...

  3. kf真空接口_一种测试仪器真空接口转标准kf真空接口的转接头的制作方法

    一种测试仪器真空接口转标准kf真空接口的转接头的制作方法 [专利摘要]本实用新型涉及一种测试仪器真空接口转标准KF真空接口的转接头,包括接头.O型圈.螺钉,接头为不同内.外径的圆柱体,其一端内.外径与 ...

  4. 3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)

    上一篇文章总结了四种常用的多比特跨时钟域的设计.这篇我们主要来看一下 格雷码,文章目录如下: 什么是格雷码 格雷码转二进制码 二进制码转格雷码 N比特格雷码转N-1比特格雷码 什么是格雷码 ? A G ...

  5. base64编码_几分钟看懂Base64编码原理

    Base64简介 Base64是基于64个可打印字符(小写字母a-z,大写字母A-Z,数字0-9,符号"+","/" 再加上作为垫字的"=" ...

  6. 手机号段对应地区编码_漫画:“哈夫曼编码” 是什么鬼?

    在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构究 ...

  7. 曼彻斯特编码_两种编码方式以及两种帧结构

    一.不归零制编码(Non-Return to Zero) 对于不归零制编码是最简单的一种编码方式,正电平代表1,负电平代表0.如下图: 其实在不归零制编码中有一个很明显的缺陷,那就是它不是自同步码. ...

  8. python转换字符编码_转:Python常见字符编码及其之间的转换

    一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...

  9. python字符编码使用的是什么编码_不可不知的Python字符编码使用技巧(上)

    Python语言在网络爬虫领域应用的十分广泛.在爬虫的应用程序中,我们需要对网页上获取的数据进行处理,其中字符的编码.解码常常让人感到困惑:ASCII码.Unicode.字符编码什么的,很多朋友一直为 ...

最新文章

  1. 使php支持mbstring库以及使用
  2. 【ACM】杭电OJ 2010
  3. python结束if else_python | if else || where true 流程控制
  4. 剑指offer 算法 (发散思维能力)
  5. Community Server系列之二:页面之间的关系1[介绍]
  6. python定义方法self会被当作变量_为什么Python必须在方法定义和调用中显式使用“self”?...
  7. 【转】IsCallBack属性和IsPostBack属性有什么区别?
  8. 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
  9. Java ResultSet教程
  10. java大华监控_JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路。
  11. 大麦盒子显示服务器超时,大麦盒子卡顿怎么办?这几个方法可以快速解决
  12. Oracle19c安装(有失败成功记录)
  13. 人工智能管家机器人应当具备哪些功能?拥有家电控制能力是优势
  14. 什么样的岗位会最先被人工智能 (AI) 取代?
  15. 传入和传出电子邮件服务器,直接归档传入和传出的电子邮件【MDaemon篇】
  16. PD等多协议快充诱骗触发器SINK(“Power Z 弟弟 Power Low”)DIY
  17. Kafka时间轮学习总结
  18. 螺纹接口的分类及快速密封连接的方法有哪些?GripSeal格雷希尔G80内螺纹
  19. Google谷歌在世界各地的市场占有率
  20. 归一化差异雪指数 (NDSI)的简介

热门文章

  1. Wex5----错误收集
  2. 网站建设的费用有哪些方面?
  3. VC++控件的汉字及颜色的编程控制
  4. 深入理解Javascript--字符串类型常用算法整理(五)
  5. 基于MATLAB的条形码二维码识别系统
  6. 保护卡自动改IP程序实现方法(根据现有保护卡的种种迹象猜的)
  7. [词根词缀]idio/insul/it/字根及I和J词源知识
  8. 计算机会计综合实训心得体会,会计电算化实训心得总结
  9. R730调整风扇转速
  10. webdriver 启动Firefox(geckodriver),Chrome(chromedriver)浏览器