来源:http://www.cnblogs.com/oomusou/archive/2009/06/15/verilog_dly_n_clk.html

 /*
(C) OOMusou 2009 http://oomusou.cnblogs.com Filename : delay_3t.v
Compiler : NC-Verilog 5.4
Description : delay 3t method 1
Release : 06/15/2009 1.0
*/ module delay_3t (
clk,
rst_n,
d,
q
); input clk;
input rst_n;
input d;
output q; reg d_dly_1t;
reg d_dly_2t;
reg d_dly_3t; assign q = d_dly_3t; always@(posedge clk or negedge rst_n) begin
if (!rst_n) begin
d_dly_1t <= ;
d_dly_2t <= ;
d_dly_3t <= ;
end
else begin
d_dly_1t <= d;
d_dly_2t <= d_dly_1t;
d_dly_3t <= d_dly_2t;
end
end endmodule
 /*
(C) OOMusou 2009 http://oomusou.cnblogs.com Filename : delay_3t.v
Compiler : NC-Verilog 5.4
Description : delay 3t method 2
Release : 06/15/2009 1.0
*/ module delay_3t (
clk,
rst_n,
d,
q
); input clk;
input rst_n;
input d;
output q; reg d_dly_1t;
reg d_dly_2t;
reg d_dly_3t; assign q = d_dly_3t; always@(posedge clk or negedge rst_n) begin
if (!rst_n)
{d_dly_3t, d_dly_2t, d_dly_1t} <= ;
else
{d_dly_3t, d_dly_2t, d_dly_1t} <= {d_dly_2t, d_dly_1t, d};
end endmodule
 /*
(C) OOMusou 2009 http://oomusou.cnblogs.com Filename : delay_nt.v
Compiler : NC-Verilog 5.4
Description : delay 3t method 3
Release : 06/15/2009 1.0
*/ module delay_nt (
clk,
rst_n,
d,
q
); parameter n = ; input clk;
input rst_n;
input d;
output q; reg [n-:] r; assign q = r[n-]; integer i; always@(posedge clk or negedge rst_n) begin
if (!rst_n)
r <= ;
else begin
for(i=; i<n-; i=i+)
r[i+] <= r[i]; r[] <= d;
end
end endmodule
 /*
(C) OOMusou 2009 http://oomusou.cnblogs.com Filename : delay_nt.v
Compiler : NC-Verilog 5.4
Description : delay 3t method 4
Release : 06/15/2009 1.0
*/ module delay_nt (
clk,
rst_n,
d,
q
); parameter n = ; input clk;
input rst_n;
input d;
output q; reg [n-:] r; assign q = r[n-]; always@(posedge clk or negedge rst_n) begin
if (!rst_n)
r <= ;
else
r <= {r, d};
end endmodule

{}写法是Verilog的独门绝技,这样就不再需要for,这也是为什么Verilog宁愿从C语言抢走{}换来begin, end,因为{}这种合并的写法非常的好用。Testbench与模拟波型图也与Method 1与Method 2一样,再次省略。这种写法使用了parameter,无论要delay几个clk,只需修改n即可,而且与Quartus II优化后的硬件一样,我们再次将编译过的RTL Viewer打开做验证。

Conclusion
这4种写法最后合出来的硬件都一样,表示现在的合成器都够聪明,差别只是在哪种coding style较好,将来比较好维护。另外也是开开眼界,若将来阅读其他人的code,马上就知道对方想表达的意思。

