Exams/ece241 2013 q4答案解析
时间:2022-07-22
本文章向大家介绍Exams/ece241 2013 q4答案解析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:https://hdlbits.01xz.net/wiki/Exams/ece241_2013_q4
题目的意思就是输入s表示着当前水位的状态,s1为1就表示水位在s1之上,这时就需要打开两个阀门fr1,fr2,然后如果之前的水阀数量比当前的多,那么dfr就是1,如果比现在的少,那dfr么就是0. 如果水位保持不变呢,dfr也保持不变。由于最低状态只能比当前得多,所以dfr一直都会是1,就算是水位不变,也要保持dfr1是1;同理最高水位一定是比之前的高,所以dfr一直是0.
module top_module (
input clk,
input reset,
input [3:1] s,
output reg fr3,
output reg fr2,
output reg fr1,
output reg dfr
);
//这六种状态分别是什么呢,A表示的是水位低于S1,D表示水位高于S3
//B1表示的是高于S1但是低于S2,同时,dfr是0,相对于B2是用来表示从C状态转换过来的,dfr是1的状态。C1,C2同理
parameter A = 0, B1=1,B2=2,C1=3,C2=4,D=5;
reg[2:0] state, next;
//注意只有这里的always是用的clk,其他的都是星号。
always@(posedge clk)begin
if(reset)
state <= A;
else
state <=next;
end
//这里就是状态转换,注意B1,B2,C1,C2的区别
always@(*)begin
case(state)
A:next <= s[1]?B1:A;
B1:next <= s[2]?C1:(s[1]?B1:A);
B2:next <= s[2]?C1:(s[1]?B2:A);
C1:next <= s[3]?D:(s[2]?C1:B2);
C2:next <= s[3]?D:(s[2]?C2:B2);
D:next <= s[3]?D:C2;
default:next <= A;
endcase
end
//这里是输出结果,根据不同的状态开不同的阀门和赋值不同的dfr
always@(*)begin
case(state)
A: {fr3,fr2,fr1,dfr} = 4'b1111;
B1: {fr3,fr2,fr1,dfr} = 4'b0110;
B2: {fr3,fr2,fr1,dfr} = 4'b0111;
C1: {fr3,fr2,fr1,dfr} = 4'b0010;
C2: {fr3,fr2,fr1,dfr} = 4'b0011;
D: {fr3,fr2,fr1,dfr} = 4'b0000;
default: {fr3, fr2, fr1, dfr} = 'x;
endcase
end
endmodule
- 【Python环境】Python面试题汇总(一)
- 如何优雅的编写Dockerfile
- 【干货】找不到适合自己的编程书?我自己动手写了一个热门编程书搜索网站(附PDF书单)
- Docker监控方案(TIG)的研究与实践之Influxdb
- Docker监控方案(TIG)的研究与实践之Telegraf
- 【自然框架】之通用权限(九):权限的验证
- 【自然框架】之通用权限(八):权限到字段(列表、表单、查询)
- 【自然框架】之通用权限(七):权限到按钮
- 通过预测API窃取机器学习模型
- 【自然框架】 页面里的父类——把共用的东东都交给父类,让子类专注于其他。
- 血淋林的例子告诉你,为什么防“上传漏洞”要用白名单
- 关于Int自增字段和GUID字段的性能测试。只有测试,没有分析,呵呵
- 【自然框架】 之 资源角色——列表过滤方案(思路篇)
- UVM(七)之phase及objection
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP删除数组中特定元素的两种方法
- 如何写出让同事无法维护的代码?
- 浅谈php://filter的妙用
- PHP中“=>
- CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
- PHP实现获取毫秒时间戳的方法【使用microtime()函数】
- 利用PHP如何统计Nginx日志的User Agent数据
- PHP树形结构tree类用法示例
- PHP PDOStatement::errorCode讲解
- Laravel框架搜索分页功能示例
- 解决Keras TensorFlow 混编中 trainable=False设置无效问题
- 浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
- 使用 prometheus python 库编写自定义指标的方法(完整代码)
- PHP PDOStatement::fetchColumn讲解
- PHP PDOStatement::bindValue讲解