AGM 技术笔记
修订历史
版本 | 日期 | 原因 |
V0.01 | 2017/11/18 | 创建文档 |
V1.0 | 2018-3-25 | 修改操作步骤,同时更新烧录操作部分 |
工程技术笔记 ©2017 HIYUAN TECH; robin@agmsemi.com
1
AGM 技术笔记
目 录
4.9 代码从EPM570移植到AG1280后,部分模块不工作
4.13 AG1280的GCLK脚不能设置为OUT,如何解决
4.18 tools-migrate菜单是灰化的,点了没反应
4.19 请问用AG1280,外部要接5V的I/O,能否用电阻进行分流。 I/O数据通信速率是2MHZ。
4.20 请问AG1280内部有用户可以使用ROM或者FLASH空间吗
4.22 AG1280Q48的I/O管脚的最大驱动电流和灌电流是25mA.
5.2 对Qaurtus 的版本有没有要求?用的是Prime的是否OK。
6.2 是否支持使用Quartus II中的Signaltap功能及IP支持情况
7.1 请问AG16KSDE176 支持LVDS吗,客户需要17对LVDS
7.10 这个配置是不是需要两个Flash(FPGA一个,ARM一个?)
7.10.1 这个boot_addr在代码里找不到, AHB不用配置?
7.11 我用100M的PLL倍频的时钟,直接接入ARM端口,里面的频率是如何分频之类的?
7.12 FPGA和ARM一起的程序如何下载到FLASH里面去;
7.12.1 我用的PLL的输入时钟和输出时钟和例程不一样,sdc文件是不是需要修改?
7.12.2 用AG10K替换下EP4CE10以后,需不需要重新更新程序?用之前的下载近flash里面的程序可不可行?
7.12.3 ARM JTAG的引脚需不需要做额外的上拉之类的,还是直接分配引脚引出来就行
7.12.4 ARM端口JTAG/SW模式,我这边都无法找到器件
7.13.1 问下JLINK的IO location在哪里改呢
工程技术笔记 ©2017 HIYUAN TECH; robin@agmsemi.com
1
AGM 技术笔记
以简单通俗易懂的流程说明,让用户直观的学习如何用Supra和Quartus II软件,完成AGM FPGA/CPLD的项目开发。
此文档主要是FAQ.
FAQ文档仅供参考,不承担由此带来的任何责任。如有疑问,欢迎与我们联系!
问题:使用网购12元的ALTERA USB BLASTER下载器,安装驱动后,能够识别到器件,但是烧录了3个测试板都是以下出现同样的提示。
图 9.1 烧录失败
解决办法:更换烧录器试一试。
我是换用FT245+CPLD方案的ALTERA USB BLASTER烧录器后,顺利实现了程序下载。当然,也有客户是采用12元的烧录器烧录成功的,可能跟每个烧录器的质量也有一定的关系。所以当你遇到此问题,尝试使用质量更好烧录器试一试。最好就是一开始就卖贵一些的烧录器,使用更放心一些,避免少走弯路。
在Supra的Program界面中,出现无法识别器件的ID的情况,如下图。
经过确认,是客户将芯片焊接反了,重新焊接之后,就可以顺利Program了。另外,也要留意JTAG口的线是否插反了,要确保是正确的连接JTAG烧录口。
问题:
将现有例程的文件夹重新命名,然后直接烧录编程文件,发现程序运行不正确。或者说,重新命名文件夹后,在Supra和Quartus软件中重新走一遍流程后,生产的烧录文件,烧录到芯片上,虽然可以成功烧录,但是功能不正常:流水灯常亮,不闪烁。
图 9.2 烧录窗口(目标文件夹名称已经修改加了日期)
原因分析:比如文件夹名称是LED_AG1280EVB_PLL2CLK,若修改了文件夹的名字,因为工程中包含有PLL的IP。经过重新编译和综合,PLL没有正常导入,重新Migrate后,可能导致烧录文件链接的地址信息不正确,以致出现烧录的文件不起作用的情况。
解决办法:
方法一:重新恢复源文件的路径,不要修改目录。
图 9.3 烧录窗口
方法二:重新建一个工程,文件重新导入。
把led.v,led.asf, inpll.v和inpll.ip放到新空目录,比如新建一个TEST_LED文件夹。重新建工程,将保存地址选择放在TEST_LED目录下。然后重新Migrate一下。在Migrate的界面中,需要将IP导入,即将inpll.ip导入。然后再重来一遍。
图 9.4 导入PLL IP
然后重新在Quartus II中进行综合编译,编译成功后执行tcl。Tcl成功后,切换回Supra中进行Compile, Compile成功后,点击Program烧录。
问题:
请问每次修改程序代码,比如我在LED程序里面添加功能,是否都需要完成以下步骤:
1、修改LED程序代码;
2、在Supra里面重新Migrate,导入PLL IP;
3、切换到Quartus II中对程序进行综合编译;
4、TCL;
5、返回Supra点击NEXT,直到下载程序的界面。
Reply:
只需要在第一次建立Project的时候走这个流程。后续每次修改Quartus中的代码,直接点Quartus中的Compile design即可;Quartus中Compile通过后,切换到Supra中,将对应的工程直接选择Compile编译,编译后,选择Tools ----- Program。
新建的空白工程,只在 top verilog 文件中增加了一個反向器,然後就開 quartus 跑TCL 出錯。
客户分享解决办法:
我在 Linux 上的 V18 和諧版本,可以成功了,並找到規律:如果首次運行 TCL 時,代碼有錯誤(昨天反向器接口列表最後多了一個逗號沒刪),就會出我昨天截圖的錯誤;首次代碼無誤,編譯通過,接下來再把代碼改錯,才能正常提示哪一行代碼有錯。
问题:为什么使用内部的时钟,在端口列表上还出现clk. 如led(clk,rst,led,test1,test2);
Reply:
这端口列表还是要有这个clk,实际上clk这个不用接,或者接地,但是PLL IP模块没有clk编译不过。若是将clk分配到GND或者其他普通I/O上,Supra中Compile也会报错。注意:PLL 的输入时钟必须是芯片的全局输入时钟管脚(Pin_13,Pin_15,Pin_19 这三个)。所以在引脚分配上,还是要分配到IO Global上,比如PIN_13。
set_location_assignment PIN_13 -to clk
现在我设的这个PLL,test1输出大约37M,test2输出62MHz,芯片不同略有不同;如果你那里需要65M就用test2那个。IP先可以不用改,后面我们软件里会加入具体设置界面。
附:在led程序模块中,调用内部时钟模块inpll的程序清单如下:
inpll pll_inst( // PLL
.clkin(clk),
.clkfb(test1),
.pllen(1'b1),
.resetn(rst),
.clkout0en(1'b1),
.clkout1en(1'b1),
.clkout2en(1'b0),
.clkout3en(1'b0),
.clkout0(test1), //clkout0
.clkout1(test2), //clkout1
.clkout2(),
.clkout3(),
.lock()
);
用户用的是26MHZ的有源晶振,希望通过PLL倍频到78MHZ。但是一直没有成功。
Reply:
1、PLL输入类型选择PLLX。
2、客户后来检测发现,用原来测试的50MHZ的有源晶振,类型选PLLX可以了。之前没有时钟输出,是因为客户用的那个26MHZ晶振频率振幅太低了,导致FPGA没有识别到时钟信号。
由于配置的FLASH要先启动完成,才开始配置PLD,所以1.2V需要比3.3V晚10-20ms后再启动。一般情况下,是将电源先供给3.3V的LDO, 然后再有3.3V供给1.2V的LDO。
目前测试,也有1.2V晚100多us也配置成功的。
客户提出:通用的代码用MAX570验证没毛病,只要添加网线或者添加其他代码,就容易出现原来调试过的部分不工作的情况。单独模块测试,全部都正常。基本上确定芯片是没问题的,担心是软件布线存在问题。
客户继续尝试,反馈:实际工作也正常,就发现一个神奇的,事情,只设置CLK到通用IO,其他交给SUPERA来设置,那么就可以工作。
要是我设置IO,就有几率不工作。当然按照SUPRA自动设置的IO,手动设置IO,再编译也可以工作。
建议1:CLK必须要G开头的I/O 。客户的CLK确实已经连接到全局I/O: PIN_13。
建议2:Reset这些,建议也用G开头的。客户重新尝试,将Reset分配到G开头的全局I/O之后,设计的各个功能模块放在一起,都正常工作了。
工程技术笔记 ©2017 HIYUAN TECH; robin@agmsemi.com
1
因为WORD贴到网站上,文档太长,转化不完整,如果对相关问题感兴趣。欢迎E-mail to: robin@hizyuan.com 或者添加Q-Q 150-615-255.