首页 > 其他分享 >HDLBits--Verilog习题记录5

HDLBits--Verilog习题记录5

时间:2023-01-03 15:02:08浏览次数:49  
标签:clk -- state Verilog circuit input output 习题

此题目较难,本文代码也是借鉴别人才完全理解。

题目编号:verification:reading simulations->build a circuit from a simulation waveform->sequential circuit 10

题目描述

This is a sequential circuit. The circuit consists of combinational logic and one bit of memory (i.e., one flip-flop). The output of the flip-flop has been made observable through the output state.

Read the simulation waveforms to determine what the circuit does, then implement it.

 

这是一个时序电路。 该电路由组合逻辑和一位存储器(即一个触发器)组成。 触发器的输出已通过输出状态可见。

阅读仿真波形以确定电路的作用,然后实现它。

 

 

 问题分析

首先明白上升沿或下降沿在Verilog的中真正含义:

上升沿或下降沿的变化取决于0->1 1->0的起点变化。若上升沿clk时有q<=a;即在上升沿的时候,将时刻“0”位置对应的a的状态位非阻塞赋值给q.

还有就是上升沿(下降沿)的状态虽然起点为0(1),真实状态为1(0),但是它并不能直接认为等于1(0).

分析整理题目中的图像,列出表格:

 

 观察波形,state较简单,从state入手分析表格数据:

 

 观察之:

当a==b时,state<=a, 这里的state<=a即上文提到的起点变化,将时刻“0”位置对应的a的状态位非阻塞赋值给state。

其他情况则state保持上一个状态不变。

接着分析q,观察q与state之间的关系:

 

 

 

 观察易得:

state状态为1,q为a,b同或结果

state状态为0,q为a,b异或结果

代码解析:

module top_module (
    input clk,
    input a,
    input b,
    output q,
    output state  );
    
    always @(posedge clk)
        begin
            if(a==b)
                state <= a;
            else
                state <= state;            
        end
    assign  q= state?~a^b:a^b;

endmodule

 

 

 

标签:clk,--,state,Verilog,circuit,input,output,习题
From: https://www.cnblogs.com/yphasaki/p/17022234.html

相关文章

  • js 数组方法
    //定义一个数组varfruits=['香蕉','芒果','橘子','荔枝','樱桃'];//添加元素到数组的末尾,改变原数组varnewLength=fruits.push('香橙');//console.l......
  • react 中使用less
    首先npm install less-loader less --save -dev安装之后终端npm run eject   来暴露webpack的配置文件,如果报错:Removeuntrackedfiles,stashorcommitanych......
  • 大咖说·阿里云瑶池|电商业务与数据库技术发展的双向奔赴
    十四年双十一中,电商业务与内存数据库技术经历了怎样的发展?内存数据库技术是如何支撑电商业务蓬勃发展的?未来电商业务又会与内存数据库技术擦出怎样的火花?本期大咖说,阿里巴......
  • react 日常工作小笔记
    默认配置defaultProps默认配置通过 ​​||​​​ 操作符可以实现,React.js也提供了一种方式 ​​defaultProps​​,可以方便的做到默认配置。classLikeButtonextendsC......
  • react 父子传值
    创建父组件 Demofather.js第一种传值:在子元素标签上 title='待办事项'x={1}字符串可以用""引号传递数字类型用{}大括号传递子组件标签内部可以传递任何数据,react将自动......
  • java8中常用函数式接口Supplier<T>、Consumer<T>、Function<T,R>、Predicate<T>使用示
    场景函数式接口(FunctionalInterface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用......
  • js String对象学习
    //charAt()方法从一个字符串中返回指定的字符。letstr='WinterWang'console.log(str.charAt(1))//i//includes()方法用于判断一个字符串是否包含在另一......
  • js 语句
    //try...catch语句标记要尝试的语句块,并指定一个出现异常时抛出的响应。//try如果出现以下情况,catch就抛出一个异常问题所在try{nonExistentFunction();......
  • JVM面试大总结
    一、汇总JVM是运行在操作系统之上的,它与硬件没有直接的交互。先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享......
  • Linux基础知识(14)- GDB 调试器(二)| 普通断点、单步调试和查看变量
    在“Linux基础知识(13)-GDB调试器(一)|安装配置和基本使用方法”里我们完成了GDB的安装配置,并演示了GDB几个内部命令的基本使用方法,本文将演示普通断点、单步调试和查......