8位数据锁存器相关知识

  • 格式:doc
  • 大小:29.50 KB
  • 文档页数:2

8位数据锁存器相关知识
一、代码:
module latch_8(qout,data,clk);
output[7:0] qout;
input[7:0] data;
input clk;
reg[7:0] qout;
always @(clk or data)
begin
if(clk) qout<=data;
end
endmodule
二、Verilog语法知识:
1、模块端口定义(声明)
module 模块名(口1,口2,口三,口四……);
2、I/O说明:
输入口:input[信号位宽-1:0]端口名1;
输出口:output[信号位宽-1:0]端口名1;
3、内部信号说明:
reg[width-1:0]R变量1,R变量2……;
wire[width-1:0]W变量2,W变量2……;
4、“always”块:
always@(posedge clk or posedge clr);
begin
if(clr) q<=0;
else if(en) q<=d;
end
(表示只要clk或clr其中若有一个变化时就是执行下面的语句)
过程语句中使用reg型变量,连续赋值语句中使用wire型变量,verilog里一般不声明输出类型的话默认是wire型的。

如果你想在输出处寄存一下:比如使用always时序语句,则必须声明为reg类型。

wire是线网,就是相当于实际中的连接线,你想assign的话就是直接连接,就是用wire型,他的值是随时变化的。

比如你想寄存一下,让信号在时钟边沿才变化就需要reg类型了,在程序中用带时钟的always块来实现即可。

另外需要注意的是reg型变量不一定是寄存器,因为时序逻辑现在也基本上使用always @*这种语言来写,只是必须被声明为reg型。

输出用wire型的其实并不多,具体情况比如:两给信号的与或等简单逻辑。

稍微复杂的即使是组合逻辑也要声明reg型,然后在程序里面用always块来实现组
合逻辑
三、锁存器定义:
一位钟控D触发器只能传送或存储一位二进制数据,而在实际工作中往往是一次传送或存储多位数据。

为此,可以把若干个钟控D触发器的控制端CP连接起来,用一个公共的控制信号来控制,而各个数据端仍然是各自独立地接收数据。

用这种形式构成的一次能传送或存储多位数据的电路称为锁存器。

输出端的状态不会随输入端的状态变化而变化,只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。

通常只有0和1两个值。

典型的逻辑电路是D触发器,其字长(位数)有4位、8位等。

锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。

锁存,就是把信号暂存以维持某种电平状态。

锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个I/O 口既能输出也能输入的问题。