完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大二小白,暑期在做一个课设,其中有一个分频模块,想做成用两个轻触开关分别控制输出频率增加(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 好着急啊,不知道怎么改。。 |
|
相关推荐
1个回答
|
|
1、有什么不对? sel1、sel0确实要剔除,然后在下面进程中判断它们的值并相应处理;否则就是异步逻辑,容易产生竞争、冒险。
2、没有复位信号,count、k0、k1这些的初始值是不确定的,也许仿真正常,但实际电路肯定会出错。 |
|
|
|
只有小组成员才能发言,加入小组>>
2900 浏览 3 评论
27706 浏览 2 评论
3480 浏览 2 评论
3987 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2335 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 21:00 , Processed in 0.524299 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号