新手入门
- 积分
- 8
- 金钱
- 8
- 注册时间
- 2016-7-21
- 在线时间
- 0 小时
|
1金钱
大二小白,暑期在做一个课设,其中有一个分频模块,想做成用两个轻触开关分别控制输出频率增加(sel1)和频率减小(sel0),5~50hz,k0和k1用于计数。无操作时默认为50hz。敏感表写了posedge clk_50m, negedge sel1 or sel0 三种边沿信号后报错:Error: Can't elaborate top-level user hierarchy,只写posedge clk_50m编译可以通过,但是不对啊。。clk_50m就是芯片自带的时钟信号,50兆。*后面要经过256个点/周期的采样,所以分频*256,这部分可以忽略
下面是代码:
module fenpin
(
input clk_50m,
input sel0,
input sel1,
output reg clk_out
);
integer f0=50,f1=5;
integer k0=1,k1=1;
reg[20:0]count;
always@(posedge clk_50m, negedge sel1 or sel0)
begin
if(~sel0)
begin
if(k0<=9)
begin
if(count<50000000/(f0-5*k0)/256)
count<=count+1;
else count<=0;
if(count<50000000/(f0-5*k0)/256/2) clk_out<=1;
else clk_out<=0;
k0<=k0+1;
end
else
begin
if(count<50000000/f0/256)
count<=count+1;
else count<=0;
if(count<50000000/f0/256/2) clk_out<=1;
else clk_out<=0;
k0<=1;
end
end
else if(~sel1)
begin
if(k1<=9)
begin
if(count<50000000/(f1+5*k1)/256)
count<=count+1;
else count<=0;
if(count<50000000/(f1+5*k1)/256/2) clk_out<=1;
else clk_out<=0;
k1<=k1+1;
end
else
begin
if(count<50000000/f1/256)
count<=count+1;
else count=0;
if(count<50000000/f1/256/2) clk_out<=1;
else clk_out<=0;
k1<=1;
end
end
else
begin
if(count<50000000/f0/256)
count<=count+1;
else count<=0;
if(count<50000000/f0/256/2) clk_out<=1;
else clk_out<=0;
end
end
endmodule
好着急啊,不知道怎么改。。
|
|