| |
在调试触摸电容的时候,发现。
1 : 采用明信片,发现灯不亮
2 : 采用刀片 ,不管横放,还是竖放,当到一定距离后,灯光都会亮
3 : 采用普通的中性笔。放入传感区的时候,先亮后灭。
4 : 手指靠近触摸电容1厘米的距离,就能够感应到。
后来经过查找,找到了触摸电容的原理,原理如下:
Capaclitor sense区时由两个铜片构成的,这两个铜片之间有个固定的电容c,当手指或者其他导体进入这个区域时,会产生了另外的一个电容c,这样把一面连接到FPGA中,就可以检测到引脚的变化。
此时把电容当做复位按钮,
程序如下
module max5 (
input clk ,
output wire led,
output wire led2 ,
input user_pb0 ,
input user_pb1 ,
input cb
) ;
wire clk1 ;
altufm_clk altufm_clk_inst ( .oscena(1'b1),.osc(clk1)) ;
reg [23:0]counter = 24'b1111_0000_0000_0000_0000_0000 ;
always @(posedge clk1 or negedge cb)
begin
if (!cb)
counter <= 24'b1111_1111_1111_1111_1111_1111 ;
else
counter <= counter + 1'b1 ;
end
assign led = counter[23] ;
assign led2 = user_pb1 ;
endmodule
其中altufm_clk为altufm_none产生的晶振信号。
在我第一篇ufm笔记中的表格有个错误,其中maxII也有内部晶振。
Qsf文件为
set_location_assignment PIN_H5 -to clk
set_location_assignment PIN_R1 -to led
set_location_assignment PIN_P4 -to led2
set_location_assignment PIN_R3 -to user_pb0
set_location_assignment PIN_M9 -to user_pb1
set_location_assignment PIN_C11 -to cb
有点失落的是以前我一直在用classic约束,如今在11.0上只能用timequest约束,所以熟悉了一下timquest约束。
程序下载进MAX5开发板中正常工作。
此时分析资源,以MAX II的EPM570F256C5 和MAX5的5M570ZF256C5 相对比,因为没有MAXII的开发板,不能验证MAX2下是否正常,只能在MAX2下进行功能和时序仿真,在MAX5下进行板级验证。
在MAX2下资源分析
Revision Name : max5
Top-level Entity Name : max5
Family : MAX II
Device : EPM570F256C5
Timing Models : Final
Total logic elements : 48 / 570 ( 8 % )
Total pins : 6 / 160 ( 4 % )
Total virtual pins : 0
UFM blocks : 1 / 1 ( 100 % )
MAX5下资源分析
Revision Name : max5
Top-level Entity Name : max5
Family : MAX V
Device : 5M570ZF256C5
Timing Models : Final
Total logic elements : 48 / 570 ( 8 % )
Total pins : 6 / 159 ( 4 % )
Total virtual pins : 0
UFM blocks : 1 / 1 ( 100 % )
由参数可以知道,在相同的程序下,因为MAX2和MAX5的架构是一样的,所以使用的资源是一样的,这完全可以理解和预料。
重头戏来了,手册上说MAX5的功耗很低,因此做了功耗分析,果然不是一般的低,在相同程序下
MAX2
Total Thermal Power Dissipation : 104.87 mW
Core Dynamic Thermal Power Dissipation : 0.00 mW
Core Static Thermal Power Dissipation : 98.27 mW
I/O Thermal Power Dissipation : 6.60 mW
而在MAX5 下面
Total Thermal Power Dissipation : 0.07 mW
Core Dynamic Thermal Power Dissipation : 0.00 mW
Core Static Thermal Power Dissipation : 0.04 mW
I/O Thermal Power Dissipation : 0.03 mW
不知道是不是我的操作不对,还是怎么的,得出来的结果竟然差别这么大,不由得怀疑我做错了还是怎么的,希望大家可以和我共同考虑一下,
我的操作步骤是,processing-> powerplay power analyzer tool 然后直接点击 start,得出这个结果来,
3 : 时序分析
在MAX2下
Clockname:altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc
Frequency : 5.5 MHZ
MAX5 下
Clockname:altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc
Frequency : 5.5 MHZ
这一点很容易懂,MAX2和MAX5都采用了5.5M
但是时序报告里面由一个很难理解就是
在MAX2下
Fmax Summary :
FNAX = 112.32MHZ
CLOCK name = altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc
在MAX5下
FNAX = 43.31MHZ
CLOCK name = altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc
这两个相差很大,
而观察setup和hold时,max2 和MAX5 相差不大,
针对 MAX2
Type : Setup 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 171.712
TNS : 0.000
Type : Hold 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 2.126
TNS : 0.000
Type : Minimum Pulse Width 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 90.643
TNS : 0.000
针对MAX5 :
Type : Setup 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 162.691
TNS : 0.000
Type : Hold 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 3.376
TNS : 0.000
Type : Minimum Pulse Width 'altufm_clk_inst|altufm_clk_altufm_none_91r_component|maxii_ufm_block1|osc'
Slack : 90.570
TNS : 0.000
这两个结果差不多,因为MAX2和MAX5的建立和保持时间是有区别的。这一点也可以预料到。同时观察LE的配置模式都是normal模式,但是在Fmax Summary 下却完全差别很大,这一点一直思索不通 ,希望大家也可以尝试讨论一下。
归纳起来,目前有2点疑问,就是
1 : 关于功耗,同样的程序下,为什么MAX5下如此之低 ?
2 : 同样的程序,同样的LE工作模式,同样的chipplanner布局布线,为什么MAX2的FMAX比 MAX5高一倍呢?
希望大家可以好好的讨论一下
以上就是MAX5的全部试验,从接收MAX5到现在已经一个月的时间了,在这一个月中,前一段时间是看一些CPLD的资 料,以前从没有看过LE内部的结构,趁着这个机会好好的看了一些LE的结构,以及写了一个简单的实例。这一个月中收获颇大,在这里谢谢电子创新网搞的这个 活动了,希望以后还有这样的活动。