Files
MM7020/hdl/Normalization_Factor_0_8125.v

61 lines
2.2 KiB
Verilog
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`timescale 1ns / 1ns
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 21:27:25 01/18/2018
// Design Name:
// Module Name: Normalization_Factor_0_8125
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module Normalization_Factor_0_8125 #(
parameter WIDTH = 4'd8
) (
input clk,
input [WIDTH-1:0] din_NF, //输入为非负数
output reg [WIDTH-1:0] dout_NF = 8'd0 //输出相对输入延时3个时钟周期
);
reg [WIDTH-1:0] din_NF_reg0 = 8'd0, din_NF_reg1 = 8'd0;
reg [WIDTH-1:0] sum_1 = 8'd0, sum_2 = 8'd0;
always @(posedge clk) begin
din_NF_reg0 <= din_NF;
din_NF_reg1 <= din_NF_reg0;
end
always @(posedge clk) begin //对输入数据乘以系数0.8125
sum_1 <= (din_NF >> 1) + (din_NF >> 2);
sum_2 <= sum_1 + (din_NF_reg0 >> 4);
case ({
din_NF_reg1[3:0]
}) //matlab中用round函数,verilog中默认是floor函数
4'b0000: dout_NF <= sum_2 + 8'd0;
4'b0001: dout_NF <= sum_2 + 8'd1;
4'b0010: dout_NF <= sum_2 + 8'd1;
4'b0011: dout_NF <= sum_2 + 8'd1;
4'b0100: dout_NF <= sum_2 + 8'd0;
4'b0101: dout_NF <= sum_2 + 8'd1;
4'b0110: dout_NF <= sum_2 + 8'd1; //32个数,0~15和16~31的数是一样的,所以用din_NF_reg1&4'b1111,
4'b0111: dout_NF <= sum_2 + 8'd2; //例如,din_NF_reg1=6'd19,经过din_NF_reg1&4'b1111之后,变成了6'd3
4'b1000: dout_NF <= sum_2 + 8'd1;
4'b1001: dout_NF <= sum_2 + 8'd1;
4'b1010: dout_NF <= sum_2 + 8'd1;
4'b1011: dout_NF <= sum_2 + 8'd2;
4'b1100: dout_NF <= sum_2 + 8'd1;
4'b1101: dout_NF <= sum_2 + 8'd2;
4'b1110: dout_NF <= sum_2 + 8'd1;
4'b1111: dout_NF <= sum_2 + 8'd2;
default: dout_NF <= 8'd0;
endcase
end
endmodule