TA的每日心情 | 奋斗 2016-5-31 13:47 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
|
各位大神专家你们好,我是一个刚刚开始学习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时,分频之后的频率减小一倍,但是在板子上按动的时候,跑马灯的动态闪烁就停止了,请问这是为什么?
|
|