信号模拟源参数下发:一帧ROM数据+一帧PN16数据+1000帧AOC数据

背景:裸数据的封装,通过PCIE通道传输,需要进行封装和提取。

白话思路:分别开启模块的使能信号,使用状态机控制其使能的开启,随着地址增加,输出参数值。

遇到的几个问题:

(1)PN16程序设置使能开启接口(ena_1),ROM自带使能开启接口;

(2)状态机的控制信号:地址控制使能的开启;

(3)使能信号总是需要提前开启,延迟一拍关闭;

(4)第三个模块,在第一个和第二个模块发送一遍之后,第三个模块循环发送1000次。

(4)设置三个状态的话,第一个状态ena_0开启,其他关闭,第二个状态 ena_1开启,其他关闭,第三个状态ena_2开启,其他关闭。地址为127时跳转。这样的话,从第二个模块相比,每次 都会丢掉第一个数据。

几点总结:

  代码编辑相关的总结:(1)模块连接不要怕,正常按照规则连接即可,注意变量类型,以及变量是输入还是输出信号。核心:需要用wire将模块中的信号引到reg中。

  此次编辑的过程中, 驱动信号错设置为了输出,所以一直报错,与信号的类型无关。

状态增加时,参数的位宽也要跟着增加。

针对使能提前开启,延迟关闭的特性,将第二个模块的使能信号提前一个clk,将重合的状态重新设置为一个状态。

  将重合部分单独设置一个新的状态。   第一模块和第二各模块,重叠部分,第二和第三个模块重叠部分。增加两个状态。       

错误误区:将三个模块全部连接到一个wire [15:0] q上,想着三个值轮流通过这个参数输出,结果验证不正确,分别使用q_0,q_1,q_2,连接。然后再输出即可。

最后一个问题

最后一步将wire类型的q_0,q_1,q_2,复制到寄存器中,由于又是赋值到寄存器中,又会延迟一拍,搞了三个小时才搞出来,搞得难受了。之前再使能开启时也同时赋值给DATAOUT,但是使能的开启和关闭并不能直接使用。总是丢掉一个数据,最后调试时,发现不能直接使用ena_0,ena_1,ena_2,作为使能,需要将其都打一拍,然后,将其作为DATAOUT输出的判断条件。

总结:PN16伪随机码的一个clk内产生16bit随机码;状态机控制不同模块的输出以控制不同模块的输出顺序和次数;确定状态机的控制参数;使能开启之后的数据输出延迟,需要提前开启下一模块的使能信号的处理;三个模块输出之后,将其放入到一个寄存器中,作为一个接口;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值