【手撕代码】HDB3编解码

news2025/2/27 7:28:03

【手撕代码】HDB3编解码

1. 来源和需求

HDB3编解码任务来源于2023年3月4日“FPGA技术讨论群”的一次活动《101群第一次FPGA编码交流研讨会》,要求设计HDB3编解码,本篇文章作者【roy2022】,经作者授权后转发,以下所有文件版权归作者所有。

输出物包括:

  1. 编码模块。

  1. 解码模块。

  1. 编解码的仿真模块。

  1. 设计报告、代码工程包等。

HDB3的编码规则、编码及解码模块接口定义见《101群第一次FPGA编码交流研讨会》(在最后的代码链接中)。

2. 设计

2.1. 需求分析

此次需求提供的十分明确,给出了编码规则及示例,明确了编解码端口要求;仿真模块根据设计进行适配。

2.2. HDB3编码模块

对HDB3编码规则解读如下:

  1. 复位(RST)有效(1)时,进行初始化,输出VALID为0、HDB3_CODE为0编码(000)。采用异步复位、同步释放。当复位(RST)无效(0)时进行编码。

  2. 在输入时钟CLK的上升沿进行转换。

  3. 在CLK上升沿进行判别时,当输入READY为有效(1),DATA_IN有效,为0或1。

  4. 对READY和DATA_IN打一节拍,人为产生1个CLK的延时。

  5. 在CLK上升沿进行编码判别,DATA_IN有效为1时,立即进行编码,若存在待转换的0,待转换的0也进行编码,并加入待输出编码队列;当DATA_IN有效为0时,若存在待转换的0的个数为(0~3)、也即当前为第4个0,则进行编码,并加入待输出编码队列,否则暂停编码。

  6. 在CLK上升沿进行编码输出,若存在待输出编码,则输出VALID为1、HDB3_CODE为对应编码。

  7. 一共7种编码形式,对应0、±1、±B、±V;1可能被编码为+1、-1,0可能被编码为0、+B、-B、+V、-V。1、B极性交替(+、-交替出现)、V极性交替;第一个编码极性为+。当出现0时,若是连续的第4个0,则替换为V(极性按交替规则),然后若V极性和前一个1或B的极性不同,则将连续4个0中的第1个0替换为B且极性和V相同,其余0编码为0. 由此可见,编码应在RST无效(为0)、READY有效(为1)时按照DATA_IN(0或1)、积累的待编码0数量(0~3)、上一个1或B的极性、上一个V的极性开展,编码后更新待输出编码数量和待输出编码队列。故在编码模块“tt_hdb3_encoder”中设置了如下信号量:

  8. tmp_rst:std_logic_vector(1 downto 0),初始化为00,用于复位同步释放,同时将复位输入RST有效性由1变为0.

  9. tmp_din,tmp_ready:std_logic,分别对DATA_IN和READY打一节拍。

  10. tmp_dataout,深度为4、宽度为3的输出编码缓冲,最多4个。

  11. flag_1BPOL、flag_VPOL:std_logic,1或B极性、V极性标志位,表征上一个1/B/V的极性,0表示-、1表示+。

  12. cnt_tbpo:natural range 0 to 7 := 0,待输出编码个数,实际范围为(0~4)。

  13. cnt_tbc:natural range 0 to 3 := 0,待编码0个数,范围为(0~3)。 当cnt_tbpo>0时,每个clk上升沿将输出编码缓冲的(cnt_tbpo-1)编码对外输出。 具体代码实现使用VHDL,在ISE14.7中完成,文件为“tt_hdb3_encoder.vhd”。 2.3. HDB3解码模块 相对于编码,HDB3解码较为简单,输入有效时,将±1解码为1、将0/±B/±V解码为0;解码模块tt_hdb3_decoder的复位、输入打节拍处理同编码模块。 具体代码实现使用VHDL,在ISE14.7中完成,文件为“tt_hdb3_decoder.vhd”。 2.4. 编解码仿真模块 编解码仿真需要提供可控的输入数据流DATA_IN。此次,通过附加test_2bit模块来提供仿真数据流,建立一个多位的std_logic_vector(80位),在CLK时钟上升沿从低位逐位移出。 仿真准备:将test_2bit、tt_hdb3_encoder、tt_hdb3_decoder例化在test_top工程下,但是将test_2bit的输入时钟和编解码模块的输入时钟取反,便于在编解码仿真时输入数据稳定。

