-
其实更好的方法是将IO BANK的供给电压改为可调,更方便IO的多用途变化
-
看fmax的大小
-
第一个问题: 外部输入的异步信号用本地时钟可靠同步, 常见工程处理方法有1 输入的信号比较慢,本地时钟至少能采样到一个有效变化,那么使用两个寄存器同步输入就可以了。2 输入的信号比较快,本地时钟不能采样到一个有效变化,但是输入信号的变化频率大于本地时钟,将这个输入的信号做为寄存器A的时钟输入,然后使用本地时钟进行寄存器B,C同步,再将寄存器C的输出给寄存器A作为复位信号。3使用FIFO设计
第二个问题:同步FSM 是指同步有限状态机,通俗讲,就是状态机的每个状态都有使用时钟同步到REGISTER。
第三个问题:综合指令确保FSM比如 :full case /parallele case
第四个问题:延迟时间接近或超过一个时钟周期的大组合逻辑必须分层,这个分层的话,一般EDA工具可以实现,就是加上RETIMING:综合指令。它不同于PIPELINE,它是把组合逻辑分散在不同的寄存器路径上。
-
对于无法确认的输入变化,我们是无法避免冒险与竞争。而且连TIMING分析也无法进行。我们所要考虑到的冒险与竞争,必须是我们能预测到了。
-
如果端口没有指定类型, 编译器默认类型是由这个端口在模块里面的功能类型定义的。一般是WIRE,如果是REG型,编译器会报错,要求这个端口有类型定义
-
VGA显示256色用DAC的话,可以获取比较好的图像质量。深入玩转FPGA 里面有一个VGA的256色显示 但是开发平台的硬件原理图 SF-EP1C 没有用DAC,是因为它使用电阻分压来输出VGA上的RGB,而且有可能只有8色或者64色,具体情况看分压的电阻网络。同时希望楼主自己搞明白256色需要多少bit,我们平时显示器上的显示色差又是多少色度。
-
reg[15:0] data 表示定义为宽度是16位寄存器data;
reg data[15:0] 表示定义为宽度是1的寄存器数组,数组深度为16.
reg [15:0] data[15:0] 表示定义为宽度是16的寄存器数组,数组深度为16.reg [15:0] data[15:0]这样的写法,经常是为了声明一个RAM的行为。
[ 本帖最后由 walkerinsky 于 2011-4-22 15:13 编辑 ]
-
有ISE 了,还上来问这个问题!ISE上带这个语言的模本的,先给你一个自己看看,顺便自己找找这个代码怎么找。GOOGLE一下
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- DCM_SP: Digital Clock Manager Circuit
-- Spartan-3E/3A
-- Xilinx HDL Language Template, version 10.1
DCM_SP_inst : DCM_SP
generic map (
CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
-- 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
CLKFX_DIVIDE => 1, -- Can be any interger from 1 to 32
CLKFX_MULTIPLY => 4, -- Can be any integer from 1 to 32
CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
CLKIN_PERIOD => 0.0, -- Specify period of input clock
CLKOUT_PHASE_SHIFT => "NONE", -- Specify phase shift of "NONE", "FIXED" or "VARIABLE"
CLK_FEEDBACK => "1X", -- Specify clock feedback of "NONE", "1X" or "2X"
DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", -- "SOURCE_SYNCHRONOUS", "SYSTEM_SYNCHRONOUS" or
-- an integer from 0 to 15
DFS_FREQUENCY_MODE => "LOW", -- "HIGH" or "LOW" frequency mode for
-- frequency synthesis
DLL_FREQUENCY_MODE => "LOW", -- "HIGH" or "LOW" frequency mode for DLL
DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
FACTORY_JF => X"C080", -- FACTORY JF Values
PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 255
STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM_SP LOCK, TRUE/FALSE
port map (
CLK0 => CLK0, -- 0 degree DCM CLK ouptput
CLK180 => CLK180, -- 180 degree DCM CLK output
CLK270 => CLK270, -- 270 degree DCM CLK output
CLK2X => CLK2X, -- 2X DCM CLK output
CLK2X180 => CLK2X180, -- 2X, 180 degree DCM CLK out
CLK90 => CLK90, -- 90 degree DCM CLK output
CLKDV => CLKDV, -- Divided DCM CLK out (CLKDV_DIVIDE)
CLKFX => CLKFX, -- DCM CLK synthesis out (M/D)
CLKFX180 => CLKFX180, -- 180 degree CLK synthesis out
LOCKED => LOCKED, -- DCM LOCK status output
PSDONE => PSDONE, -- Dynamic phase adjust done output
STATUS => STATUS, -- 8-bit DCM status bits output
CLKFB => CLKFB, -- DCM clock feedback
CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM)
PSCLK => PSCLK, -- Dynamic phase adjust clock input
PSEN => PSEN, -- Dynamic phase adjust enable input
PSINCDEC => PSINCDEC, -- Dynamic phase adjust increment/decrement
RST => RST -- DCM asynchronous reset input
);
-- End of DCM_SP_inst instantiation
-
直接按照字面的意思去理解:就是在RESET的上升沿后的碰到的第一个 FETCH 上升沿,进行ctl_cycle操作。这个一般是用来进行行为级的描述,不是RTL的,用于仿真和模型的建立。这样的语句描述方式在做仿真验证是非常有用的。
-
不是在约束里把最小的条件填进去,而且不要为了写约束而造约束。
系统会你在PLL设置的时钟情况来分析你的时序是否满足。所以一般不填写。
推荐你用XILINX的TIMING CONSTRAIT工具看看是怎么回事情吧,或者看看QUARTUS的手册。 选定的芯片的参数是它能满足的极限TIMING情况,根本不需要设置,而你要设置的是你的系统的TIMING情况。你把两个混淆了!建议先看看source synchronization和system synchronization的区别,以进一步了解约束是为什么。
-
PGA芯片资料定义的,给的是时序约束的最快的值,也就是极限的情况了。在时序约束中的建立时间,保持时间,脚到脚的延时时间这些参数是要根据自己的设计要求定义的。
-
数字设计,很多时候时钟都是方波的!方波是引入了大量的高频,但是对你的设计有影响吗?
-
看手册吧!注意nois2 的指令周期和timer 的分频情况。
-
虽然楼主的代码风格不好,但是initial好象还是支持的。我觉得有个重要问题,楼主自己没有给出,就是my_clk时候频率多少,进行10000或者500分频,分到1k 20k的时钟,你觉得自己能看到LED的灯的情况和实际出来的时钟现象是一致的吗?
-
带问号的文件,好象是你POST-ROUTE后的网点文件,但是路径没有找对。对于使用ISE内置仿真器,没有怎么使用过。推荐对后仿真使用 modelsim,只需要vo和sdf文件就可以了。
-
AD9852里有一个比较器,可以把DA的输出接到这。COMPARATOR OUTPUT HARACTERISTICS
Logic 1 Voltage, High-Z Load Full VI 3.1 3.1 V
Logic 0 Voltage, High-Z Load Full VI 0.16 0.16 V
这样比较器的输出就可以直接当时钟使用了。
-
已经试了!仿真器会报错的。assign readout
-
综合器Synplify告诉你的信息是:不能给变量index找到合适的匹配的对应物或者结构。就是说你的这个代码属于不可综合的。就是那个动态的移位是不可综合的,自己想想,可否用其他方式实现,比如查表。
-
assign readout
-
测得的是20MHz,但已经不是方波了,是个类似正弦曲线的波,我觉得跟你CLOCK 的LOAD有关系,后面的电路 估计是一个等效20~30M带宽的滤波器,当然也有可能是你的FPGA引起的。用PLL的话,不推荐使用assign clk_out=clk输出,推荐用40M时钟对DFF进行01翻转输出,或者用DDR形式。