完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
题目描述;
以clk为基准,设计一个秒计数器,在指定的计数值产生中断,实时输出当前的秒计数值 (1) clk时钟输入,频率为32.768KHz (2) rst_n是异步复位输入,低电平有效,复位整个系统,为高则整个系统开始工作,其上升沿易同步于clk (3) statr是启动信号,一个clk时钟周期的正脉冲,同步于clk。alarm[7:0]是配置信息,单位为秒,同步于clk (4) 工作模式:收到start后,秒计数器sec_cnt从零开始以秒为单位来计数,计数到alarm[7:0]指定的数值时,产生一个int pulse(一个时钟周期的正脉冲),秒计数器回0并停止 module timer( input clk, input rst_n, input start, input [7:0] alarm, output reg [31:0] sec_cnt, output int_pulse ); reg [14:0] one_sec_cnt; //时钟翻转计数器 reg state; //计数状态 parameter TIMES=32767; //时钟计数器计数值,计数32767次,刚好15位就可以,计满自动溢出 always@(posedge clk or negedge rst_n) if(!rst_n) begin state《=1‘b0; end else if(start) begin state《=1’b1; end else if(sec_cnt==alarm) begin state《=1‘b0; end always@(posedge clk or negedge rst_n) if(!rst_n) begin one_sec_cnt《=15’d0; end else if(state) begin one_sec_cnt《=one_sec_cnt+15‘d1; end else begin one_sec_cnt《=15’d0; end always@(posedge clk or negedge rst_n) if(!rst_n) begin sec_cnt《=32‘d0; end else if(state) begin if(&one_sec_cnt) sec_cnt《=sec_cnt+32’d1; else sec_cnt《=sec_cnt; end else begin sec_cnt《=32‘d0; end assign int_pulse=sec_cnt==alarm; endmodule |
|
|
|
只有小组成员才能发言,加入小组>>
4350个成员聚集在这个小组
加入小组3287 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4233 浏览 1 评论
4239 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:07 , Processed in 0.694495 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号