网站大量收购独家精品文档,联系QQ:2885784924

秒脉冲产生电路模块设计.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
秒脉冲产生电路模块设计

2.3.3 秒脉冲产生电路模块设计 2.3.3.1 电路模块的作用 该模块的作用是将 10kHz 时钟信号经过10000 分频得到 1Hz 的秒脉冲时钟信号,做为 秒计数电路模块的输入时钟信号。因此,该模块有2 个端口,输入端口为clk_10kHz,输出 端口为clk_1Hz 。 2.3.3.2 设计思路 输入的时钟信号频率为 10kHz,周期为 0.01ms ;输出的时钟信号频率为 1Hz,周期为 1s;由此可看出,输出信号的频率比输入信号的频率降低了10000 倍,因此周期提高了10000 倍;因此在编写程序代码时,设计一个中间计数器jsq ,目的是对输入信号进行计数;当计 数器jsq 从0 计数到4999 时,计数了5000 次,输出信号持续为高电平;而当计数器jsq 从 5000 计数到9999 时,同样也计数了5000 次,然后输出信号持续为低电平;由此可以得知 输出的信号周期为输入信号的10000 倍,从而实现了10000 分频的目的,并使得输出信号的 占空比为50% 。 2.3.3.3 程序代码及代码解析 1. 模块声明 module FDIV(clk_1Hz,clk_10kHz); /*模块声明*/ 。。。。。。 endmodule 模块名:FDIV ; 两个端口:clk_1Hz 和clk_10kHz 2. 端口定义:注意输入信号和输出信号的位宽 input clk_10kHz; /*输入端口定义*/ output clk_1Hz; /*输出端口定义*/ 3. 数据类型说明 reg clk_1Hz; /* clk_1Hz 为寄存器型变量*/ reg[13:0] jsq; /*jsq 为中间计数器变量*/ 由于电路中需要一个计数器来计数,因此定义了一个中间变量jsq ,且数据类型为寄存 器型(reg 型),该计数器能从0 计数到9999 (10000 次),故位宽为14 位。 4. 逻辑功能描述 (1)代码一: always @(posedge clk_10kHz) begin if(jsq4999) begin jsq=jsq+1;clk_1Hz=1; end else if(jsq==9999) begin jsq=0; clk_1Hz= 0; end else begin jsq=jsq+1; clk_1Hz= 0; end end 代码解析: 每当输入信号clk_10kHz 的上升沿到来时,执行always 中的begin -end 块内语句。 (1)若计数器jsq 的数值是否小于4999 ,执行第一个if 语句中的begin -end 块内语句:① “jsq=jsq+1 ”,表示将计数器jsq 数值加 1;② “clk_1Hz=1 ”,表示输出信号clk_1Hz 的 值为高电平“1”; (2 )若计数器jsq 的数值等于 9999,则执行 else if 语句中的 begin -end 块内语句:① “jsq=0 ”,表示将计数器jsq 清零;② “clk_1Hz=0 ”,表示输出信号clk_1Hz 的值为低电 平“0 ”; (3 )若计数器jsq 的数值满足条件:4999 ≤jsq 9999 ,则执行最后一条else 语句中的 begin -end 块内语句:① “jsq=jsq+1 ”,表示将计数器jsq 数值加1;② “clk_1Hz=0 ”, 表示输出信号clk_1Hz 的值为低电平“0 ”; 由此可以看出:输入信号clk_10kHz 每经过一个周期,则计数器jsq 就计数一次,当计 数器从0 计数到4999 时,共计数5000 次,输出信号持续为低电平“0 ”;当计数器再从5000 计数到9999 时,也计数5000 次,输出信号持续为高电平“1”;因此输出信号clk_1Hz 的周 期为输入信号的10000 倍(即1s),频率为1Hz。 (2 )代码二: always @(posedge clk_10kHz) begin if(jsq==4999) begin jsq=0; clk_1Hz=~

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档