HDLBits刷题Day14,3.2.2.5 Counter 1-12 - 3.2.2.6 Counter 1000

这篇具有很好参考价值的文章主要介绍了HDLBits刷题Day14,3.2.2.5 Counter 1-12 - 3.2.2.6 Counter 1000。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3.2.2.5 Counter 1-12

本题参考HDLBits:在线学习 Verilog (二十一 · Problem 100 - 104) - 知乎

问题描述

设计一个具有以下输入和输出的 1-12 计数器:

  • 复位同步高电平有效复位,强制计数器为 1
  • 启用设置为高以使计数器运行
  • clk上升沿触发时钟输入
  • Q[3:0]计数器的输出
  • c_enable, c_load, c_d[3:0]控制信号进入提供的 4 位计数器,它们的目的是允许检查这些信号的正确性。

您有以下可用组件:

  • 下面的 4 位二进制计数器 ( count4 ),它具有启用和同步并行加载输入(加载的优先级高于启用)。count4模块提供给您。在你的电路中实例化它。
  • 逻辑门

    module count4( input clk, input enable, input load, input [3:0] d, output reg [3:0] Q );

c_enable 、c_load和c_d输出是分别进入内部计数器的enable、load和d输入的信号。它们的目的是允许检查这些信号的正确性。

分析:本题相当于用c_enale、c_load和c_d[3:0]三个控制信号来控制题目中给我们提供的4-bit计数器,使得该计数器的计数范围改变为1~12。

题目提供给我们4-bit计数器

  1. 有enable信号、复位和置位的计数器,将该计数器例化至我们的代码中。
  2. 再用一些其他的逻辑门来完成本题

设计一个具有以下输入和输出的 1-12 计数器: 复位同步高电平有效复位,强制计数器,HDLBits刷题,fpga开发,算法,硬件工程

代码:

module top_module (
    input clk,
    input reset,
    input enable,
    output [3:0] Q,
    output c_enable,
    output c_load,
    output [3:0] c_d
); 
	//使能端
    assign c_enable=enable;
    //复位信号
    assign c_load=reset||(Q==12&&enable);
    //置位信号
    assign c_d=1;    
    //count4 the_counter (clk, c_enable, c_load, c_d /*, ... */ );
    count4 the_counter (clk, c_enable, c_load, c_d, Q);
endmodule
3.2.2.6 Counter 1000

 问题描述

从 1000 Hz 时钟导出一个称为OneHertz的 1 Hz 信号,该信号可用于驱动一组小时/分钟/秒计数器的启用信号,以创建数字挂钟。由于我们希望时钟每秒计数一次,因此OneHertz信号必须每秒准确地断言一个周期。使用模 10 (BCD) 计数器和尽可能少的其他门构建分频器。还要从您使用的每个 BCD 计数器输出使能信号(c_enable[0] 为最快的计数器,c_enable[2] 为最慢的)。

为您提供以下 BCD 计数器。Enable必须为高电平才能使计数器运行。复位是同步的并设置为高以强制计数器为零。电路中的所有计数器必须直接使用相同的 1000 Hz 信号。

分析:

clk是每秒一千次,OneHertz是每秒一次,题目的意思就是用三个十进制计数器把1000hz“减速”为1hz。counter0每计数到9的时候,才允许counter1计数1次;当counter0计数到9且counter1计数到9,相当于计数到99,这时候允许counter2计数1次,以此类推。 

设计一个具有以下输入和输出的 1-12 计数器: 复位同步高电平有效复位,强制计数器,HDLBits刷题,fpga开发,算法,硬件工程

 代码:文章来源地址https://www.toymoban.com/news/detail-840777.html

module top_module (
    input clk,
    input reset,
    output OneHertz,
    output [2:0] c_enable
); //
	// 我们定义个位、十位、百位
    wire [3:0] one,ten,hundred;
    // 个位的使能c_enable[0]恒有效
    // 十位的使能c_enable[1]只有在个位为9时才有效
    // 百位的使能c_enable[2]只有在个为为9十位为9时才有效
    // 类比小学数学,使能有效姑且理解为进位
    assign c_enable={one==4'd9&&ten==4'd9, one==4'd9, 1'b1};
    // 计数到999时,OneHertz=1
    assign OneHertz= one==4'd9&&ten==4'd9&&hundred==4'd9;
    // 例化提供的模十计数器
    bcdcount counter0 (clk, reset, c_enable[0], one);/*, ... */
    bcdcount counter1 (clk, reset, c_enable[1], ten);/*, ... */
    bcdcount counter2 (clk, reset, c_enable[2], hundred);
endmodule

