Leonico
Leonico
全部文章
题解
数字电路设计随记(1)
归档
标签
去牛客网
登录
/
注册
Leonico的博客
做IC的闲鱼
全部文章
/ 题解
(共50篇)
题解 | #非整数倍数据位宽转换8to12#
来自专栏
简析 输入:valid_in , data_in[7:0] 输出:valid_out, data_out[11:0] 注意,题目给出的波形图是data_lock不是data_in。但可以大概推断出输入输出的关系。 首先设置数据暂存器data_lock,每次都存入有效的输入数据。 reg [7:0]...
2022-04-04
16
814
题解 | #整数倍数据位宽转换8to16#
来自专栏
简析 输入:valid_in , data_in[7:0] 输出:valid_out, data_out[15:0] 将两个有效的输入数据拼接并输出。 由于只用处理两个有效数据,所以将第一个有效数据暂存,然后第二个有效数据输入后,拼接起来就可以得到输出。 首先设置数据暂存器data_r,暂存第...
2022-04-04
8
502
题解 | #数据累加输出#
来自专栏
简析 输入:data_in[7:0] , valid_a, ready_b 输出:data_out[9:0], ready_a, valid_b 数据端口:输入数据data_in,输出数据data_out; 上游握手信号:上游输入的数据是否有效valid_a,向上游发送本模块是否准备好接受read...
2022-04-04
1
564
题解 | #数据串转并电路#
简析 输入信号:valid_a, data_a 输出信号:ready_a,valid_b,data_b valid_a信号拉高时,输入有效,并且每接收到6个有效数据才更新一次输出。所以首先设置一个数据移位寄存器data_r。从题目给的波形图可以看出,移位寄存器应是右移的。 reg [5:0] dat...
2022-04-03
11
1590
题解 | #信号发生器#
来自专栏
简析 这道题比较难,想了很久才写出满意的程序。首先,方波的周期是20,锯齿波的周期是21,三角波的周期是40,且wave的最大值是20。题目没有明确告知,我是从其他人的题解中知道的。下面分别分析一下三种波形如何产生。 方波 方波模式需注意wave在什么时候翻转。设置一个计数器cnt,计数范围是0-1...
2022-04-02
58
3835
题解 | #输入序列不连续的序列检测#
本质上和输入序列连续的序列检测,当data_valid信号有效时,移位寄存器data_r再进行移位即可。 本题的题目要求和Testbench有不相符的地方。题目中要求match在序列匹配的下一个周期拉高,如上图。而Testbench则是在序列匹配的同周期拉高。下面的代码中,被注释掉的部分是符合题目...
2022-03-30
23
2552
题解 | #不重叠序列检测#
来自专栏
2022-4-1:才注意到题目要求使用状态机完成,所以补充了状态机代码。此外,之前的移位寄存器方法我也误以为是右移的,也做了修正。并且Testbench中match和not_match信号好像比题目要求的提前了一个周期。不过之前错误的方法居然通过了测试。希望牛客能提供更完整的测试波形供大家调试。 状...
2022-03-30
40
4281
题解 | #含有无关项的序列检测#
思路同输入序列连续的序列检测,既可以用移位寄存器,又可以用状态机。 代码 移位寄存器 module sequence_detect( input clk, input rst_n, input a, output reg match ); reg [8:0] a_r; ...
2022-03-30
10
1281
题解 | #输入序列连续的序列检测#
来自专栏
简析 序列检测问题可以用移位寄存器,也可以使用状态机。 移位寄存器方法比较简单。设置一个和序列等长的寄存器,每个时钟都将输入移入寄存器的最低位,并判断寄存器中的值是否与序列相同。 状态机方法较为麻烦些。设置若干个状态(一般是序列长度+1个状态),然后每个时钟根据新的输入以及当前状态判断下一状态。 代...
2022-03-29
28
2070
题解 | #根据状态转移图实现时序电路#
来自专栏
这是一个比较标准的状态机题目。 module seq_circuit( input C , input clk , input rst_n, output wire ...
2022-03-29
3
1043
首页
上一页
1
2
3
4
5
下一页
末页