FPGA学习笔记

   FPGA中串行配置芯片(如EPCS128) 既要起到存储 FPGA启动配置数据的作用,又要担负存储 NIOS2处理器程序的作用。因此,EPCS控制器的作用有两个:一是用来帮助 EDS工具把软件程序下载到EPCS4 芯片中,二是在 FPGA配置完成后,引导EPCS4 中的程序到 SDRAM 中进行运行。
   
时序设计四部曲:即时序分析、时序约束、时序报告、时序收敛。 
分析时,要清楚与系统时钟频率有关的组件是哪些?与外设接口频率有关的组件又是哪些呢?如果组件与外围的时序基本没有要求,要不要做管脚的时序约束无关紧要,对我们的设计照成不了任何影响。用前面说过的情况来处理它,就把它归入false路径。

建立时间:是指数据在被采样时钟边沿采样到之前,需保持稳定的最小时间。
维持时间:是指数据在被采样时钟边沿采样到之后,需保持稳定的最小时间。锁存就是把信号暂存,以维持某种电平状态。

Altera共有四种工作模式:1.mormal模式:PLL的输入引脚与I/O单元的输入时钟寄存器相关联;2.zero delay buffer模式,PLL的输入引脚和PLL的输入引脚和PLL的输出引脚的延时相关联;3.external feedback模式:PLL的输入引脚和PLL的反馈引脚延时相关联;4.no compensation模式:不对PLL的输入引脚进行延时补偿。
always 块内的语句是顺序执行的,always块之间、assign语句以及实例元件等语句都是并行执行的
网络类型的变量不能存储值,而且必须受到驱动器的驱动。
wire类型的数据用来表示用以assign语句赋值的组合逻辑信号,wire类型的信号可以用作任何方程式的输入和实例元件的输出,但只能在assign语句中被赋值使用。
fpga中[n:1],”:“左边的数字表示数据最高位标号,它右边的数字表示数据最低位标号,例如:
wire[4:1] drain //drain[4]为最高位,drain[1]是最低位
wire[0:3] address //address[0]为最高位,address [3]是最低位
register型变量对应于具有状态保持作用的电路元件,如触发器,锁存器等。register变量只有在被明确地赋值以后才能对其他变量进行赋值,重新赋值之前一直保持原值。在设计中,此类变量必须放在块语句中,通过过程赋值语句赋值。同一个register型变量只能在一个语句块中重复赋值,而不能同时在多个块语句中赋值使用。
所谓同步是指信号有效状态地采样必须与时钟地有效沿同步,而异步则与时钟信号无关,只要异步信号有效,就会发挥其作用。

    译码器,if-else语句是先从第一个条件分支开始判断,因此使用if-else语句设计的译码器效率较低。而case语句的特点是,执行过程中语句根据计算的结果直接跳入相对应的条件分支。因此使用case语句设计译码器较为合适。

猜你喜欢

转载自blog.csdn.net/whocarea/article/details/83416023