lanlingshan

 

02 2012 档案

SPI程序的一些总结
摘要:1、电平敏感量触发/边沿触发敏感量问题(阻塞赋值与非阻塞赋值的问题):详细程序参看Verilog数字系统设计教程 夏宇闻 【第二版】第14章 深入理解阻塞和非阻塞赋值的不同 (1)、原则1:时序电路建模时,用非阻塞赋值 原则2:锁存器电路建模时,用非阻塞赋值 (2)、原则3:用always快描述组合逻辑时,应采用阻塞赋值语句 (3)、原则4:在同一个always快中描述时序和组合逻辑混合电路时,用非阻塞赋值 (4)、原则5:不要再同一个always快中同时使用阻塞和非阻塞赋值 (5)、原则6:严禁在多个always块中对同一个变量赋值 (6)、原则7:用$系统任务来显示,... 阅读全文

posted @ 2012-02-28 13:59 lanlingshan 阅读(697) 评论(0) 推荐(0)

如何使用ModelSim作前仿真與後仿真? (真oo无双前辈)
摘要:Abstract本文介紹使用ModelSim做前仿真,並搭配Quartus II與ModelSim作後仿真。Introduction使用環境:Quartus II 8.1 + ModelSim-Altera 6.3g由於FPGA可重複編程,所以不少開發人員就不寫testbench,直接使用Quartus II的programmer燒進開發板看結果,或者使用Quartus II自帶的Waveform Editor進行仿真,這種方式雖然可行,但僅適用於小project,若project越寫越大,Quartus II光做fitter就很耗時間,一整天下來都在作Quartus II編譯。比較建議的方式 阅读全文

posted @ 2012-02-28 13:42 lanlingshan 阅读(254) 评论(0) 推荐(0)

verilog设计经验总结(转自冰灵FPGA)
摘要:先记下来:1、不使用初始化语句;2、不使用延时语句;3、不使用循环次数不确定的语句,如:forever,while等;4、尽量采用同步方式设计电路;5、尽量采用行为语句完成设计;6、always过程块描述组合逻辑,应在敏感信号表中列出所有的输入信号;7、所有的内部寄存器都应该可以被复位;8、用户自定义原件(UDP元件)是不能被综合的。一:基本Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器,还有可能被优化掉。二:verilog语句结构到门级的映射1、连续性赋值:assign连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。 阅读全文

posted @ 2012-02-23 08:59 lanlingshan 阅读(437) 评论(0) 推荐(0)

Modelsim仿真笔记
摘要:在写SPI程序的时候,用Modelsim进行仿真的时序图是正确的,但是下载到板子时确不正确。总结一下几点:1:在仿真程序中可以用initial进行初始化,但是在下载到板子的程序中不能用initial进行初始化,采用reset进行初始化2:在快速的时序当中,程序写法不规范,就会导致延时的问题,从而导致产生预期想不到的波形。为避免意想不到的延时:(1)提高工作频率的本质就是减少寄存器到寄存器的延时,最有效的方法就是避免出现大的组合逻辑,也就是尽量满足四输入的条件,减少LUT级联的数量我们可以通过加约束,流水线,切割状态的方法提高工作频率。(2)一个模块尽量至用一个时钟,尽量不要使用计数器分频后的信 阅读全文

posted @ 2012-02-22 19:18 lanlingshan 阅读(394) 评论(0) 推荐(0)

SPI_Master
摘要:/************************************************************************************************ SPI MASTER* January 2007************************************************************************************************/`timescale 10ns/1nsmodule SPI_Master ( miso, mosi, sclk, ss, data_bus, CS, addr, 阅读全文

posted @ 2012-02-20 13:52 lanlingshan 阅读(477) 评论(0) 推荐(0)

testbench中initial部分clk没有赋初值导致clk输出X
摘要:/*`timescale 1ns/100ps`define clk_cycle 50module testbench1; reg clk,reset,nbusy; reg [7:0]data; wire ce,sck,si; always #`clk_cycle clk=~clk; initial begin reset=1; #100 reset=0; #100 reset=1; #100000 $stop; endendmodule */`timescale 1ns/100ps`define clk_cycle 50module testbench2; reg clk,reset; wi. 阅读全文

posted @ 2012-02-16 17:28 lanlingshan 阅读(597) 评论(0) 推荐(0)

【转】双口RAM
摘要:在测控、仪器仪表、语音信号处理和图像通信领域中往往需要多处理器分工完成数字信号处理(DSP)算法和与外部系统的通信、控制、数据采集和人机接口功能。在多机系统中,CPU之间的通信常采用以下几种方式:(1)串行通信。这种方式相对简单,由于受到波特率的限制,在不同档次单片机之间需要通信业务大的场合得不到很好的通信效果。(2)并行通信。利用CPU的I/O功能在CPU之间增加缓冲器或锁存器实现双机通信。通信性能较串行通信有所提高,但仍然得不到理想的效果。(3)利用共享式存储器实现。DMA方式就是其中的一种,能够达到数据的高速传输,但不能同时访问存储器,CPU必须等待总线,而且有些CPU不支持DMA功能。 阅读全文

posted @ 2012-02-14 14:55 lanlingshan 阅读(1129) 评论(0) 推荐(0)

导航