免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11507 | 回复: 13
打印 上一主题 下一主题

锁存器与触发器的verilog描述 [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-24 15:42 |只看该作者 |倒序浏览
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
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2008-07-24 15:49 |只看该作者
/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 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-07-24 16:08 |只看该作者
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 编辑 ]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2008-07-24 16:58 |只看该作者
边沿触发式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
复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2008-07-24 17:07 |只看该作者
暂时不想写了,晚上有时间再写写带有PRN,CLRN的DFF
以及其电路构造;
一般来说,我都会写两份,上面一份偏向于行为描述,下面偏向于电路的构造。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2008-07-25 11:18 |只看该作者
带设置和清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  
复制代码

论坛徽章:
0
7 [报告]
发表于 2008-07-26 09:03 |只看该作者
曲高啊,还是要支持。
verilog语法结构是有点象Pascal吗?

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

论坛徽章:
0
8 [报告]
发表于 2008-07-26 14:12 |只看该作者
弄一个专辑吧,看着方便。

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

论坛徽章:
0
9 [报告]
发表于 2008-07-26 15:48 |只看该作者

回复 #8 prolj 的帖子

收到,谢谢指点。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2008-09-26 15:06 |只看该作者
原帖由 nmap 于 2008-7-26 09:03 发表
曲高啊,还是要支持。
verilog语法结构是有点象Pascal吗?

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

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP