数字IC手撕代码-XX公司笔试真题(脉冲密度调制)
题目描述

使用HDL实现脉冲密度调制(PDM),即根据输入12bit pdm_in,按下列要求输出不同占空比的方波:
① 当pdm_in>10,pdm_out即输出的波形占空比为4/pdm_in;
② 当pdm_in<=10,pdm_out不翻转输出固定值。
其输入输出接口为:
解决思路
脉冲密度调制(PDM),通过调节波形的占空比来改变脉冲的密度。信号逻辑为高的时间T_hign除以周期T_cycle所得到的比值叫做占空比。
实现第一个要求,当pdm_in>10时,可以让新信号在4个clk周期为高,在(pdm_in-4)个clk周期为低,这样就实现了一个pdm_in分频,占空比为4/pdm_in。
第二个要求,当pdm_in<=10时,pdm_out就不让他翻转,并且让实现分频的计数器清零。
代码
testbench
输出波形

从波形中可以看到我们设置了pdm_in = 20,pdm_out如我们所想,输出为占空比4/20的方波。当设置pdm_in = 12时,pdm_out输出为占空比4/12的方波。当设置pdm_in < 10时,dpm_out保持原来的状态不变。