c8ae0add5bd008c7adfacd471a841a0c.png

3. 验证

由于预建立了仿真工程test_top,仿真文件tbw_test_top处理较为简单,设置RST和READY即可。在ISE14.7环境下使用ISim完成了仿真验证。

在Vivado2018.3环境下(仿真Vivado Simulator)也进行了仿真验证。

f962f86ca694383790a4306878c69c28.png

资源使用情况(Target Device: xc7k325t-2ffg900,ISE14.7):

Module NameSlicesSlice RegLUTsBUFG说明
test_top1/360/471/791/1测试top文件
Inst_test_2bit3/38/88/80/0测试激励文件1
Inst_tt_hdb3_decoder4/48/83/30/0解码模块
Inst_tt_hdb3_encoder28/2831/3167/670/0编码模块

代码链接

https://github.com/suisuisi/FPGATechnologyGroup/tree/main/HDB3

致谢

最后感谢大家的积极参与这次活动,同时感谢这次活动的组织者[水牛]哥,后续我们会继续类似的活动,希望大家能积极参与,奖励会逐渐丰富~

2b1c707f02b7a3dca2c1a4f9c6378d8b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考-高级系统架构师经验分享

【摘要】 2022年7月17从女朋友嘴里了解到有软考这个东西,7月20——7月23日,上班空闲时间百度详细了解了软考的内容、大纲、通过之后的收益,于是决定备考高级架构师考试并上网收集了所有能收集的资料(不论好坏,完成收集后再筛选);经过3个月的复习,2022年11月5日,第一次…

Extra Finance 主网测试版上线,完成任务领空投

DeFi 的广泛应用将上一轮牛市推向顶峰,也让区块链具有了更多的拓展性。经过熊市的洗礼,DeFi 应用开始升级和优化,并且衍生出更多更加具有实用性和创新性的新产品。DeFi 已经成为区块链的基础设施,为更多的应用和创新提供帮助。下一…

ENVI为不含地理参考信息的栅格影像手动添加地理、投影坐标系

本文介绍基于ENVI软件,对不含有任何地理参考信息的栅格遥感影像添加地理坐标系或投影坐标系等地理参考信息的方法。 我们先来看一下本文需要实现的需求。现有以下两景遥感影像,其位于不同的空间位置;但由于二者均不含任何地理参考信息&#…

SOFA Weekly|SOFAArk 社区会议回顾、Layotto 社区会议预告、社区本周贡献

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展 欢迎留言互动~ SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&am…

Cisco 产品下载链接汇总 2023 持续更新中

Cisco 产品链接汇总 2023 持续更新中 IOS-XE, IOS-XR, NX-OS & FXOS based on linux kernel 请访问原文链接:https://sysin.org/blog/cisco/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 本站 Cisco 产品汇…

UE5利用Cesium for Unreal 部署和加载服务器上的倾斜摄影

主要步骤: 下载 Tomcat 下载 JDK 设置系统变量 运行UE程序 下载 Tomcat 网址:https://tomcat.apache.org/ 可以下载最新版,也可以下载历史版本,查看 2.下载JDK https://www.oracle.com/java/technologies/downloads/ 根据Tom…

算法修炼之练气篇——练气二十一层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

OLS样本估计量抽样分布模拟

OLS样本估计量抽样分布模拟 文章目录 OLS样本估计量抽样分布模拟1 OLS估计量分布2 R语言实现 1 OLS估计量分布 对于线性回归方程 Y β 0 β 1 X ε Y \beta_0\beta_1 X \varepsilon Yβ0​β1​Xε 利用普通最小二乘法(OLS)估计上述方程参数使的假定(之一)是…

路径规划算法:基于麻雀优化的路径规划算法- 附代码

路径规划算法:基于麻雀优化的路径规划算法- 附代码 文章目录 路径规划算法:基于麻雀优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法麻雀…

