FPGA:画了一个计价器的速度模块 如图 不知道该用什么原理编辑
发布网友
发布时间:2022-05-10 21:40
我来回答
共2个回答
热心网友
时间:2023-11-03 19:43
首先假设速度单位为km/s,以速度为10km/s为例,前进100m需要的时钟周期数为(100/10k)*20M=200000;verilog HDL代码如下:
mole jijiaqi(clk,reset,start,stop,sp,clkout);
input clk,reset,start,stop;
input[2:0] sp;
output clkout;
reg[17:0] num,fenpin;
reg clk_out,state;
reg[2:0] sp_before;
always @ (reset or sp)
begin
if (reset==0)
fenpin=200000; //初始为10Km/s
else
case(sp)
0: fenpin=200000;
1: fenpin=100000;
2: fenpin=66666;
3: fenpin=50000;
4: fenpin=40000;
5: fenpin=33332;
6: fenpin=28570;
7: fenpin=25000;
endcase
end
always @ (posedge clk or negedge reset)
if (reset==0) //假设低电平复位
begin
num<=0;
clk_out<=0;
state<=0;
sp_before<=0;
end
else if(sp_before!=sp)
begin num<=0; sp_before<=sp; end
else
if(start)
case(state)
0: if(!stop)
begin
num<=num+1;
if(num==fenpin)
begin clk_out<=1; num<=0; state<=state+1; end
end
1: begin clk_out<=0; state<=0; end //每前进一百米clkout输出一个时钟周期的高电平信号
endcase
assign clkout=clk_out;
endmole
ps:由于速度太小,或100m的距离太大,所以仿真时间比较长。望采纳!
热心网友
时间:2023-11-03 19:43
不知道该用什么原理编辑?
你具体问题是什么啊?追问只画了图,但是不知道模块该怎么编辑才能实现clkout的输出