以下是顶层
//25°C时,声音在空气中传播的速度为346m/s
//因此取距离s的单位是米(m),时间t的单位是秒(s),有 s = 346*t/2
//若取距离s的单位是毫米(mm),时间t的单位是10微秒(10us),有s*0.001 = 346*t*0.00001/2,即s = 1.73*t
//为了便于计算,取s = ((1.73*256)*t)/256 = (443*t)/256
//VX:Tony555170
//510075462@qq.com
module distance_compute(
input clk,
input rst_n,
input [19:0] echo_filter_num,
output [19:0] echo_disp_num
);
wire [31:0] mult_num;
mult mult_inst(
.clock(clk),
.dataa(12'd443), //input [11:0] dataa
.datab(echo_filter_num), //input [19:0] datab
.result(mult_num) //output [31:0] result
);
wire[19:0] thousand_quotint;
wire [15:0] thousand_remain; //千位除法运算结果与余数寄存器
div div_thousand(
.clock(clk),
.denom(16'd1000), //分母 input [15:0] denom;
.numer(mult_num[27:8]), //分子 input [19:0] numer;
.quotient(thousand_quotint),//商 output [19:0] quotient;
.remain(thousand_remain) //余数 output [15:0] remain;
);
wire [19:0] hundred_quotint;
wire [15:0] hundred_remain; //百位除法运算结果与余数寄存器
div div_hundred(
.clock(clk),
.denom(16'd100), //分母 input [15:0] denom;
.numer(thousand_remain), //分子 input [19:0] numer;
.quotient(hundred_quotint),//商 output [19:0] quotient;
.remain(hundred_remain) //余数 output [15:0] remain;
);
wire [19:0] ten_quotint;
wire [15:0] ten_remain; //百位除法运算结果与余数寄存器
div div_ten(
.clock(clk),
.denom(16'd100), //分母 input [15:0] denom;
.numer(hundred_remain), //分子 input [19:0] numer;
.quotient(ten_quotint),//商 output [19:0] quotient;
.remain(ten_remain) //余数 output [15:0] remain;
);
assign echo_disp_num = {thousand_quotint[3:0],hundred_quotint[3:0],ten_quotint[3:0],ten_remain[3:0]};
endmodule
欢迎爱学习的小伙伴们