可编程逻辑器件设计技巧
1. 什么是.scf?
答:SCF 文件是 MAXPLUSII 的仿真文件, 可以在 MP2 中新建.
1. 用 Altera_Cpld 作了一个 186(主 CPU)控制 sdram 的控制接口, 发现问题:要使得
sdram 读写正确, 必须把 186(主 CPU)的 clk 送给 sdram, 而不能把 clk 经 cpld 的延时送给
sdram. 两者相差仅仅 4ns. 而时序通过逻辑分析仪测试没有问题. 此程序在 xilinx 器件上
没有问题. 这是怎么回事?
答:建议将所有控制和时钟信号都从 PLD 输出, 因为 SDRAM 对时钟偏移(clock skew)很敏
感, 而 Altera 的器件 PLL 允许对时钟频率和相位都进行完全控制 . 因此, 对于所有使用
SDRAM 的设计, Altera 的器件 PLL 必须生成 SDRAM 时钟信号.
要利用 SDRAM 作为数据或程序存储地址来完成设计, 是采用 MegaWizard 还是 Plug-In
Manager 来将一个 PLL 在采用 Quartus II 软件的设计中的顶层示例?可以选择创建一个新的
megafuntion 变量, 然后在 Plug-In manager 中创建 ALTCLKLOCK(I/P 菜单)变量. 可以将 PLL
设置成多个, 或是将输入划分开来, 以适应设计需求. 一旦软件生成 PLL, 将其在设计中示例,
并使用 PLL 的“Clock”输出以驱动 CPU 时钟输入和输出 IP 引脚.
2. 在 max7000 系列中, 只允许有两个输出使能信号, 可在设计中却存在三个, 每次编译时出
现 “ device need too many [3/2] output enable signal”. 如 果 不 更 换 器 件 ( 使 用 的 是
max7064lc68). 如何解决这个问题?
答:Each of these unique output enables may control a large number of tri-stated signals. For
example, you may have 16 bidirectional I/O pins. Each of these pins require an output enable
signal. If you group the signals into a 16-bit bus, you can use one output enable to control all of
the signals instead of an individual output enable for each signal. (参考译文:这两个独特的输
出使能中每个都可能控制大量三相信号. 例如, 可能有 16 个双向 I/O 引脚. 每个引脚需要一
个输出使能信号. 如果将这些信号一起分组到一个 16 位总线, 就可以使用一个输出使能控制
所有信号, 而不用每个信号一个输出使能. )
3. 关于 vhdl 的问题:process(a, b, c) begin… end process; 如果 a、b、c 同时改变, 该进程是
否同时执行三次?
答:PROCESS STATEMENTS 中的执行跟逻辑有关系, 假如是同步逻辑, 则在每次时钟的
触发沿根据 A, B, C 的条件来执行一次;假如是异步逻辑, 则根据判断 A、B、C 的条件来
执行. 一般我们都推荐使用同步逻辑设计
4. 在设计最初, 由于没有将时钟信号定义在全局时钟引脚上, 导致 MAXPLUS II 在时间分
析时提示错误:(时钟偏斜加上信号延迟时间超过输入信号建立时间) . 全局时钟引脚
的时钟信号到各个触发器的延时最小, 有没有可能通过编译软件设置, 将普通 I/O 脚上的
时钟信号也经过芯片内部的快速通道以最小的延迟送到每个触发器时钟引脚?
答:you can register that signal and assign it as the global signal, by the step flow: assign->logic
option->Individual logic options->Global signal. But you'd better input the clock signal through
the dedicated input pin. (参考译文:可以寄存这个信号, 并将它指定为全局信号, 步骤如下:
指定—>逻辑选项—>个别逻辑选项—>全局信号. 但是, 最好通过专用输入引脚输入时钟信
号. )