👉注:更多精彩请看:面试常问的verilog代码汇总 一文
例如,相邻16个点的数据累加:
- 数据采用补码形式相加;
- 在做累加之前要提前给数据位宽扩展
- 构造一个与源时钟的相反的反向时钟,将源时钟和反向时钟做“与逻辑”计算,创建一个采样时钟脉syn_pulse;
- 用计数器计算syn_pulse个数,每当出现syn_pulse,数据就累加一次;
- 计满16次就将数据输出;
时序图如下:
代码如下:
//相邻16点相加
module sigma_16(clk,rst_n,data_in,syn_in,data_out,syn_out);
input clk,rst_n;
input [7:0]data_in;//采样信号
input syn_in;//采样时钟
output [11: