摘要:
verilog 里面,always和always@(*)有区别吗?1.always@后面内容是敏感变量,always@(*)里面的敏感变量为*,意思是说敏感变量由综合器根据always里面的输入变量自动添加,也就是所有变量都是敏感列表,不用自己考虑。 2.如果没有@,那就是不会满足特定条件才执行,而是执行完一次后立马执行下一次,一直重复执行,比如testbench里面产生50Mhz的时钟就(假设时间尺度是1ns)可以写成 always #25 CLK_50Mhz = ~CLK_50Mhz;一般always@(*)是指里面的语句是组合逻辑的。*代替了敏感变量。
而一般时序逻辑要写成always@ 阅读全文
摘要:
转自:http://hi.baidu.com/wchonline/item/4567c2e8057348e0fa42ba9f 在多CPU系统中,CPU间的通信可以采用串口、并口等方式,但它们共同的缺点是操作复杂、速度慢。因此,随着价格的不断下降,采用双口RAM方式在两个CPU系统间交换数据是一个不错的选择。但双口RAM有时会发生共享冲突问题。下面讨论防止共享冲突的几种方式。 1.双口RAM防止共享冲突的方式 一般双口RAM都提供了两个完全独立的端口,每个端口都有自己的控制线、地址线和数据线,CPU对双口RAM端口的操作等效于对它的外部RAM进行操作。双口RAM在使用上要注意的问题是... 阅读全文
摘要:
转自:http://blog.csdn.net/yangtalent1206/article/details/6430119在Verilog中有两种类型的赋值语句:阻塞赋值语句(“=”)和非阻塞赋值语句(“<=”)。正确地使用这两种赋值语句对于Verilog的设计和仿真非常重要。下面我们以例子说明阻塞和非阻塞赋值的区别。 我们先来看几段代码及其对应的电路:HDL源代码对应的RTL电路module Shifter1( Clk, D, Q3 ); in... 阅读全文
摘要:
转自:http://blog.csdn.net/yangtalent1206/article/details/64227481.信号完整性(Signal Integrity):就是指电路系统中信号的质量,如果在要求的时间内,信号能不失真地从源端传送到接收端,我们就称该信号是完整的。2.传输线(Transmission Line):由两个具有一定长度的导体组成回路的连接我们称之为传输线,有时也被称为延迟线。3.集总电路(Lumped circuit):在一般的电路分析中,电路的所有参数,如阻抗、容抗、感抗都集中于空间的各个点上,各个元件上,各点之间的信号是瞬间传递的,这种理想化的电路模型称为集总 阅读全文
摘要:
转自:http://blog.csdn.net/yangtalent1206/article/details/6422701一、引入语法的概念 1、只有寄存器类型的信号才可以在always和initial 语句中进行赋值,类型定义通过reg语句实现。 2、always 语句是一直重复执行,由敏感表(always 语句括号内的变量)中的变量触发。 3、always 语句从0 时刻开始。 4、在begin 和end 之间的语句是顺序执行,属于串行语句。二、总结下几种assign用法:1.作为信号量输出,通过寄存器连续赋值output [3:0]oLED;//internal signalre... 阅读全文
摘要:
转自:http://blog.csdn.net/yangtalent1206/article/details/6422715乒乓操作 “乒乓操作”是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如图1所示。 乒乓操作的处理流程为:输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期,通过“输入数据选择单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,同时将“数据缓冲模块1”缓.. 阅读全文