一种关于 16bit 转 8bit 位宽转换的实现
1、需求
(1)不使用 FIFO
(2)多个 16bit 数据转 8bit 数据
2、时序设计
图 1 16bit 转 8bit 时序设计图
表 1 时序图信号说明
信号
位宽
描述
备注
clk
1bit
时钟信号
本工程时钟 50MHz
cnt
nbit
计数器(位宽自定)
本工程计数器 4bit,计数 0~9
flag
1bit
输出 din 标志信号,flag 为 1 时输出 din
高 8 位
flag_r
1bit
输出 din_r 标志信号,由 flag 打拍而来,
为 1 时输出 din_r 输出低 8 位
din
16bit
16bit 输入数据
din_r
16bit
din 打拍后的数据
dout
8bit
8bit 输出数据
3、仿真图
图 2 16bit 转 8bit 仿真图
4、设计思路
16bit 转 8bit 就相当于一个时钟周期输入一次 16bit 数据,再将此 16bit 数据通过两个时钟周期输出,
通俗点就是拿到一次数据,输出两次。
5、总结
此工程在使用 tb 仿真测试后,数据输出正常。通过此方法可以举一反三,比如 32bit 转 16bit、32bit
转 8bit……只要是多 bit 转少 bit 且是整数倍均可使用此方式实现。当然此方式还是可以优化的,比如只在特
定位置设置 flag 信号,用 flag 信号的高低电平进行数据输出,不对 flag 信号进行打拍操作,减少寄存器。