4回答

0收藏

关于调节跑马灯闪烁频率的问题

FPGA/DSP FPGA/DSP 3909 人阅读 | 4 人回复 | 2016-05-31

各位大神专家你们好,我是一个刚刚开始学习verilog语言的学生,最近我们在用basys2做一个课程设计,是一个跑马灯的,我们使用一个计数器程序将50MHz的频率变成2Hz,现在我们通过另外一段代码对计数器所记的数字进行修改,而达到控制分频之后频率快慢的目的。
下面是程序中分频和调节频率这部分代码以及输入输出设置和管脚约束


input clk,k;
input add,red;
integer N=12500000;
reg clk_1Hz;
integer clk_cnt;

/*******************************************************************/分频50MHz到2Hz
always @( posedge clk or negedge rst)//分频,50MHz周期为20ns,在12500000*20ns=0.25s clk_div8翻转,即clk_div周期为2*0.25s=0.5s,即2Hz
begin
    if(!rst)
     begin
        clk_cnt <= 1'b0;
        clk_1Hz<= 1'b0;
     end
    else
     begin
         if(clk_cnt == N-1)
             begin
                                 clk_1Hz <= ~clk_1Hz;
                                 clk_cnt <= 1'b0;
         end
                        else
             clk_cnt <= clk_cnt + 1'b1;
     end
end  
/*******************************************************************///增加或者减小频率
always @( k )
begin
        if(add==1 & !k)                           //加快频率
         begin
                N <= N/2;
         end
        else if(red==1 & !k)                    //减慢频率
         begin
                N <= N*2;
         end
        else if(k)                                     //恢复初始频率
         begin
                N <= 12500000;
         end
end

管脚约束
NET "add" LOC = G12;
NET "red" LOC = C11;
NET "k" LOC = A7;
NET "clk" LOC = B8;

程序运行没有问题,警告比较多,没有测试文件而直接在basys2上面实现,我的理解是,这段程序运行时,按动一下add对应的开关G12时,分频程序的频率增加一倍,而按动red对应的开关C11时,分频之后的频率减小一倍,但是在板子上按动的时候,跑马灯的动态闪烁就停止了,请问这是为什么?




分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

肖久

发表于 2016-5-31 13:59:02 | 只看该作者

这个很简单
板凳

肖久

发表于 2016-5-31 13:59:37 | 只看该作者

消抖就行了

点评

怎么消除,刚刚学还不知道?大神求助  发表于 2016-5-31 18:23
地板

yerun

发表于 2016-5-31 14:12:12 | 只看该作者

肖久 发表于 2016-5-31 13:59
消抖就行了

腻(????)??嗨
5#

yerun

发表于 2016-5-31 14:12:15 | 只看该作者

肖久 发表于 2016-5-31 13:59
消抖就行了

腻(????)??嗨
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条