搜索
bottom↓
回复: 9

请教一个Verilog边沿检测的问题[这个语句能否综合?]

[复制链接]

出0入0汤圆

发表于 2013-7-22 13:43:55 | 显示全部楼层 |阅读模式
本帖最后由 loyoan 于 2013-7-23 11:38 编辑

比如在一个模块中,我对clk的上升沿敏感[always @(posedge clk)],
在这个块里面我需要一个计数器,这个计数器是每一个Data_in的上升沿到来计一次数,

请问这用verilog怎么实现?
或者其他可行的方法也可以,

谢谢各位大神~

请知道的说一下下面的语句能否被综合:[输入输出假设已经定义好]

always @(posedge clk)
begin
     data_out= @(posedge clk_in) data_in;
end

这是我在《Verilog HDL 数字设计与综合(第二版)》(Samir Palnitkar)中看到的(87页)。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入90汤圆

发表于 2013-7-22 15:37:47 | 显示全部楼层
上升沿检测?
两级触发器打一下,再一异或

出0入0汤圆

 楼主| 发表于 2013-7-22 20:10:31 | 显示全部楼层
本帖最后由 loyoan 于 2013-7-22 20:12 编辑
aammoo 发表于 2013-7-22 15:37
上升沿检测?
两级触发器打一下,再一异或



这样吗?这样应该是成边沿检测了吧?

是否应该是~Q1和Q2相与输出?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-7-22 23:50:19 | 显示全部楼层
  1. /*
  2. (C) OOMusou 2008 http://oomusou.cnblogs.com

  3. Filename    : posedge_detection2.v
  4. Compiler    : Quartus II 7.2 SP3
  5. Description : Demo how to design posedge detection circuit
  6. Release     : 08/11/2008 1.0
  7. */

  8. module posedge_detection2 (
  9.   input      clk,
  10.   input      rst_n,
  11.   input      i_data_in,
  12.   output reg o_rising_edge
  13. );

  14. reg r_data_in0;

  15. always@(posedge clk, negedge rst_n) begin
  16.   if (!rst_n)
  17.     r_data_in0 <= 0;
  18.   else begin
  19.     r_data_in0 <= i_data_in;
  20.    
  21.     if ({r_data_in0, i_data_in} == 2'b01)
  22.       o_rising_edge <= 1;   
  23.     else
  24.       o_rising_edge <= 0;
  25.   end
  26. end

  27. endmodule
复制代码
你可以到原作者的博客上看看,一堆的方法。

出0入0汤圆

发表于 2013-7-22 23:52:18 | 显示全部楼层
以上代码来源于:
http://www.cnblogs.com/oomusou/a ... ection_circuit.html

出0入0汤圆

发表于 2013-7-23 00:02:06 | 显示全部楼层
always@(posedge clk)
begin
     data_reg1 <= data_in;
     data_reg2 <= data_reg1;
end
always@(posedge clk or negedge rst_n)
begin
    if(!rst_n)
         count <=0;
    else
    begin
          if((data_reg2 == 0) && (data_reg1 == 1))
          count <= count+1;
          else
          count <= count;   
    end
end

出0入0汤圆

 楼主| 发表于 2013-7-23 11:24:47 | 显示全部楼层
zhangalex88 发表于 2013-7-22 23:50
你可以到原作者的博客上看看,一堆的方法。

谢谢~我去你说的网址看看

出0入0汤圆

 楼主| 发表于 2013-7-23 11:26:46 | 显示全部楼层
yngufeng 发表于 2013-7-23 00:02
always@(posedge clk)
begin
     data_reg1

你的代码会有这样的问题:当clk过快的时候,data_in上升沿到来,计数器+1,但保持一个clk周期后又回0了[我的理解哈,错了请指正]

出0入0汤圆

发表于 2013-7-23 20:05:49 | 显示全部楼层
loyoan 发表于 2013-7-23 11:26
你的代码会有这样的问题:当clk过快的时候,data_in上升沿到来,计数器+1,但保持一个clk周期后又回0了[ ...

有没有这样的问题用modelsim仿真了便知,动手实践很重要

出0入0汤圆

 楼主| 发表于 2013-7-24 14:38:41 | 显示全部楼层
yngufeng 发表于 2013-7-23 20:05
有没有这样的问题用modelsim仿真了便知,动手实践很重要

哦哦,看错了,看成count<=0了,这样就没问题了,谢谢你的回答~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 08:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表