完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
reg [15:0]cnt;
always@(posedge clk,negedge clk)begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end 上语句在QuartusII中报语法错误; reg [15:0]cnt; always@(clk)begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end 上语法个人理解clk发生变化触发敏感信号这与always@(posedge clk,negedge clk)在逻辑上是相通的啊! 其大牛正解!!! |
|
相关推荐
12个回答
|
|
想要对时钟进行双边沿触发主要有三种方法。
一种就是像楼上所说,使用电平敏感触发,能够实现时钟的双边沿触发,但是一般不推荐这种方法触发,这种方法虽然在逻辑上是可行的,但verilog终归不是C一样的高级语言,它的每段代码都需经过综合布线实现的,因此在用verilog实现算法的时候还需考虑代码书写风格的合理性,而对时钟信号使用电平触发,很有可能在某些情况下就不能满足时序。 第二种就是就是将上升沿和下降沿分成两个always快来写,这样子写的缺点就是不能在两个always块中对同一个reg变量做操作,同时这样写总觉得会很蛋疼。 第三种就是利用pll将时钟信号延迟或者滞后180°,分别对上升沿触发,或者干脆将时钟倍频,这样子就不需要考虑太多了。 另外,对于频率不是很快的时钟信号或者是一些异步信号建议采用脉冲形式同步,也就是在一个足够快的时钟下(如50M),可以实时监测输入信号的电平,当两次相邻电平异或之后为1,就表示有上升沿或者下降沿(01表示有上升沿,10表示有下降沿),这样子的好处就是,你的所有模块都可以在同一个工作时钟下工作,而不会因为一些其他时钟信号或异步信号而将电路变成异步电路。 (以上有些是参考网上资料,有些是我实际操作的经验,还望采纳) |
|
|
|
帮顶。。。。
|
|
|
|
|
|
|
|
|
|
|
|
你语法错误吧!!
reg [15:0]cnt; always@(posedge clk or negedge clk)begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end 这样才行吧! |
|
|
|
|
|
|
|
always@(posedge clk or negedge clk)begin
if(!rst_n) cnt<=0; else cnt<=cnt+1; end 这样是个语法错误的! always@(clk )begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end 这样语法通过了,可是不知道是不是漏洞。在综合的时候会不会有问题。 |
|
|
|
就是想了解一下always@语句中的敏感信号触发的问题,我一般都不会这么写,这只是做测试写了一下。
最近在一本书上看到了这样的写法: always@(clk )begin if(!rst_n) cnt<=0; else cnt<=cnt+1; end 以前一直以为不可能双边沿触发的,事实也是always@(posedge clk or negedge clk)这样的语句编译无法通过! 不理解always@(clk )begin 这语句的具体含义 |
|
|
|
always@(clk )begin 这样就行了有变化就触发相当于上下降沿了。
|
|
|
|
|
|
|
|
|
|
|
|
这个问题我也遇到过,verilog不像VHDL可以实现同一信号不同边沿做敏感信号,所以简单点的方法是将敏感信号取反,再进入程序
|
|
|
|
只有小组成员才能发言,加入小组>>
2884 浏览 3 评论
27672 浏览 2 评论
3460 浏览 2 评论
3975 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2323 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-5 01:45 , Processed in 0.854717 second(s), Total 103, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号