(转帖) 如何將值delay n個clock? (SOC) (Verilog)的更多相关文章

  1. (转帖) 有限狀態機FSM coding style整理 (SOC) (Verilog)

    来源:http://www.codesoso.net/Record/101092_95120_21.html 来源:http://www.cnblogs.com/oomusou/archive/201 ...

  2. 如何使用SignalTap II觀察reg與wire值? (SOC) (Verilog) (Quartus II) (SignalTap II)

    Abstract撰寫Verilog時,雖然每個module都會先用ModelSim或Quartus II自帶的simulator仿真過,但真的將每個module合併時,一些不可預期的『run-time ...

  3. 在 Swift 專案中使用 Javascript:編寫一個將 Markdown 轉為 HTML 的編輯器

    原文:Using JavaScript in Swift Projects: Building a Markdown to HTML Editor 作者:GABRIEL THEODOROPOULOS ...

  4. JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (3):部署設定及應用 (转帖)

    說明:這一篇主要是說明如何將程式部署到Application Server,以及程式如何運作,產生的檔案置於何處,以及如何以瀏覽器呈現(Applet),或是當成桌面應用程式,或是 桌面Applet,這 ...

  5. [转]用Linq取CheckBoxList選取項目的值

    本文转自:http://www.dotblogs.com.tw/hatelove/archive/2011/11/17/linq-checkboxlist-items-selected-values. ...

  6. button属性值

    AccessibilityObject 取得指定給控制項的 AccessibleObject. (繼承自 Control). AccessibleDefaultActionDescription 取得 ...

  7. [Xamarin] 透過StartActivityForResult傳值回來(转贴)

    上一篇文章(開啟另外一個Activity 並且帶資料),提到了開啟一個新的Activity ,我們將值透過intent 帶到下個Activity 但是,如果我們開啟的Actrivity其實是有一個任務 ...

  8. [Xamarin.Android]使用Java Bindings Libary專案 Binding Java元件(.jar) 與Metadata.xml、型別對應 (转帖)

    使用Xamarin開發Android APP時, 如果已經有原本就用Java寫好的套件(.jar), 就可以利用Xamarin提供的Java Bindings Libary將他變成C#可使用的元件. ...

  9. [Xamarin.Android] 結合Windows Azure與Google cloud message 來實現Push Notification (转帖)

    這一篇要討論如何使用Xamarin.Android 整合GCM以及Windows Azure來實作Android手機上的推播通知服務. 這篇文章比較著重概念的部分,在開始讀這篇之前,也可以先參考一下X ...

随机推荐

  1. [转]Windows Azure上安装SharePoint 2013

    基于Windows Azure 安装SharePoint 2013 前段时间写的基于Windows Azure安装SharePoint系列,由于Azure的体验账号过期了,所以不得不暂停.今天有幸参加 ...

  2. Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条

    Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...

  3. cf B Very Beautiful Number

    题意:给你两个数p和x,然后让你找出一个长度为p的数,把它的最后移到最前面之后得到的数是原来数字的x倍,有很多这样的数取最小. 思路:枚举最后一位,然后就可以推出整个的一个数,然后比较得到的数的第一个 ...

  4. JAVA存取对象属性时,如果开程多线程,记得对相关存取方法作原子化操作定义

    最显著的应用当然是银行存款和取款,不要存在存取数字和实际发生不一样的情况. synchronized关键字. class BankAccount { private int balance = 100 ...

  5. 在SystemOut.log中发现HMGR0152W: 检测到CPU 饥饿的消息 <转载>

    今天系统报警了!!!!!顿时人又不好了!!!查看系统日志, 报错如下: Did not receive adequate CPU time slice. Last known CPU usage ti ...

  6. 【HDOJ】3345 War Chess

    简单BFS.注意最后一组数据,每个初始点不考虑周围是否有敌人. /* 3345 */ #include <iostream> #include <cstdio> #includ ...

  7. Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞

    漏洞名称: Apache HTTP Server mod_session_dbd模块mod_session_dbd.c 安全漏洞 CNNVD编号: CNNVD-201307-488 发布时间: 201 ...

  8. POJ 2594 Treasure Exploration(带交叉路的最小路径覆盖)

    题意:  派机器人去火星寻宝,给出一个无环的有向图,机器人可以降落在任何一个点上,再沿着路去其他点探索,我们的任务是计算至少派多少机器人就可以访问到所有的点.有的点可以重复去. 输入数据: 首先是n和 ...

  9. FZYZOJ-1880 【UFO】水管

    P1880 -- [ufo]水管 时间限制:1000MS      内存限制:131072KB      通过/提交人数:32/100 状态:      标签:    数学问题-组合数学   无    ...

  10. jsp中的contentType与pageEncoding的区别和作用

    jsp中的contentType与pageEncoding的区别和作用   <%@ page contentType="text/html; charset=utf-8" p ...