阶段 菜鸟阶段 FPGA基本设计方法.docVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
阶段 菜鸟阶段 FPGA基本设计方法.doc

FPGA学习之…… 目录 1.杂记 3 1.1 FPGA中未赋初值寄存器的值 3 1.2关于initial在仿真中的应用 3 1.3 仿真程序控制的变量 3 1.4 错误汇总 3 1.5 Inout口的编写办法 3 1.6 Component 相当于assign不能用在什么always 模块中 7 1.7 If-else不完全配套时 7 1.8 X实际上是0 7 1.9 关于BRAM(BLOCK RAM) 7 1.10 一个FPGA设计最大能工作的频率 7 1.11 DCM不能直接接管脚?输出一般要先过一个buf再输出? 8 1.12 FPGA中不同BANK区别?DSP概念?BUFG? 8 1.13 全局时钟只能跑一半?DCM输出时钟一般能跑1/4整芯片? 8 1.14把F68013_PC_FPGA程序最大工作频率提高,方法: 8 1.15 单词翻译 9 1.16时序报告解读及解决 9 1.17 关于FPGA Editor 10 1.18未用管脚电平设置 11 2.关于Chip Scop 11 2.1简介 11 2.2关于常用核 12 2.3 重要操作 13 2.4 缺点 13 2.5 使用说明 13 3 Modesim 与 ISE 联合仿真 13 3.1 安装方法,照下面操作即可实现联合仿真 13 3.1.1 安装注意事项 14 3.2 主要的优点 14 3.2.1 关于波形比较 14 3.2.2 数据流窗口调试 15 3.2.3 代码覆盖率,这功能不错 15 4. BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用 16 4.1全局时钟资源的使用方法(五种) 17 4.2 全局时钟资源的例化方法 18 4.3详解IBUFG/IBUFGDS+BUFG用法 18 5. I2C网上程序精读(尽快抽空) 18 5.1 关于上复位 18 FPGA设计 1.杂记 1.1 FPGA中未赋初值寄存器的值 在硬件平台中,当系统上电后,信号电平不是1就是0,不会存在X,因此,设计中用到的寄存器如果在没有初始化的情况下,在不同的平台上,其初始状态是不一定的,存在两种可能全0或者全1,而在XILINx公司的FPGA/CPLD上,默认为0。 1.2关于initial在仿真中的应用 在实验中发现,硬件输出分频器已经获得了成功,但是仿真的结果却始终不对,老是输出X。原因如下:在不同的平台中,未赋于初值的寄存器的初始值不一样。一般情况下有人加一个复位信号,这个信号用来对未赋值的信号进行下初始等初始操作,但是,有时不用。这时,我们就必须要加个initial语句,虽然它是不可综合的,但是,在仿真操作时会对未赋值变量赋于一个初值。这时仿真才可以正确的运行。 1.3 仿真程序控制的变量 还要注意一点在仿真程序中,只能控制的是输入变量,而原程序中的中间变量和输出变量都不是受人工控制的。 1.4 错误汇总 Cannot mix blocking and non blocking assignments on signal i 这种错误一般是因为程序中变量i阻塞和非阻塞一起使用了,解决的办法不要只看报错的那一行,而是要把这个变量的上下文全找一下,是否有混合使用的地方。 Always程序块能够直接在@符号后面放置字符*,在这种情况下,模拟器创建一个隐含的灵敏度列表,它包含了所有可能会影响到过程语句产生结果的那些信号。而同时,一个不完全灵敏度列表的“组合逻辑”其行为将具有时序特性。就是把所有的输入的变量全列进去。 1.5 Inout口的编写办法 下面是在网上找的一篇资料,是一个关于IO口的程序及测试程序的书写的完整例子。不错 先谈下自己的体会: 首先,IO口要做为输出口时,此时一定要用assign语句让IO口输出高阻态。在做测试程序时,也要用到assign但是,assign里面的判断语句的符号要反过来。 其中inner_port与芯片内部其他逻辑相连,outer_port为芯片外部管脚,out_en用于控制双向端口的方向,out_en为1时,端口为输出方向,out_en为0时,端口为输入方向。 assign a = ( (s[2:0]!=4))? ibus : 8bz; 如上原程序中s为4时输出高阻,同时IO口为输入,不为4时,为输出。则对应测试程序为: assign a = ( (s[2:0]==4))? a_t : 8bz; 可以发现s为4时,a口数据为a_t,也就是假定的外界的输入,此时a口为输入口。S不为4时,为高阻态,与原程序中比较不难发现其实相当于 Z*=*. 用Verilog语言描述如下: module bidirection_io(inner_port,out_en,outer_port); input out_en; inout

文档评论(0)

zhangningclb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档