(*ASYNC_REG = "TRUE"*)命令用于声明寄存器能够接收相对于时钟源的异步数据,或者说寄存器是一个同步链路上正在同步的寄存器。这条命令可以放在任何寄存器上,除了设置它的值为TRUE外还可以设置为FALSE.

例子:(*ASYNC_REG = "TRUE"*) reg [0:0]  async_rst = 0;

这样可以强制指定async_rst为异步时钟输入,防止综合器对打拍寄存器进行优化,类似DONT_TOUCH。 详情见UG901-Vivado Design Suite User Guide.pdf

module reset_sync
(input clk,
input reset_in,
output reset_out); (* ASYNC_REG = "TRUE" *) reg reset_int = 'b1;
(* ASYNC_REG = "TRUE" *) reg reset_out_tmp = 'b1; always @(posedge clk or posedge reset_in)
if(reset_in)
{reset_out_tmp,reset_int} <= 'b11;
else
{reset_out_tmp,reset_int} <= {reset_int,'b0}; assign reset_out = reset_out_tmp; endmodule // reset_sync
module cdc#(
parameter DW = ,
parameter SL =
)
(
input sys_clk ,
input sys_rst ,
input [DW-:] A_Din ,
output [DW-:] S_Dout
); (*ASYNC_REG="true"*)reg [DW-:] ccsrl_A_Din[:SL-];
reg [DW-:] ccr_A_Din ={DW{'b0}} ; always@(posedge sys_clk)
begin
if(sys_rst)
begin
ccsrl_A_Din[SL-] <= 'b0 ;
end
else
begin
ccsrl_A_Din[SL-] <= A_Din ;
end
end genvar i;
generate
for(i=;i<SL-;i=i+)
begin
always@(posedge sys_clk)
begin
if(sys_rst)
begin
ccsrl_A_Din[i] <= 'b0 ;
end
else
begin
ccsrl_A_Din[i] <= ccsrl_A_Din[i+] ;
end
end
end
endgenerate always@(posedge sys_clk)
begin
if(sys_rst)
begin
ccr_A_Din <= {DW{'b0}} ;
end
else
begin
ccr_A_Din <= ccsrl_A_Din[] ;
end
end assign S_Dout =ccr_A_Din; endmodule

相关参考:

DONT_TOUCH Verilog Examples

Verilog Wire Example
(* dont_touch = “yes” *) wire sig1;
assign sig1 = in1 & in2;
assign out1 = sig1 & in2; Verilog Module Example
(* DONT_TOUCH = “yes” *)
module example_dt_ver
(clk,
In1,
In2,
out1); Verilog Instance Example
(* DONT_TOUCH = “yes” *) example_dt_ver U0
(.clk(clk),
.in1(a),
.in2(b),
.out1(c));

对编译特性(* ASYNC_REG = “TRUE” *)的理解的更多相关文章

  1. 理解Babel是如何编译JS代码的及理解抽象语法树(AST)

    Babel是如何编译JS代码的及理解抽象语法树(AST) 1. Babel的作用是?   很多浏览器目前还不支持ES6的代码,但是我们可以通过Babel将ES6的代码转译成ES5代码,让所有的浏览器都 ...

  2. Hibernate中inverse="true"的理解

    Hibernate中inverse="true"的理解 举例如下 转自:http://lijiejava.iteye.com/blog/776587 Customer类: publ ...

  3. 《编译原理》-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法

    <编译原理>-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 此编译原理确定某高级程序设计语言编译原理,理论基础,学习笔记 本笔记是对教材< ...

  4. 《编译原理》-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集

    <编译原理>-用例题理解-自底向上的语法分析,FIRSTVT,LASTVT集 上一篇:编译原理-用例题理解-自顶向下语法分析及 FIRST,FOLLOW,SELECT集,LL(1)文法 本 ...

  5. 【重构前端知识体系之HTML】讲讲对HTML5的一大特性——语义化的理解

    [重构前端知识体系之HTML]讲讲对HTML5的一大特性--语义化的理解 引言 在讲什么是语义化之前,先看看语义化的背景. 在之前的文章中提到HTML最重要的特性,那就是标签.但是项目一大,标签多的看 ...

  6. 关于MVC的特性(AuthorizeAttribute)的一些理解

    许多 Web 应用程序要求在用户登录之后才授予其对受限制内容的访问权限. 在某些应用程序中,即使是登录的用户,也会限制他们可以查看的内容或可以编辑的字段. 要限制对 ASP.NET MVC 视图的访问 ...

  7. Java面试题,Java三大特性之一——多态的理解

    首先我们知道Java是一门面向对象的语言 面向对象三大特性,封装.继承.多态. 封装.继承.多态 ↓ 无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的.因为封装好了才能继承, ...

  8. 使用Servlet3.0新特性asyncSupported=true时抛异常java.lang.IllegalStateException: Not supported

    最近在运用Servlet3.0新特性:异步处理功能的时候出现以下了2个问题: 运行时会抛出以下两种异常: 一月 19, 2014 3:07:07 下午 org.apache.catalina.core ...

  9. java中关于while(true)的理解

    java中while(true)的理解: while(true)作为无限循环,经常在不知道循环次数的时候使用,并且需要在循环内使用break才会停止,且在run()方法中基本都会写while(true ...

随机推荐

  1. 2017-2018-2 20165327 实验二 《Java面向对象程序设计》实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  2. LeetCode--326--3的幂

    问题描述: 给定一个整数,写一个函数来判断它是否是 3 的幂次方. 示例 1: 输入: 27 输出: true 示例 2: 输入: 0 输出: false 示例 3: 输入: 9 输出: true 示 ...

  3. java.lang.IllegalArgumentException: Service Intent must be explicit 解决办法

    java.lang.IllegalArgumentException: Service Intent must be explicit 意思是服务必须得显式的调用 我之前是这样使用绑定Service的 ...

  4. Bitmap Byte[] 互转

    严正声明:作者:psklf出处: http://www.cnblogs.com/psklf/p/5889978.html欢迎转载,但未经作者同意,必须保留此段声明:必须在文章中给出原文连接:否则必究法 ...

  5. Creating a Hadoop-2.x project in Eclipse

    Creating a Hadoop-2.x project in Eclipse hortonworks:MapReduce Ports http://docs.hortonworks.com/HDP ...

  6. 大div中嵌套小div,点击大div时隐藏,点击小div不隐藏

    给小div添加一个click事件 <div onClick="event.cancelBubble = true">  //小div

  7. 小程序分享转发功能实现demo

    /** * 用户点击右上角分享 */ onShareAppMessage: function() { //分享 console.log("分享") var that = this ...

  8. Html Email 邮件html页编写指南

    前言 写过邮件的html的童学应该都知道,邮件的html一般都用table来布局,为什么呢?原因是大多数的邮件客户端(比如Outlook和Gmail),会过滤HTML设置,让邮件面目全非. 经过多次的 ...

  9. 关于linux中用vi新建立一个.c文件无法保存,显示E212错误的时候

    在ubuntu16.04环境下,用vi新键.c文件,怎么保存也不能 先按ESC  然后:  在后wq  可是显示文件212错误. 后来知道在建立.c的文件夹的权限不对.这里的权限用 ls -l来查看 ...

  10. Ubuntu中php.ini修改运行内存

    首先,我们要知道我们要修改的是什么文件?那就是php.ini文件,一般php有关运行的文件都跟这个文件有关系,路径是 /etc/php5/apache2 .在这里我们就可以用命令进入, cd /etc ...