可编程逻辑器件设计技巧(续)
--转自电子工程专辑
55.在中国市场上, 可以容易买到使用Altera公司的软件MAX+PlussII进行VHDL和FPGA设计的教程书籍, 但是却鲜有使用Xilinx foundation软件平台的书籍, Xilinx是否考虑增强这方面内容?
答:Thank you for your input.In fact there are a number of books available in the market on Xilinx FPGA and development tools.A good example is the title "XILINX 数字系统集成技术" by Professor 朱明程,published by Southeast University Press.We will work closely with local publishers to bring out more titles on Xilinx products.(市场上还是有几本Xilinx FPGA和开发工具的书. 比较好的有朱明程教授编的《XILINX 数字系统集成技术》, 东南大学出版社出版. Xilinx公司也将会与本地出版商密切合作, 推出更多针对Xilinx产品的书籍. )
56.在ISE4. 1环境下编写一个包结构, 里面有几个函数, 编译通过, 而MODELSIM 仿真出错, 提示:没有找到此PACKAGE, 为什么?
答:After you have created the package,you need to add it to your project.In the source window,right click and select "Add source",pick the source file for your vhdl package,and then select "Vhdl package".The package will then be added to your ISE project.(参考译文:创建了这个包之后, 需要将它添加到项目中. 在源代码窗口, 右键单击并选择“Add source”, 为vhdl包选择源文件, 然后选“Vhdl package”. 这个包就添加到ISE项目中了. )
57.布板时, 时钟信号没有接全局时钟, 如何处理时钟使之可以更好(不需飞线)?
答:You can bring the signal back to the global clock network by inserting a BUFG. (参考译文:可以通过插入一个BUFG将一个信号返回全局时钟网络. )
58.准备使用XCV50 FPGA, 前面有16个模块, 本来每个模块都须要一个27M的时钟, 为了达到同步, 初步设想外部接一个27M时钟, 最后由FPGA产生16个27M的时钟输出, 这样做驱动会不会有问题?
答:A possible way is to feed your 27MHz input clock to a DLL.The output of the DLL drives multiple OBUF.In this way you can create multiple copies of your input clock to drive other components on your board.You don't actually need 16 OBUFs since each OBUF can drive several loads.Note that although the DLL output can drive multiple OBUF,only the one which provides feedback to the DLL can be completely deskewed.You can also add a MAXSKEW constraint on the output net of the DLL to minimize skew among the OBUFs.This may not be a big issue since 27MHz is relatively slow.(参考译文:可能的方法是将27MHz输入时钟传递给DLL. DLL输出驱动多重OBUF. 用这种方法可以创建输入时钟的多个副本以驱动板子上的其它组件. 实际上, 不需要16个OBUF, 因为每个OBUF都可以驱动几个负载. 请注意, 虽然DLL输出能驱动多个OBUF, 但只有那个向DLL提供反馈的OBUF可以完全对称(deskewed)的. 也可以在DLL的输出量上添加MAXSKEW限制, 以最小化OBUF间的偏斜. 因为27MHz相对比较慢, 所以问题不大. )
For more information regarding the use of DLL,please refer to the application note XAPP132 which can downloaded from the xilinx websitewww. xilinx. com(关于DLL的使用, 请参考XAPP132的应用手册. )
59.IP CAPTION 就是核发生器, 它运行在核发生器目录下吗?
答:I think you mean "IP Capture".The IP Capture tool provides designers with an automated method to identify,capture,and document a core.The core can exist in the form of synthesizable VHDL or Verilog code,or a fixed function netlist.Once the new module has been captured,it can be installed into and distributed from a user's local copy of the Xilinx CORE Generator system.(参考译文:所指的应该是"IP Capture"吧. IP Capture工具为设计者提供了自动识别、捕获和归档核的方法. 核可以综合VHDL或Verilog码, 或固定功能连接表的形式存在. 一旦捕获了新模块, 就能够将核装入, 并从用户的本机Xilinx CORE Generator副本中分配此核. )
Details of the IP Capture tools can be found from Xilinx website .http://www. xilinx. com/page_moved/ipcenter_e. htm?url=/ipcenter/designreuse/ipic. htm(有关IP Capture工具的详细资料, 请访问相关网站. )
60.制作了一块试验板, CPLD使用EPF10K20TI144-4. 用max+plus II 10. 1编程, 完成后, 下载至片子内, 经过几次下载尝试(一直提示configuration failure: SRAM load unsucessful), 直至提示“configuration complete”——这应该是表示下载成功吧, 可是片子却无法实现任何功能(连最基本的一个或门都无法实现)——不起任何作用, 我使用TQFP-144的适配座放置EPF10K20TI144. 现在有几个问题:
①编译前选择的是EPF10K20TC144-3芯片(max+plus II的器件库中没有EPF10K20TI144-4), 有没有关系?也用EPF10K10TC144-4试过, 也是可以下载但无法实现功能.
②为什么要下载很多次才能成功, 下载线是自己制作的?
③将MSEL0、MSEL1、nCE、专用输入脚、专用时钟脚接地, 其它非I/O引脚悬空, 是否还有些引脚需要接地或VCC?
④如果因为TQFP-144适配座一些触点与CPLD引脚接触不好导致一些VCCIO, VCCINT、GNDINT、GNDIO或其它一些非I/O引脚悬空, 会出现什么结果?
⑤如何才能使CPLD实现功能?
答:根据描述, 很有可能是加载电路有问题, 请参照Altera的AN116文件的加载电路图仔细核对, 特别注意和CPU相连的加载控制管脚:
①编译芯片选择与速度等级无关;
②请检测conf_done信号是否拉高;
③在常用的PS和JTAG加载模式时除了MSEL0, MSEL1, nCE, 没用的专用输入脚, 专用时钟脚应该接地 , data0, nconfig, dclk, nstatus, conf_done都应该上拉, 这些管脚不上拉很可能是导致你加载不成功的原因;
④如果因为TQFP-144适配座一些触点与CPLD引脚接触不好导致一些VCCIO, VCCINT, GNDINT, GNDIO或其它一些非I/O引脚悬空, 会出现会出现加载链路不通或加载不成功的现象;
⑤加载成功后CPLD就能实现功能.
61.目前采用SRAM技术的LUT-based的FPGA仍然占绝对主流地位, 但是这种FPGA有其天生的缺陷, 请问下一代FPGA的构架发展趋势怎样?Altera在这方面有没有什么新的尝试?
答:下一代FPGA主要朝着SOPC的方向发展:
Altera的下一代产品Stratix, 基本单元LE仍然基于LUT结构, 但有些大的改变,
①去掉了传统的级联链(Cascade Chain);
②进位链(Carry Chain)由以前的单一1条变为LAB Carry-in、Carry-in1、Carry-in0三条;
③LE的扇出也由2个变为了4个;
④触发器的控制信号也更多.
其它方面:
①RAM:一改以前单一2K BITs 或4K BITs的 Memory为小RAM:512BITs; 中RAM:4KBITs;大RAM:512 KBITs;
②第一次在FPGA中嵌入DSP;
③时钟链路也由全局时钟变为全局时钟和区域全局时钟;
④. . . . . .
所有的这些变化都是通过大量的用户反馈信息作出的慎重改进, 使的Stratix器件更加适合用户的设计需求
62.能否提供7128的下载波形、DSP与PLD的典型下载电路?
答:7128的下载波形与PLD的典型下载电路在Altera应用文档AN95里有详细的说明.
63."Always use fully synchronous design.You never need to reply on gate delay if your design is fully synchronous. " 如果设计是完全同步的, 意思是就可以不用依靠门延时. 但在设计时, 在对和数据一同进来的控制信号进行处理后所产生的输出控制信号会滞后数据数个时钟周期, 这时就不得不对数据进行门延时, 已达到同步. 现在看来, 这是不合适的. 但是, 要用什么办法来处理这个问题而不应用门延时呢?
答:In a "fully synchronous" design,you only have 3 kinds of paths(在完全同步设计中, 只有三种途径:)
①From I/O to synchronous element. (从I/O到同步元素)
②From synchronous element to synchronous element. (从同步元素到同步元素).
③From synchronous element to I/O. (从同步元素到I/O)
这是最后的一些
A fully synchronous design will work as long as the delays of all these paths do not exceed the clock period.So you never need to introduce any delay.If you derive any control signal from the input signals,that control signal only goes to the 'D' or 'EN' pin of a FF,but not the 'CLK' pin.So there is no need to introduce any delay to your data.Simply speaking,you only need to design the "data" path but not the "clock" path in a fully synchrous design.
On the other hand,you can remove clock delay with the DLL in Xilinx SpartanII/Virtex devices or the DCM in VirtexII devices.(完全同步设计将工作到所有这些路径的延迟不超过时钟期间. 因此从不需要传入任何延迟. 如果从输入信号中得到任何控制信号, 则该控制信号只能传递至FF的D或EN引脚, 而不是CLK引脚. 因此, 不需要将任何延迟传入数据. 简单讲, 在完全同步设计中, 只需设计“数据”路径, 而不是“时钟”路径. )
64.ISE4. 2I可对某些特殊管脚设置内部上拉, 那么外部是不是就可以不必再加上拉电阻了?另外, 配置过程中, 所有的用户I/O是否均为三态? VIRTEX2的HSWAP_EN应接何电平?为什么?
答:Whether you need to add external pullup resistors depends on your board design.Usually external pullup resistors are required under the following conditions((参考译文:是否需要添加外部上拉电阻取决于电路板设计. 通常在以下条件下需要外部上拉电阻:)
- You need precise pullup values.The pullup built into the IOB is not specified to a precise resistive value since it values from batch to batch.(需要精确的上拉值. 因为it values from batch to batch, 所以然内置入IOB的上拉未指定精确电阻值. )
- You need strong pull-up strength.The IOB pullup is relatively weak - in the order of several tens of KOhms.(需要强大的上拉动力. IOB上拉相对较弱, 只有数十千欧)
If you only want to prevent the board signal from floating,external pullup is usually not required.
You need to refer to the datasheet of the corresponding FPGA series to determine the state of the I/O during configuration.As an example,I/O pins of Virtex-E and Spartan-IIE behave as tri-state beore configuration.The HSWAP_EN pin on Xilinx Virtex-II is for enabling/disabling pullups on the user I/O pins during configuration.By default,HSWAP_EN is tied high (internal pullup resistor) which turn off pullup resistors on user I/O during configuration.(如果只想阻止板信号浮动, 通常不需要外部上拉. 需要参考相应的FPGA系列的参数表, 以确定配置过程中I/O的状态. 例如, Virtex-E和Spartan-IIE的I/O引脚在配置以前是三态的. 配置过程中, Xilinx Virtex-II 上的HSWAP_EN引脚用于启用/禁用用户I/O引脚上的上拉. 缺省情况下, HSWAP_EN系有较高内部上拉电阻, 用于在配置期间关闭用户I/O上的上拉电阻).
65.自顶向下的设计过程是什么样的一种过程?我的理解是在设计开始时, 利用vhdl或verilog中的延迟描述语言在功能和波形上进行仿真描述, 而后进行rtl设计. . . . 是否是这样的一个过程?
答:By top down design we usually mean you partition the top level design into a number of modules first,without going into details of each of those modules.Then you start to design each module,which may involves defining more underlying submodules.The process stops when you have designed all the underlying submodules.The basic idea is to build a hierarchy which starts with less details on the top and more details as you go down the hierarchy. (参考译文:我们所谓的自顶向下设计通常是指:先将顶级设计划分为多个模块, 而不涉及这些模块的细节. 然后开始设计每个模块, 可能包括定义更多底层子模块. 当设计完成所有底层子模块后, 这个过程即完成. 基本思路是建立一个层次结构, 从顶部粗略划分开始, 越向下层越详细. )
66.HSWAP_EN推荐接高还是低, 为什么?
答:There is no definite answer to this - it depends on whether you want the user I/Os to have pull up resistors during configurations.Therefore it is design dependent.(参考译文:没有定论. 高还是低取决于配置过程中是否要使用者I/O具有上拉电阻. 因此因设计而定. )
Thanks a lot.
可编程逻辑器件设计技巧(续
经典,不够详细。
LZ太好了
小编辛苦了!
可编程逻辑器件设计技巧(续
经典,不够详细
经典啊,谢谢小编
小编好人啊
长见识啊!
辛苦了RTL
真是好文章阿!
old....................