TA的每日心情 | 奋斗 2015-1-31 21:47 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
|
一、MAX10横向对比
MAX10不叫CPLD了,因为他多了一些FPGA的特性如DSP、RAM还有高端片子才带有的ADC,虽然内置的ADC不算多高级,但12位1MHz的速度对付普通应用也绰绰有余,另外可以借助TSD采集片内温度。
EP4CE6(10)E22C8与10M08SAE144C8GES的对比
器件 | EP4CE6E22C8 | EP4CE10E22C8 | 10M08SAE144C8GES | 内核电压 | 1.2V | 1.2V | 3.3V | LEs | 6272 | 10320 | 8064 | User I/O | 92 | 92 | 101 | 片内RAM | 276480 | 423936 | 387020 | 9bit乘法器 | 30 | 46 | 48 | PLL | 2 | 2 | 1 | User Flash | - | - | 2555904 | ADC | - | - | 1 | TSD(测温二极管) | - | - | 1 | 经过对比,安全、可靠、高集成又廉价。如果max10供货得当,有理由不换么。
二、MAX10 初体验—&mdashLL及闪烁LED
爱板网MAX10的板子,晒全家福:
上程序:
module pll_led(input wire i_clk,input wire i_rst_n,output wire [4:0]o_led,output wire [4:0]o_clk);wire clk200;wire clk150;wire clk100;wire clk50;wire clk25;wire locked;wire rst;reg [31:0]cnt200;reg [31:0]cnt150;reg [31:0]cnt100;reg [31:0]cnt50;reg [31:0]cnt25;reg led200;reg led150;reg led100;reg led50;reg led25;pll u_pll ( .areset (~i_rst_n), .inclk0 (i_clk), .c0 (clk200),//200 .c1 (clk150),//150 .c2 (clk100),//100 .c3 (clk50 ),//50 .c4 (clk25 ),//25 .locked (locked));assign o_clk = {clk200,clk150,clk100,clk50,clk25};assign rst = ~(i_rst_n & locked);always@(posedge clk200 or posedge rst)if(rst) begin cnt200 <= 32'd0; led200 <= 1'b1; endelse if(cnt200 == 32'd200000000) begin cnt200 <= 32'd1; led200 <= ~led200; endelse cnt200 <= cnt200 + 32'd1; always@(posedge clk150 or posedge rst)if(rst) begin cnt150 <= 32'd0; led150 <= 1'b1; endelse if(cnt150 == 32'd150000000) begin cnt150 <= 32'd1; led150 <= ~led150; endelse cnt150 <= cnt150 + 32'd1; always@(posedge clk100 or posedge rst)if(rst) begin cnt100 <= 32'd0; led100 <= 1'b1; endelse if(cnt100 == 32'd100000000) begin cnt100 <= 32'd1; led100 <= ~led100; endelse cnt100 <= cnt100 + 32'd1; always@(posedge clk50 or posedge rst)if(rst) begin cnt50 <= 32'd0; led50 <= 1'b1; endelse if(cnt50 == 32'd50000000) begin cnt50 <= 32'd1; led50 <= ~led50; endelse cnt50 <= cnt50 + 32'd1; always@(posedge clk25 or posedge rst)if(rst) begin cnt25 <= 32'd0; led25 <= 1'b1; endelse if(cnt25 == 32'd25000000) begin cnt25 <= 32'd1; led25 <= ~led25; endelse cnt25 <= cnt25 + 32'd1; assign o_led = {led200,led150,led100,led50,led25};endmodule 时钟及管脚约束:
#***************## Create Clock ##***************#set_time_format -unit ns -decimal_places 3create_clock -name {in50} -period 20.000 -waveform { 0.000 10.000 } [get_ports {i_clk}]create_clock -name {clk200} -period 5.000 -waveform { 0.000 2.500 } [get_nets {u_pll|altpll_component|auto_generated|wire_pll1_clk[0]}]create_clock -name {clk150} -period 6.666 -waveform { 0.000 3.333 } [get_nets {u_pll|altpll_component|auto_generated|wire_pll1_clk[1]}]create_clock -name {clk100} -period 10.000 -waveform { 0.000 5.000 } [get_nets {u_pll|altpll_component|auto_generated|wire_pll1_clk[2]}]create_clock -name {clk50} -period 20.000 -waveform { 0.000 10.000 } [get_nets {u_pll|altpll_component|auto_generated|wire_pll1_clk[3]}]create_clock -name {clk25} -period 40.000 -waveform { 0.000 20.000 } [get_nets {u_pll|altpll_component|auto_generated|wire_pll1_clk[4]}]三、个人感受:
1.下载sof和其他altera家的fpga无差异,在转换pof格式时需要选择下载到片内flash,而mode在下载器件选择的右侧,给人的感觉就是下载器件的模式,不得不先选择器件在选择mode,但是器件内没有片内flash,找了半天,最后发现器件不用选,直接选mode,片内flash藏在了最下面。无力再吐槽&hellip;&hellip;
2.关于pof的下载速度(是的没看错继续吐槽userflash),太漫长了。目测EPCS的写入速度是片内flash的十几倍,没1分钟都下载不完(原装下载器,我试了我自己的下载器更慢)。虽然编程过程毕竟不影响使用,一想到后面自己的程序要读写userflash,顿时感觉不好了。同样是flash,能不能再慢点。
3.作为一款高集成度的新片子,确实很有潜力代替cyclone的小容量市场,希望这些简单的小问题不会影响片子的投产。
后续将继续测评ADC和User Flash&hellip;&hellip; |
|