maple~~
maple~~
全部文章
分类
题解(15)
归档
标签
去牛客网
登录
/
注册
maple~~的博客
全部文章
(共16篇)
题解 | #流水线乘法器#
解题思路 题目中是4bit*4bit,相乘的基本原理如下: 流水线的思路是:temp的值用组合逻辑直接产生。然后用到三个加法器:第1个cycle:分别计算adder01 <= temp0 + temp1和adder23 <= temp2 + temp3;第2个cycle:计算结果mul...
2022-09-05
1
448
题解 | #自动贩售机2#
解题思路 按照常规三段式,即可解题。 状态转移图 常规三段式,但值得注意的是,有两种饮料输出,相当于可以看成有两个状态机,所以画了两个状态转移图,分别是1.5元的和2,5元的,分别如下: 注:图中输入的钱用两位表示,高位表示1元,低位表示0.5元,一次只能投一个硬币;输出两位,高位表示出零钱0.5元...
Verilog
2022-04-27
7
907
题解 | #数据累加输出#
题意梳理 两组握手信号,分别是与上游的valid_a和ready_a、与下游的valid_b和ready_b; 需要说明的是每组的valid和ready之间没有先后关系,谁先谁后都行; 输出信号有三个: ①ready_a:为高表示我现在没啥事,告诉上游我准备好了,你可以发数据了; ②valid_b:...
Verilog
2022-04-27
28
1275
题解 | #根据状态转移图实现时序电路#
解题思路 此题按照状态转移图描写状态机就可以,但注意一个细节: 我刚开始使用的时序逻辑输出,因为一般三段式都是时序逻辑输出,代码如下: always@(posedge clk or negedge rst_n) begin if (~rst_n) Y ...
Verilog
2022-04-27
10
900
题解 | #自动贩售机1#
解题思路 经典三段式,没啥花里胡哨的。 但需要注意几个细节: ①中间段采用的组合逻辑实现,可以有一些冗余状态,如ONE_HALF、TWO、TWO_HALF、THREE这些,是为了输出的时候书写方便。当然简化为只有3个状态(IDLE、HALF、ONE)也是完全可以的,只是输出要麻烦一点,可以参考我的另...
Verilog
2022-04-27
10
690
题解 | #时钟切换#
解题思路 题目中说了是两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频,属于相关时钟,避免切换时毛刺出现,只需要在组合逻辑的基础上添加下降沿触发的DFF。原理图如下: 那么为什么要使用下降沿触发的DFF呢? 原因是这样,所谓去除毛刺,就是要避免毛刺的产生,那么得先明白毛刺是如何...
Verilog
2022-04-10
61
4384
题解 | #使用握手信号实现跨时钟域数据传输#
解题思路 发送方 ①处理收到的响应信号data_ack,进行打2拍处理; ②所发送数据data在收到响应后重新生成,即+1; ③发送请求信号data_req,会用到计数器来记时data_req的时间间隔。 接收方 ①处理收到的请求信号data_req,进行打2拍处理; ②收到了请求后,两件事同时进行...
Verilog
2022-04-08
14
626
题解 | #自动售卖机#
解题思路 采用经典三段式状态机描述,只不过有两个输出,我在此采用了2个always语句。 我只分了两个状态,即饮料机空闲,和饮料机输出饮料B但只投了5块钱,所以输出语句看起来会麻烦一点。 代码实现 `timescale 1ns/1ns module sale( input ...
Verilog
2022-04-08
15
2164
题解 | #任意奇数倍时钟分频#
注意细节 $clog2(dividor)是求出dividor转换为二进制需要占的位数; 在周期中间跳转时,可以不用减1再除2,直接右移1位舍掉末尾的1就好啦。 代码实现 `timescale 1ns/1ns module clk_divider #(parameter dividor = ...
2022-04-08
0
417
题解 | #串行进位加法器#
根据一位全加器,从低位逐位相加,有进位就往高位递,像极了小时候学的竖式加法运算。 `timescale 1ns/1ns module add_4( input [3:0] A , input [3:0] B , input ...
Verilog
2022-04-08
6
563
首页
上一页
1
2
下一页
末页