quartus 计数模块如何计时?

一个always 块时钟计时一次,(50Mhz)计时时长20ns,如果要计时500,000(500us)ns,则要计数25,000次。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于FPGA verilog设计十字路口交通灯实验Quartus9.1工程源码+设计说明文件,可以做为你的学习实验参考。 module traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT); //端口说明 output[7:0] ACOUNT,BCOUNT; output[3:0] LAMPA,LAMPB; input CLK,EN; //内部信号说明 reg[7:0] numa,numb; //ACOUNT和BCOUNT的内部信号 reg tempa,tempb; reg[2:0] counta,countb; //方向A和方向B的灯的状态 reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft; reg[3:0] LAMPA,LAMPB; //设置各交通灯的持续时间初始化值,红灯的值由另一个方向的黄灯和绿灯计算得出。 always @(EN) if(!EN) begin //使能信号EN无效时,对交通灯的计数值进行初始化 ared <=8'd55; //55 秒 = 30 + 5 + 15 + 5 ayellow <=8'd5; //5 秒 agreen <=8'd40; //40 秒 aleft <=8'd15; //15 秒 bred <=8'd65; //65 秒 = 40 + 5 + 15 + 5 byellow <=8'd5; //5 秒 bleft <=8'd15; //15 秒 bgreen <=8'd30; //30 秒 end assign ACOUNT=numa; //8位码管输出 assign BCOUNT=numb; //8位码管输出 //控制A方向四种灯的模块 always @(posedge CLK) begin if(EN) begin //使能有效时,交通灯开始工作 if(!tempa) begin tempa<=1; case(counta) //控制灯状态的顺序 0: begin //状态0 numa<=agreen; //直行绿灯亮 LAMPA<=2; //输出0010 counta<=1; //进入下一个状态 end 1: begin //状态1 numa<=ayellow; //黄灯亮 LAMPA<=4; //输出0100 counta<=2; //进入下一个状态 end 2: begin //状态2 numa<=aleft; //左转绿灯亮 LAMPA<=1; //输出0001 counta<=3; //进入下一个状态 end 3: begin //状态3 numa<=ayellow; //黄灯亮 LAMPA<=4; //输出0100 counta<=4; //进入下一个状态 end 4: begin //状态4 numa<=ared; //红灯亮 LAMPA<=8; //输出1000 counta<=0; //进入下一个状态(状态0) end default: //默认状态 LAMPA1) //判断倒计时未归零时分别对高地位进行递减 if(numa[3:0]==0) begin numa[3:0]<=4'b1001; numa[7:4]<=numa[7:4]-1; end else numa[3:0]<=numa[3:0]-1; if (numa==2) tempa<=0; //倒计时结束,返回灯状态变化判断,将进入下一个状态 end end else begin LAMPA<
电子设计课设报告-基于CYCLONE FPGA设计的出租车计价器+Quartus9.1工程源码, 1.引言: 随着EDA技术的高速发展,电子系统的设计技术发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。本文介绍了一个以Altera公司可编程逻辑芯片cyclone2系列的EP2C5T144C8的fpga芯片为控制核心、附加一定外围电路组成的出租车计费器系统。随着社会的不断进步,人们生活水平的不断提高,出租车逐渐成为人们日常生活不可缺少的交通工具。而计价器作为出租车的一个重要组成部分,关系着出租车司机和乘客双方利益,起着重要的作用,因而出租车计价器的发展非常迅猛。 2.系统规范: 2.1 出租车计价器的要求: 该计价器的计费系统:行程 3公里(不含3公里)内,且等待累计时间2分钟内(不含2分钟),起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费。 并能显示行驶公里、等待累计时间、总费用。 主要技术指标 计价范围:0~999.9元 计价分辨率: 0.1元 计程范围:0~99公里 计程分辨率: 1公里 计时范围:0~59分 计时分辨率: 分 2.2 ,系统组成框图: 出租车的一般计费过程为:出租车载客后,启动计费器,整个系统开始运行,里程计数器和时间计数器从0开始计数,费用计数器从6开始计算。再根据行驶里程或停止等待的时间按以上的标准计费。若在行驶状态,则计程器开始加计数,当路程超过二公里后,计费器以每公里1.6元累加。若出租车停止等待状态,则计时器开始加计数,当时间超过三分钟后,计费器以每分钟1.2元累加。出租车到达目的地停止后,停止计费器,显示总费用。 根据出租车计费器的工作过程,本系统采用分层次、分模块的方式设计,其本系统组成框图如下所示。其中行驶路程计数模块、等待时间计数模块和计费模块,用来统计路程、等待时间 和总费用,控制模块是用来控制计费模块码管显示模块用来显示行驶的公里、等待累计时间和总费用等信息。系统框图如下所示: .各模块设计: 本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。为了便于显示,这里的路程、时间和费用计数器均用十六进制表示。 (1)顶层模块 /*顶层模块变量定义 reset 0为复位,1为启动 stop 0为运行,1为停止 start 0为暂停,1为行驶 clk_count 为轮胎传感器发出的表示转一圈的脉冲信号,实验时用为1024hz时钟信号 clk_1khz 系统工作的主要时钟信号,实验用1024hz时钟信号 clk 时间模块的时钟信号,实验用8hz时钟信号 timeh,timel 分钟的十位和个位 distanceh,distancel 公里的十位和个位 bai,shi,ge,xiao 费用的十位和个位 */ module taxi(reset,start,stop,clk0,seg1,seg2,seg3,seg4,change,); input reset,start,stop,change,clk0; output [6:0] seg1,seg2,seg3,seg4; wire time_enable,distance_enable,select_clk,km,clk_count,clk,clk_1khz; reg [3:0]view1,view2,view3,view4; wire [3:0] timeh,timel,bai,ge,shi,xiao,distanceh,distancel; time_count u8(clk,reset,start,stop,timel,timeh,time_enable); km_count u1(.clk_count(clk_count),.reset(reset),.start(start),.km(km)); distance u2(.clk_1khz(clk_1khz),.start(start),.reset(reset),.stop(stop),.distancel(distancel),.distanceh(distanceh),.km(km),.distance_enable(distance_enable)); select_clk u3(.clk_1khz(clk_1khz),.reset(reset),.start(start),.stop(stop),.time_enable(time_enable),.km(km),.select

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值