智能硬件项目全流程

智能硬件项目全流程 阶段 流程节点 细分活动 活动说明 核心关注点 市场调研 市场调研 收集市场需求 1. 目标客户群体的具体需求与痛点是什么?他们最需要什么产品与服务? 2. 谁是我们的竞争对手?他们的产品优缺点及定价策略是什么?现有市场竞争态势如何?我们有什么…

draw.io二次开发(4)事件捕获

本篇阐述对drawio中如何捕获并处理事件。 绘制一个曲线箭头,可以看到上图中红框部分1.可以通过下拉框选择箭头的起止端形状,2.可以通过复选框选择是否产生草稿线条,3.可以双击曲线添加文字。 1. 起止端形状选择下拉框 在grapheditor/Form…

安立Anritsu MS2711E,MS2712E 手持频谱分析仪

Anritsu安立MS2712E MS2711E频谱分析仪 特征: 9 kHz 至 4 GHz 测量:占用带宽、信道功率、ACPR、C/I、频谱发射模板、场强 干扰分析仪:频谱图、信号强度、RSSI、信号 ID、干扰映射 跟踪发生器,也用作 CW 源 覆盖图&#xff1a…

Request 和 Response详解

1.Request和Response的概述 # 重点 1. service方法的两个参数request和response是由tomcat创建的2. request 表示请求数据, tomcat将浏览器发送过来的请求数据解析并封装到request对象中servlet开发者可以通过request对象获得请求数据 3. response 表示响应数据,服务器发送给浏…

科罗拉多州立大学发布 CSU-MLP 模型,用随机森林算法预测中期恶劣天气

: By 超神经 内容一览:近期,来自美国科罗拉多州立大学与 SPC 的相关学者联合发布了一个基于随机森林的机器学习模型 CSU-MLP,该模型能够对中期 (4-8天) 范围内恶劣天气进行准确预报。目前该成果刊已发表在《Weather and Forecasti…

收藏!16款ChatGPT工具

一、ChatGPT for google 一个浏览器插件,可搭配现有的搜索引擎来使用。 最大化搜索效率,对搜索体验的提升相当离谱: 安装完插件后,在搜索引擎搜索任何问题,都能获取两份答案。 左边是谷歌抓取的全网资源&#xff0c…

PoseiSwap:合规、隐私与支持更广泛的资产

Nautilus Chain 代表了公链赛道发展的一个新的范式形态,作为目前行业内首个 Layer3 链,是目前行业内第一个并行化且运行速度最快的EVM Rollup 方案。作为首个模块化链,存储、计算、共识等都在不同的模块中,意味着其能够获得更高的…

QML渐变(Gradients)

目录 一 QML介绍 二 QML的使用场合 三 实例演示 一 QML介绍 QML是Qt Quick的缩写,它是一种新型的、面向对象的、跨平台的脚本语言,可以用来描述用户界面或应用程序的交互逻辑。QML可以在Qt应用程序中使用,也可以在其他JavaScript应用程序中…

IM即时通讯系统[SpringBoot+Netty]——梳理(一)

文章目录 一、为什么要自研一套即时通讯系统1、实现一个即时通讯系统有哪些方式1.1、使用开源产品做二次开发或直接使用1.2、使用付费的云服务商1.3、自研 2、如何自研一套即时通讯系统2.1、早期即时通讯系统是如何实现2.2、一套即时通讯系统的基本组成2.3、当下的即时通讯系统…

Prometheus监控指标查询性能调优

01 背景 在《SRE: Google运维解密》一书中作者指出,监控系统需要能够有效的支持白盒监控和黑盒监控。黑盒监控只在某个问题目前正在发生,并且造成了某个现象时才会发出紧急警报。“白盒监控则大量依赖对系统内部信息的检测,如系统日志、抓取提…

ArcGIS创建渔网Create Fishnet工具生成指定大小格网

本文介绍在ArcMap软件中,通过“Create Fishnet”工具创建渔网,从而获得指定大小的矢量格网数据的方法。 首先,我们在创建渔网前,需要指定渔网覆盖的范围。这里我们就以四川省为例,在这一范围内创建渔网;其中…