设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 187|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 实现 74HC191/74LS191 四位可预置值的可逆二进制加减计数器

[复制链接]
发表于 2023-4-18 19:26:28 | 显示全部楼层 |阅读模式
main.png
  1. module hc191(                                //四位可预置值的可逆二进制加减计数器 VCC:Pin16 GND:Pin8
  2.         input [3:0] D,                        //[4位宽] 计数输入 Pin:9,10,1,15
  3.         input CLK,                                //上升沿计数 Pin14
  4.         input E,                                        //低电平使能CLK并允许计数 高电平不计数 Pin4
  5.         input DU,                                //低电平:加计数 高电平:减计数 Pin5
  6.         input PL,                                //低电平装入计数(Q=D透明锁存) 高电平锁存并允许计数 Pin11
  7.         output reg [3:0] Q,        //[4位宽] 计数输出 Pin:7,6,2,3
  8.         output RCO,                                //Pin13 CLK高电平或E高电平或TC低电平置1,否则清0 (级联接下一片CLK)
  9.         output TC                                //Pin12 加计数Q全1或减计数Q全0置1,否则清0
  10. );
  11. initial Q = 4'd0;
  12. assign TC = DU ? !Q : &Q;
  13. assign RCO = |{!TC,CLK,E};
  14. wire [3:0] R = PL ? 4'd0 : ~D;
  15. wire [3:0] S = PL ? 4'd0 : D;
  16. wire [3:0] T = Q + {{3{DU}},1'b1};
  17. genvar i;
  18. generate
  19.         for(i=0;i<4;i=i+1)begin:gen
  20.                 always @(posedge R[i] or posedge S[i] or posedge CLK) begin
  21.                         if(R[i] || S[i]) begin
  22.                                 case({R[i],S[i]})
  23.                                         2'b01:Q[i] <= 1'b1;
  24.                                         2'b10:Q[i] <= 1'b0;
  25.                                         default:Q[i] <= 1'bx;
  26.                                 endcase
  27.                         end else if(CLK && !E) begin
  28.                                 Q[i] <= T[i];
  29.                         end
  30.                 end
  31.         end
  32. endgenerate
  33. endmodule

  34. module main(
  35.         input clk,                        //50Mhz输入 Pin17
  36.         output out                        //3.125Mhz输出(16分频) Pin40
  37. );
  38. wire [3:0] Q;
  39. hc191 U1(
  40.         .D(4'd0),
  41.         .CLK(clk),
  42.         .E(1'b0),
  43.         .DU(1'b0),
  44.         .PL(1'b1),
  45.         .Q(Q),
  46.         .RCO(),
  47.         .TC()
  48. );
  49. assign out = Q[3];
  50. endmodule
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-25 23:53 , Processed in 0.776044 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表