专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
FPGA
玩转VHDL-022 差分Manchester编码
2020-01-26 18:05
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
FPGA
17130
2
2
对于通信或计算机类专业来说,Manchester编码的概念应该人尽皆知。就是要把0编码成01,把1编码成10。“曼码”编码规则非常简单,解码也很容易。但是曼码解码时需要实现两个比特组合的对齐,换句话说,如果发端持续发送1而不发送0,那么接收端就无法保证正确解码。这种现象我们在此称之为曼码的相位模糊。如何解决曼码的相位模糊问题呢?方法是在曼彻斯特编码之前先进行差分编码,即用当前比特与前一比特相同表示0,用当前比特与前一比特相反表示1。例下图所示
dTx表示原始数据流,dif是差分编码数据,Manch是差分码流。那么在解码时只需要对Manch码每两个比特读取一个比特,读取的结果可能是dif,也可能是not dif。无论是哪一种情况,只需要对读取的结果取一次差分(当前比特与前一比特的异或),恢复的dRx与dTx完全相同。
VHDL代码如下图所示。
前26行用于产生仿真用随机数据流dTx,行20是伪随机发生器
行18的en为发送使能,用作二分频。二分频的原因是曼码把线路速率提高了一倍,如果每个时钟发送一个曼码比特,那么需要每两个时钟产生一比特数据源。行26用dTx指明发送数据流。
接下来是行27到46,如下图所示。
行29是差分编码,获得差分码dif。
行33是曼彻斯特编码
行31是按照时钟节拍把曼码的两个比特顺序移出。
36行之前,是对发送的仿真,dManch是发送的比特流。在接收端dManch是接收的比特流,36行之后是对接收解码的仿真。
行38使用ren而不使用en是为了表明接收的二分频与发送的二分频没有相位关系。
行40中prv表示前一个比特。
行41是解码,获得dRx。
行42和43是为了延时dTx,使得在仿真结果中y2Tx与dRx完全相同。
仿真结果如下图所示。
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
yuzhiguo1515
1楼-- · 2020-01-26 19:44
学习学习,学习学习。
加载中...
一周热门
更多
>
相关问题
如何用FPGA驱动LCD屏?
5 个回答
请教一下各位专家如何用FPGA做eDP接口?
6 个回答
FPGA CH7301c DVI(显示器数字接口)没有数字输出
7 个回答
100颗FPGA的板子,开开眼界
6 个回答
求教自制最小系统版
10 个回答
基于FPGA的X射线安检设备控制器
2 个回答
CycolneIVGX核心板,可扩展PCIE,光纤接口,大家来鉴赏一下
6 个回答
关于VHDL或Verllog程序稳定性的问题
11 个回答
相关文章
嵌入式领域,FPGA的串口通信接口设计,VHDL编程,altera平台
0个评论
Xilinx的FPGA开发工具——ISE开发流程
0个评论
基于FPGA的详细设计流程
0个评论
干货分享,FPGA硬件系统的设计技巧
0个评论
一种通过FPGA对AD9558时钟管理芯片进行配置的方法
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
FPGA
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>