在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6316|回复: 9

[求助] 加帧头帧尾怎么用verilog实现

[复制链接]
发表于 2020-6-28 13:31:07 | 显示全部楼层 |阅读模式
20资产
本帖最后由 lbzhu 于 2020-6-28 14:31 编辑

有一个固定长度(由使能信号指示)的序列,在序列前面加上固定长度的帧头,在序列后面加上固定长度的帧尾,帧头帧尾都一样,长度相同,怎么用verilog实现

发表于 2020-6-28 14:22:05 | 显示全部楼层
你这个能不能具体一点。
发表于 2020-6-28 15:56:55 | 显示全部楼层
推荐个数字设计深度入门课,看完自己写:
https://ke.qq.com/course/package/24207?tuin=64ce5e2a
发表于 2020-6-28 16:23:52 | 显示全部楼层
fifo写,fifo读后concat。使能做fifo wr,rd 控制。
 楼主| 发表于 2020-6-28 19:34:56 | 显示全部楼层


A1985 发表于 2020-6-28 16:23
fifo写,fifo读后concat。使能做fifo wr,rd 控制。


是不是这样的,先将数据序列写进fifo,检测到有数据时,将帧头付给输出,完了读fifo将数据输出,再讲帧尾输出,帧头帧尾都是parameter参数表示
发表于 2020-6-29 08:12:39 | 显示全部楼层
状态机实现比较简单吧
发表于 2020-6-29 12:37:08 | 显示全部楼层
本帖最后由 qladxk2008 于 2020-6-29 12:38 编辑

always@(posedge clk ...)
en_d<=en;data_d<=data;


start = en & !en_d;
end = !en & en_d;



//concat the data
always@(posedge clk ...)
if (start)
data_in <= start_frame;
else if (end)
data_in <= end_frame;
else
data_in <= data_d;




 楼主| 发表于 2020-6-29 15:03:14 | 显示全部楼层


qladxk2008 发表于 2020-6-29 12:37
always@(posedge clk ...)
en_d


帧头有13个数,帧尾也是13个数,另外数据也有好几个数,这样的话怎么实现
发表于 2020-6-29 15:24:01 | 显示全部楼层


lbzhu 发表于 2020-6-29 15:03
帧头有13个数,帧尾也是13个数,另外数据也有好几个数,这样的话怎么实现
...


发送过程用状态机控制,每帧的数据段通过不同状态标识,就可以了,发送接收数据帧是数字通信中最基本,其实也是相对比较简单的东西
发表于 2022-2-24 11:10:11 | 显示全部楼层
本帖最后由 Love24 于 2022-2-24 11:18 编辑

简单的做法就是把数据valid信号展宽,假如首尾各加一个cycle的帧头帧尾,那么valid打两拍再与自己相或,这样就实现了valid展宽两拍的目的,然后再找上升沿、下降沿添加帧头、帧尾,或者引入计数器确定帧头帧尾的位置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 17:31 , Processed in 0.022079 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表