到了这里,关于HDLBits刷题Day14,3.2.2.5 Counter 1-12 - 3.2.2.6 Counter 1000的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题Day14 二叉树的前序、中序、后序遍历(递归、迭代、统一迭代方法)

    二叉树的定义 递归 迭代 普通的遍历(包括前序,中序和后续)迭代方法都需要借助到栈 统一迭代 统一迭代使用标记法,在栈中要处理的结点压入空指针 递归 迭代 中序遍历的迭代方法稍微特殊一点 中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问

    2024年02月15日
    浏览(37)
  • HDLbits 刷题 -- Alwaysblock2

    学习: For hardware synthesis, there are two types of always blocks that are relevant: Combinational: always @(*) Clocked: always @(posedge clk) Clocked always blocks create a blob of combinational logic just like combinational always blocks, but also creates a set of flip-flops (or \\\"registers\\\") at the output of the blob of combinational logic. Instea

    2024年04月09日
    浏览(31)
  • 怎样设计一个具有良好容灾性的系统架构?

    当你的系统出现故障时,容灾性设计可以让你的系统保持高效运转,避免数据丢失和业务中断。那么,怎样设计一个具有良好容灾性的系统架构呢?让我来教你几招,不过在开始之前,先来了解一下今天的小广告:如果你需要可靠的服务器托管服务,推荐Lcayun(莱卡云)服务

    2024年01月25日
    浏览(37)
  • Verilog刷题[hdlbits] :Module add

    You are given a module add16 that performs a 16-bit addition. Instantiate two of them to create a 32-bit adder. One add16 module computes the lower 16 bits of the addition result, while the second add16 module computes the upper 16 bits of the result, after receiving the carry-out from the first adder. Your 32-bit adder does not need to handle carry-in (assu

    2024年02月06日
    浏览(33)
  • 算法刷题Day 59 下一个更大元素II+接雨水

    其实也可以不扩充nums,而是在遍历的过程中模拟走了两边nums 三种方法都写了一遍 暴力方法 逐列计算 找到当前位置,左边最高的柱子的索引和右边最高的柱子的索引,两者中相对小的那个,将去当前位置的高度,就是水柱的高度,而宽度是1 超时了 双指针 提前记录好左边最

    2024年02月14日
    浏览(31)
  • 【HDLBits 刷题 5】Circuits(1)Combinational Logic

    目录 写在前面 Combinational Logic Basic Gates Wire GND NOR Another gate Two gates More logic gates 7420 chips Truth table Two bit equality Simple circuit A Simple circuit B Combine circuits A and B Ring or vibrate Thermostat 3 bit population count Gates and vectors Even longer vectors Multiplexers 2 to 1 mux 2 to 1 bus mux 9 to 1 mux 256 to 1 mux 256 t

    2024年02月02日
    浏览(26)
  • 【HDLBits 刷题 1】Verilog Language(1)Basics 部分

    目录   写在前面 Basics Simple wire  Four wires  Inverter  AND gate  NOR gate  Declaring wires  7485 chip HDLBits 作为 Verilog 的刷题网站,非常适合初学者拿来练习,不仅可以学到基础的语法,还可以让自己写出的代码更直观,直接映射到电路中,因此在这段时间每周会抽出一点时间来把这个

    2024年02月10日
    浏览(31)
  • 【HDLBits 刷题 2】Verilog Language(2)Vectors 部分

    目录 写在前面 Vectors Vector0 Vector1 Vector2 Vectorgates Gates4 Vector3 Vectorr  Vector4 Vector5 来到了 Verilog 语法的矢量部分,这部分仍然比较简单,所以只给出题目、代码和仿真结果,其他不多赘述。 构建一个具有一个3位输入的电路,然后输出相同的矢量,并将其拆分为三个单独的1位输

    2024年02月07日
    浏览(28)
  • Exams/ece241 2014 q7a(Counter1-12)

    Design a 1-12 counter with the following inputs and outputs: Reset Synchronous active-high reset that forces the counter to 1 Enable Set high for the counter to run Clk Positive edge-triggered clock input Q[3:0] The output of the counter c_enable, c_load, c_d[3:0] Control signals going to the provided 4-bit counter, so correct operation can be verified. You

    2024年02月09日
    浏览(30)
  • 研磨设计模式day14模板方法模式

    目录 场景 原有逻辑 有何问题 解决方案 解决思路  代码实现  重写示例 模板方法的优缺点 模板方法的本质  何时选用 场景 现在模拟一个场景,两个人要登录一个系统,一个是管理员一个是用户,这两个不同身份的登录是由后端对应的两个接口实现的,用户登录只需验证库

    2024年02月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包