问题1:工程编译好后,git上传,变更分支又切换回来,再次编译有时候失败,所以配置好的管脚变成默认的,生成的IP核变成名变粗(顶部文件,管脚配置显示IP核输入输出信号配置)。双击IP核重新生成下,有时编译又正常,但有时始终编译不过去。
解决:把顶部文件设置好,再编译
管脚复用:
问题2:编译后报错there is a timing error ,有个工程打开下面界面能正常编译通过,但编译输出错误信息there is a timing error,关闭这界面,编译又是正常的
原因: 工程修改过程中删除了时钟信号A,添加其他时钟信号B/C,但是信号A在下面界面有优先级选择,工程认为有信号A,但又没有使用,所以报there is a timing error
解决:在下面界面中Seldction右击删除再重新编译即可
问题3:创建新工程,移植以前弄过的程序,约束管脚,编译通过后,下载后测试出现异常;
原因:新建工程编译器默认是lattic的LSE,切换编译方式就可以了
记录4:Lattice MachXO2 使用内部晶体振荡器OSCH
--调用库
library lattice;
use lattice.components.all;
--模块申明
COMPONENT OSCH
-- synthesis translate_off
GENERIC (NOM_FREQ: string := "24.18");
-- synthesis translate_on
PORT ( STDBY :IN std_logic;
OSC :OUT std_logic;
SEDSTDBY :OUT std_logic);
END COMPONENT;
attribute NOM_FREQ : string;
attribute NOM_FREQ of OSCinst0 : label is "24.18";
--调用模块
OSCInst0: OSCH
-- synthesis translate_off
GENERIC MAP ( NOM_FREQ => "24.18" )
-- synthesis translate_on
PORT MAP ( STDBY=> '0',
OSC=> CLK25M,
SEDSTDBY=> open
);
可设置的时钟表:内部时钟误差±5%,只能做精度不高的复位、点灯等操作