摘要:
来源 《verilog HDL那些事--建模篇》1、并行建模的思想。2、每个模块最好只有一个功能。(便于修改和扩展,特别在大的项目中)典型的 HDL 教科书中,才不会要读者了解“模块的性质”。没有性质的模块,常常会使得初学着在设计上和理解容易陷入“混乱”。反之,如果“模块含有性质”的话,在设计和理解... 阅读全文
摘要:
这里不讨论异步fifo是如何实现的,而是在实现fifo的前提下,对fifo的读写。现在遇到的问题是:总线的数据不能写入fifo中,但是地址能加一。代码如下: if( !fifo_tx_full && cpu_write_fifo_en ) begin fifo_r[ write_a... 阅读全文
摘要:
1、如果启动沿(launch)和锁存沿(latch)是同一时钟域则,latch比launch晚一个时钟周期。2、数据到达时间3、时钟到达时间。如果启动沿(launch edge)和锁存沿(latch edge)是同一时钟域则,latch edge比launch edge晚一个时钟周期。如果在不同的时... 阅读全文
摘要:
1、有意义且有效的名字。2、同一信号在不同层次应该保持一致。3、添加有意义的后缀,使信号的有效性更加明确。4、模块输出寄存器化,使得输出的驱动强度和输入延时是可以预测的。5、使用括号表明优先级。6、每一个if都应该有一个else。如果esle没有任何相应的动作,则用一条空语句。(if。。esle可能... 阅读全文
摘要:
关于nios 中的中断,因为要16c550中需要nios的中断环境去测试,所以就用到了中断。硬件:在nios中添加硬件PIO,但是要使能中断功能。如下图所示:系统列化,PIO的连接就不说了。但是要注意两地方:edge type, IRQ type。接下来就是软件设计:使能相应的中断,IOWR_ALT... 阅读全文
摘要:
参考了 《Altera FPGA/CPLD 设计》高级篇, 关于状态机的推荐写法实现的功能是一样的但是编译使用的逻辑门如下图:下图是我自己编的状态机需要的逻辑:下图是使用推荐的有限状态机后,编译消耗的资源:总结:推荐的有限状态机,分为2个always 块。 一个用于控制状态的转移,一个用于当前状态的... 阅读全文
摘要:
代码风格1、有关状态机的设计风格(1)状态转移单独写成一个模块。(2)状态的操作和判断写成一个模块。2、如果芯片有乘法器,可以使用*运算符。3、三态一般只在顶层使用。子模块就将inout分解。4、敏感信号列表应包括:所有输入信号,判断条件。希望通过增减信号列表实现某项逻辑功能是大错特错的。5、cas... 阅读全文
摘要:
到现在我还是不太理解SDRAM的时序设置,但是可能蒙对了。(呵呵)开发环境: quartus II 13.0 板子: DE2 EP2C35F672C6N时序约束step 1:create clock: 50MHZ时序约束step 2: virtual clock(原因:timequest不知道外接时钟的属性,即要实在的指出。并要对之约束)时序约束step 3: set output delay , set input delay (这是最难的,个人认为)先理解: setuptime 有三类hold time :还要结合具体的分析如:(原因:有些延时是找不到的,如clock network d. 阅读全文
摘要:
环境: quartus v13.0 64位。 DE2 cycloneII EP2C35F672C6N (学校的开发板,还是想同学借的呵呵)主要实现flash的烧录,虽然实现了但是还是有很多运气的成分(如:ip核的连线问题,flash的时序和相关的器件连接,SDRAM的时序收敛,软件用的例程)。种种表明我还有漫漫长路要走,才能算入门。1、复位不正常。(可能原因:没有加时序约束或者是复位向量没有指向SDRAM,而是FLASH。但是flash 还没有烧录导致复位失败,等等测试,,,)2、flash的烧写失败。测试复位不正常是否由复位向量指向flash(此时flash还没有程序)的原因。经过测试:复位 阅读全文
摘要:
系统id有问题的总结:1, 复位是否正确。(特别使用拨码开关的)2, 硬件连接是否有问题。(SDRAM的时序约束可以有,也可以没有)3, 引脚分配是否正确。(SDRAM的dqm就错过一次)4, 关掉重启。(刚刚就是重启好了,我也不知道原因呵呵,以后再写,,,,,,,)重启后,没问题。(无语)接下来看主题:软件程序运行正常但是此时led灯并没有闪动。可以排除的问题:1,软件没问题。因为用的是例程, 软件这一块晚点再学会编写。2,led地址没问题。后来我想想:可能是我把一些文件删了。删了只有11rpt。正常可能有35个。(不确定是不是这个原因) 阅读全文