FPGA中verilog语言这个U 表示什么意思?

程序最开头有个这个:`define UD #1
always @ (posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
LED_SCAN_CNT <= `UD 24'h0;
else
LED_SCAN_CNT <= `UD LED_SCAN_CNT_N;
end
1:这个 `UD 有什么作用呢?
2:LED_SCAN_CNT <= `UD LED_SCAN_CNT_N;这个句子表示什么意思?

延时作用。主要用来前仿真。
前仿真时,不会考虑芯片内部布局产生的延迟(因为根本还没开始布局布线),每个时钟沿的位置数据发生跳变(实际芯片运行时应该是时钟上升沿后延迟几个ns才跳变的),加入了这个延迟,可以让前仿真一定程度上接近后仿真的结果,有些问题能够提前暴露出来。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-17
1、开头不是定义了 UD #1 ;`UD 就代表调用#1,为了方便修改所有延时。你想你只需要修改#1,就可以改程序中所有调用的地方。

2、LED_SCAN_CNT <= #1 LED_SCAN_CNT_N;这个是寄存器赋值。追问

这里的延时有什么作用?单位是ns?

追答

只有在仿真的时候才有用,通常为了模拟真实器件的延时。
综合的时候是忽略的,因为库单元中已经包含延时模型。
单位是由文件头`timescale 1ns/1ps 决定的,前一个时间代表单位,后一个代表最小精度。

第2个回答  2013-09-17
那是定义了一个延时 LED_SCAN_CNT <= `UD LED_SCAN_CNT_N的意思就是先延时一个时间单位,然后将LED_SCAN_CNT_N的值赋给LED_SCAN_CNT追问

求教这里的延时有什么作用?单位是ns?

追答

没什么用 这种写法都是仿真的时候用的 是不可综合成电路的 延时就是延时呗 就是等一会再赋值啊 能有什么作用啊

追问

好的,多谢了哈

本回答被提问者采纳
相似回答