锁存器与触发器的verilog描述

发布于 2022-09-20 09:34:38 字数 1493 浏览 12 评论 0

S-R锁存器

  1. module SRlatch(S,R,Q,QN);
  2. input R,S;
  3. output Q,QN;
  4. reg Q,QN;
  5. always@(R or S)
  6. begin
  7.     case ({S,R})
  8.         2'b01:
  9.            begin
  10.              Q=0;
  11.              QN=1;
  12.            end
  13.         2'b10:
  14.         begin
  15.             Q=1;
  16.             QN=0;
  17.         end
  18.         2'b11:
  19.         begin
  20.             Q=0;
  21.             QN=0;
  22.        end
  23.            endcase
  24. end
  25. endmodule

复制代码
直接用组合电路(带反馈):

  1. module SRlatch(S,R,Q,QN);
  2. input R,S;
  3. output Q,QN;
  4. assign Q=~(R|QN);
  5. assign QN=~(S|Q);
  6. endmodule

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

一个人练习一个人 2022-09-27 09:34:38

/S-/R锁存器

  1. module nSnRlatch(S_L,R_L,Q,QN);
  2. input R_L,S_L;
  3. output Q,QN;
  4. reg Q,QN;
  5. always@(S_L  or R_L)
  6. begin
  7.     case ({S_L,R_L})
  8.         2'b00:
  9.            begin
  10.              Q=1;
  11.              QN=1;
  12.            end
  13.         2'b01:
  14.         begin
  15.             Q=1;
  16.             QN=0;
  17.         end
  18.         2'b10:
  19.         begin
  20.             Q=0;
  21.             QN=1;
  22.        end
  23.     endcase
  24. end
  25. endmodule

复制代码
直接用组合电路描述(反馈):

  1. module nSnRlatch(S_L,R_L,Q,QN);
  2. input R_L,S_L;
  3. output Q,QN;
  4. assign Q=(~S_L)|(~QN);
  5. assign QN=(~R_L)|(~Q);
  6. endmodule

复制代码
[ 本帖最后由 cjaizss 于 2008-7-24 16:58 编辑 ]

む无字情书 2022-09-27 09:34:38

D锁存器:

  1. module Dlatch(Q,QN,D,C);
  2. input D,C;
  3. output Q,QN;
  4. reg Q;
  5. always@(C)
  6. begin
  7.     if(C)
  8.     begin
  9.        assign Q=D;
  10.        assign QN=~D;
  11.     end
  12.     else
  13.     begin
  14.        deassign Q;
  15.        deassign QN;
  16.     end
  17. end
  18. endmodule

复制代码
要组合搭:

  1. module Dlatch(Q,QN,D,C);
  2. input D,C;
  3. output Q,QN;
  4. wire S_L,R_L;
  5. nSnRlatch sr1(S_L,R_L,Q,QN);
  6. assign S_L=~(D&C);
  7. assign R_L=~((~D)&C);
  8. endmodule  

复制代码
[ 本帖最后由 cjaizss 于 2008-7-24 16:20 编辑 ]

鲸落 2022-09-27 09:34:38

边沿触发式D触发器:

  1. module PETDFF(Q,QN,D,clk);
  2. output Q,QN;
  3. input D,clk;
  4. reg Q,QN;
  5. always@(posedge clk)
  6. begin
  7.     Q<=D;
  8.     QN<=~D;
  9. end
  10. endmodule  

复制代码
组合描述:

  1. module PETDFF(Q,QN,D,clk);
  2. output Q,QN;
  3. input D,clk;
  4. wire QN1,QM,C1,C2;
  5. assign C1=~clk;
  6. buf tmp1(C2,clk);
  7. Dlatch dlatch1(QM,QN1,D,C1);
  8. Dlatch dlatch2(Q,QN,QM,C2);
  9. endmodule

复制代码

╰沐子 2022-09-27 09:34:38

暂时不想写了,晚上有时间再写写带有PRN,CLRN的DFF
以及其电路构造;
一般来说,我都会写两份,上面一份偏向于行为描述,下面偏向于电路的构造。

非要怀念 2022-09-27 09:34:38

带设置和清0的正边沿触发D触发器

  1. module dff(clk,D,nPR,nCLR,Q,QN);
  2. input clk,D,nPR,nCLR;
  3. output Q,QN;
  4. reg Q,QN;
  5. always @(posedge clk or negedge nPR or negedge nCLR)
  6. begin
  7.     case({nPR,nCLR})
  8.         2'b11:
  9.         begin
  10.            Q<=D;
  11.            QN<=~D;
  12.        end
  13.         2'b10:
  14.         begin
  15.            Q<=0;
  16.            QN<=1;
  17.         end
  18.         2'b01:
  19.         begin
  20.            Q<=1;
  21.            QN<=0;
  22.        end
  23.     endcase
  24. end
  25. endmodule         

复制代码

以下为组合电路:

  1. module dff(clk,D,nPR,nCLR,Q,QN);
  2. input clk,D,nPR,nCLR;
  3. output Q,QN;
  4. wire s1,s2,s3,s4;
  5. assign s1=~(nCLR&D&s3);
  6. assign s2=~(nCLR&clk&s4);
  7. assign s3=(~s1)|(~clk)|(~s2);
  8. assign s4=(~nPR)|(~s1)|(~s2);
  9. assign Q=(~QN)|(~s2)|(~nPR);
  10. assign QN=~(Q&s3&nCLR);
  11. endmodule  

复制代码

↙厌世 2022-09-27 09:34:38

曲高啊,还是要支持。
verilog语法结构是有点象Pascal吗?

还有请教cjaizss斑竹,学硬件系统,可以从
组装无线电收音机套件开始吗?

远昼 2022-09-27 09:34:38

弄一个专辑吧,看着方便。

to ls:Verilog是类C的,一开始也是改的C编译器,直接学习Verilog就可以进行逻辑设计。

北座城市 2022-09-27 09:34:38

收到,谢谢指点。

ま昔日黯然 2022-09-27 09:34:38

原帖由 nmap 于 2008-7-26 09:03 发表
曲高啊,还是要支持。
verilog语法结构是有点象Pascal吗?

还有请教cjaizss斑竹,学硬件系统,可以从
组装无线电收音机套件开始吗?

这个完全不需要,现在的硬件系统一般以数字部分为主,学习者需要理解数字计算机的硬件系统。
以及数字电路、CPU的一些原理方面的东西。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文