在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4465|回复: 9

[求助] Quartus II可以不设置tsu,tco,tpd,th吗

[复制链接]
发表于 2012-10-30 13:16:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
FPGA顶层图.bmp 顶层图如上哈,在单独验证模块功能的时候ENA是时序违规的,但是加了前面的PLL和Trig之后就出现时序违规了,约束的话我只约束了XTAL(有源晶振输入)和PLLCLK0(晶振的8倍频,400MHz),违规文件如下哈
QQ截图20121030130447.jpg QQ截图20121030130512.jpg QQ截图20121030130609.jpg

后来我又看了未约束的信号,是下面这些
QQ截图20121030130416.jpg QQ截图20121030130403.jpg QQ截图20121030130336.jpg

我觉得是内部400MHz的时钟太高了,导致输入Trig与400MHz的建立时间不够,这样的话可以约束吗?
我这个设计的思路是用Trig触发10分频计数器,将400MHz(不需要与Trig相关)10分频成40MHz的输出时钟,同时输出Trig信号。
使用ENA这个模块的原因是Trig持续时长不够,我用ENA产生一个上升沿和Trig几乎一样(400MHz延迟10个周期)、持续时间要长的信号,作为10分频的使能信号(图中写成了reset)。
ENA用了两个时钟是因为只是用400MHz的时钟的话,要数20000下才满足Trig(经过延迟的信号,即10分频的使能信号) 的要求,所以我是用400MHz作为ENA内部计数器的起始,再用晶振的50MHz来计数4000下。
不知道这样说明白没有,欢迎大家发表自己的意见!
发表于 2012-10-30 17:09:40 | 显示全部楼层
本帖最后由 nono2000 于 2012-10-30 17:15 编辑

你如果不设,那么就会有系统预设的取代
你设太小,就会造成 400MHZ 警告很多,设太大很容易乱掉,看来只能指定讯号设置.

我也有一个问题,Quartus 警告,说我的某只脚是 clk,但是我查过不是 clk ,不知道怎么处理?
 楼主| 发表于 2012-10-30 19:49:32 | 显示全部楼层
回复 2# nono2000
信号不是clk这个情况好办,在Assignment Editor里面的To那里选定你的那个信号,然后Not A Clock改成on就行了
发表于 2012-10-30 19:54:58 | 显示全部楼层
内部使用400M的clk,太高了吧。
发表于 2012-10-30 19:56:46 | 显示全部楼层
可以不设的
发表于 2012-10-30 21:38:12 | 显示全部楼层



但是 Quartus 说的是一个 REG,非接脚(PIN).
例如:
Warning (332060): Node: I2C_AV_Config:I2C_blk|LUT_INDEX[1] was determined to be a clock but was found without an associated clock assignment.
发表于 2012-10-30 23:01:50 | 显示全部楼层
新手 不懂,顶一下
 楼主| 发表于 2012-10-31 09:03:46 | 显示全部楼层
回复 6# nono2000

你的那个信号应该是内部生成,又接到了内部模块的时钟脚上吧,quartus默认会把它看做时钟,你找到那个输出寄存器,然后设置Not A Clock就行了吧
 楼主| 发表于 2012-10-31 09:07:16 | 显示全部楼层
本帖最后由 wyardt 于 2012-10-31 09:13 编辑

回复 4# gao_peng

要求要达到那么高,因为在400MHz下误差较小,所以才这样的,我的ENA模块貌似不是很完善,我贴出来给你看看哈同学说不要用initial语句,不用的话,因为我这里没有使能信号,所以不能不用吧。。

////////This block is aimed at generating reset signal for the CLK_DIV10
////////and passing the original Trig to the output port
module ENA(clk1,clk2,trig,reset);
input clk1,clk2,trig;
output reset;

reg start;
reg [12:0] c;
assign reset = start;

initial begin
c <= 13'd0;
reset <= 0;
start <= 0;
end

///////////////////////////I THINK THIS ALWAYS IS NOT THAT GOOD
always @(posedge clk1)
begin                //clk1(400MHz) as the beginner of the counter
if(trig)                //once the trig is true,set the flag signal START becomes true.
  start <= 1;
else

if(c==4096) start <= 0;//after the trig is being low and the number of the pulse(40MHz clk) is
end                            //big enough(we need at least 1024 pulses of output clk 40MHz),we reset
                                // the START signal to be false.

//////////////////////////////////////////////////////////
always @(posedge clk2)
begin//clk2(50MHz) as the trigger of the counter
case(start)
     1:c <= c+1;        //when the START signal is true,we start to count the counter
     0:c <= 13'd0;     //if start is low,which means we should stop generating 40MHz clk,
endcase                  // so we reset the counter
end
endmodule
发表于 2012-11-3 21:07:36 | 显示全部楼层


回复  nono2000
信号不是clk这个情况好办,在Assignment Editor里面的To那里选定你的那个信号,然后Not A ...
wyardt 发表于 2012-10-30 19:49


但是我找不到你说的 Not A CLK?

1.JPG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-28 21:42 , Processed in 0.023769 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表