基于FPGA的出租车简易计数器Word文件下载.docx

上传人:b****6 文档编号:8440869 上传时间:2023-05-11 格式:DOCX 页数:12 大小:76.37KB
下载 相关 举报
基于FPGA的出租车简易计数器Word文件下载.docx_第1页
第1页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第2页
第2页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第3页
第3页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第4页
第4页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第5页
第5页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第6页
第6页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第7页
第7页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第8页
第8页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第9页
第9页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第10页
第10页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第11页
第11页 / 共12页
基于FPGA的出租车简易计数器Word文件下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的出租车简易计数器Word文件下载.docx

《基于FPGA的出租车简易计数器Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的出租车简易计数器Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。

基于FPGA的出租车简易计数器Word文件下载.docx

3.当里程数大于3km时,每km增加2元。

4.里程数精确到0.1km,价格精确到0.1元,价格和里程数用数码管显示。

2、顶层划分

管脚功能:

管脚名称

PIN

功能

CLK

input

输入时钟50M

rst

复位信号

start

计价启动/暂停/停止信号

Led1

output

里程数信号十位

Led2

里程数信号个位

Led3

里程数信号小数点后一位

Led4

价格信号十位

Led5

价格信号个位

Led6

价格信号小数点后一位

3、子模块描述

1、分频模块

<

1>

功能描述:

通过分频,产生一个10hz的分频时钟信号。

<

2>

原时钟信号

counter

计数信号

fclk

分频时钟信号

即模拟车轮每转动一圈所用时间

3>

实现原理:

当复位信号有效时,counter,fclk清零,当复位信号无效且计价开始信号有效时,counter开始自加,每加到2500000,fclk取反,生成一个1hz的时钟信号,即模拟车轮每转动一圈产生脉冲。

4>

代码:

modulefclk(CLK,rst,fclk);

inputCLK,rst;

outputfclk;

reg[24:

0]counter;

regfclk;

always@(posedgeCLKornegedgerst)

begin

if(!

rst)

fclk<

=1'

d0;

counter<

=25'

end

else

=counter+25'

d1;

if(counter==25'

d2500000)

=~fclk;

end

endmodule

2、计数模块

功能描述:

当fclk上升沿来临时,count自加1,当count加到25次时,即出租车行驶0.1km时(以车轮转一周为2m计算),标志信号load取反。

管脚功能:

计数器时钟信号

count

load

计数结束标志信号

当复位信号有效时,count,load清零;

当复位信号无效且计价开始信号有效时,count开始自加,每加到50,load<

=~load.

代码:

modulecounter(fclk,rst,start,load);

inputfclk,rst,start;

outputload;

regload;

reg[4:

0]count;

always@(posedgefclkornegedgerst)

load<

count<

=5'

else

=count+5'

if(start==1'

d1)

if(count==5'

d24)

load<

=~load;

endmodule

3、计价器模块

记录产生计价数据和里程数数据。

计数标志信号

Input

journey[9:

0]

Output

里程数信号

price[9:

价格输出信号

当复位信号有效时,count,load,journey,price清零;

当复位信号无效且计价开始信号有效时,load信号每经过一个周期,里程数自加0.1km,然后判断里程数与3km比较,若里程数小于3km,则价格信号price为7.0,当里程数大于3km,则价格信号price为70+2*(里程数-30)。

moduleprice(start,rst,load,journey,price);

inputstart,rst,load;

output[9:

0]journey,price;

reg[9:

0]cnt;

always@(posedgeloadornegedgerst)

cnt<

=10'

journey<

price<

=cnt+10'

price<

d70;

=cnt;

if(journey>

10'

d29)

=price+10'

d2;

endmodule

4、数码管显示模块

用数码管显示里程数和价格信号。

计价开始信号

在rst或价格信号或里程数信号变化时,将数码管的译码数据存入一个10位寄存器中,当复位信号有效时,数码管清零显示;

当复位信号无效时,将journey的百位给led1,并调用数码管显示出来,同理将journey个位和小数点后一位也调用显示,price同理。

module

led(journey,price,CLK,rst,start,led1,led2,led3,led4,led5,led6)

input[9:

inputrst,start,CLK;

output[6:

0]led1,led2,led3,led4,led5,led6;

reg[6:

0]LED[9:

0];

reg[3:

0]number[5:

always@(posedgeCLKornegedgerst)

begin

number[5]<

=journey/100;

number[4]<

=(journey%100)/10;

number[3]<

=journey%10;

number[2]<

=price/100;

number[1]<

=(price%100)/10;

number[0]<

=price%10;

rst)

led1<

=7'

b1000000;

led2<

led3<

led4<

led5<

led6<

begin

case(number[0])

4'

d0:

led6<

=7'

d1:

b1111001;

4'

d2:

b0100100;

d3:

b0110000;

d4:

b0011001;

d5:

b0010010;

d6:

b0000010;

d7:

b1111000;

d8:

b0000000;

d9:

b0010000;

default:

led6<

endcase

case(number[1])

led5<

led5<

case(number[2])

led4<

led4<

case(number[3])

led3<

led3<

case(number[4])

led2<

led2<

case(number[5])

led1<

led1<

end

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2