手撕代码总结
数字ic常见手撕代码总结
狗哥天下第一
个人水平有限,有问题欢迎大家一起讨论。
展开
-
牛客网刷题 基础语法 时序逻辑
牛客网刷题原创 2022-06-16 10:45:07 · 922 阅读 · 0 评论 -
牛客网刷题 入门篇 基础语法
牛客网刷题原创 2022-06-14 11:29:33 · 1122 阅读 · 0 评论 -
牛客网刷题 VL23 格雷码计数器
描述实现4bit位宽的格雷码计数器。电路的接口如下图所示。输入描述: input clk, input rst_n输出描述:output reg [3:0] gray_out`timescale 1ns/1nsmodule gray_counter( input clk, input rst_n, output reg [3:0] gray_out);reg [3:0] bin;always@(posed...原创 2022-05-21 23:52:52 · 654 阅读 · 0 评论 -
【转】复位树
看到一篇写的非常好的 关于同步异步复位的知识大佬别的文章写的也很好 有空看一下烓围玮未 - 知乎Reset深入理解------------------------------------------版权声明:本文作者: 烓围玮未微信公众号:芯片设计进阶之路首发于知乎专栏《芯片设计进阶之路》,转发无需授权,请保留这段声明。------------------------------------------首先上思维导图:如果要问“芯片中怎么复位才对?”很转载 2022-05-11 20:00:00 · 1510 阅读 · 0 评论 -
【异步FIFO】格雷码和二进制的相互转换
这个东西一直记得乱乱的 格雷码转二进制只会铺开写 理一下1、基本原理:(1)二进制转格雷码:格雷码最高位是二进制最高位,然后将二进制最高位和次高位做^或者简单点 在二进制前补一个0,从左到右与二进制^(2)格雷码转二进制:二进制最高位是格雷码最高位,然后将二进制最高位和格雷码次高位做^或者简单点 在二进制前补一个0,从左到右与格雷码^2、代码:(1)二进制转格雷码:module bin2gray#( parameter DW = 8 )(原创 2022-05-11 08:07:37 · 1616 阅读 · 1 评论 -
牛客网刷题VL22 同步FIFO
每天一个 保持手感`timescale 1ns/1ns/**********************************RAM************************************/module dual_port_RAM #(parameter DEPTH = 16, parameter WIDTH = 8)( input wclk ,input wenc ,input [$clog2(DEPTH)-1:0] waddr //深度对2取原创 2022-05-09 00:28:25 · 664 阅读 · 0 评论 -
牛客网刷题VL2 含有无关项的序列检测
描述请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。程序的接口信号图如下:程序的功能时序图如下:请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能。 要求代码简洁,功能完整。输入描述:clk:系统时钟信号rst_n:异步复位信号,低电平有效a:单比特信号,待检测的数据输出描述:matc原创 2022-04-19 23:48:27 · 276 阅读 · 0 评论 -
牛客网刷题VL17 任意小数分频
描述请设计一个可以实现任意小数分频的时钟分频器,比如说8.7分频的时钟信号注意rst为低电平复位提示:其实本质上是一个简单的数学问题,即如何使用最小公倍数得到时钟周期的分别频比。设小数为nn,此处以8.7倍分频的时钟周期为例。首先,由于不能在硬件上进行小数的运算(比如2.1个时钟这种是不现实的,也不存在3.3个寄存器),小数分频不能做到分频后每个时钟周期都是源时钟的nn倍,也无法实现占空比为1/2,因此,考虑小数分频,其实现方式应当为53个clkout时钟周期是10个clkin时钟周原创 2022-05-02 23:56:57 · 784 阅读 · 0 评论 -
牛客网刷题VL7 数据累加输出
实现串行输入数据累加输出,输入端输入8bit数据,每当模块接收到4个输入数据后,输出端输出4个接收到数据的累加结果。输入端和输出端与上下游的交互采用valid-ready双向握手机制。要求上下游均能满速传输时,数据传输无气泡,不能由于本模块的设计原因产生额外的性能损失。电路的接口如下图所示。valid_a用来指示数据输入data_in的有效性,valid_b用来指示数据输出data_out的有效性;ready_a用来指示本模块是否准备好接收上游数据,ready_b表示下游是否准备好接收本模块的输出数据;原创 2022-05-02 23:18:16 · 917 阅读 · 0 评论 -
牛客网VL10 整数倍数据位宽转换8to16
描述实现数据位宽转换电路,实现8bit数据输入转换为16bit数据输出。其中,先到的8bit数据应置于输出16bit的高8位。电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时钟信号;rst_n是异步复位信号。接口时序示意图输入描述:input clk, input...原创 2022-05-02 20:34:23 · 704 阅读 · 0 评论 -
牛客网刷题VL9 非整数倍数据位宽转换8to12
描述实现数据位宽转换电路,实现8bit数据输入转换为12bit数据输出。其中,先到的数据应置于输出的高bit位。电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时钟信号;rst_n是异步复位信号。波形示意图如下:输入描述:input clk, input rst_...原创 2022-05-02 18:14:56 · 567 阅读 · 0 评论 -
牛客网刷题VL8 非整数倍数据位宽转换24to128
描述实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时钟信号;rst_n是异步复位信号。接口时序示意图输入描述:inputclk, inputrst_n...原创 2022-05-02 16:48:56 · 180 阅读 · 0 评论 -
牛客网刷题VL20 根据状态转移写状态机-二段式
描述题目描述:如图所示为两种状态机中的一种,请根据状态转移图写出代码,状态转移线上的0/0等表示的意思是过程中data/flag的值。要求:1、 必须使用对应类型的状态机2、 使用二段式描述方法注意rst为低电平复位信号示意图:波形示意图:激励描述如下:输入描述:输入信号 clk rst data类型 wire输出描述:输出信号 flag类型 reg`timescale 1ns/1nsmodule fsm2( input wire clk , input原创 2022-05-01 18:22:03 · 321 阅读 · 0 评论 -
牛客网刷题VL19 根据状态转移写状态机-三段式
描述题目描述: 如图所示为两种状态机中的一种,请根据状态转移图写出代码,状态转移线上的0/0等表示的意思是过程中data/flag的值。要求:1、 必须使用对应类型的状态机2、 使用三段式描述方法,输出判断要求要用到对现态的判断注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk rst data类型 wire输出描述:输出信号 flag类型 reg1、Moore型:转换的输出由当前状态决定,,每个节点(状态)...原创 2022-05-01 18:15:56 · 314 阅读 · 0 评论 -
牛客网刷题VL18 无占空比要去的奇数分频
描述题目描述:请设计一个同时输出5分频的时钟分频器,本题对占空比没有要求注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk_in rst类型 wire输出描述:输出信号 clk_out5类型 wire`timescale 1ns/1nsmodule odd_div ( input wire rst , input ...原创 2022-05-01 18:04:16 · 296 阅读 · 0 评论 -
牛客网刷题VL16 占空比50%的奇数分频
描述设计一个同时输出7分频的时钟分频器,占空比要求为50%注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk_in rst类型 wire输出描述:输出信号 clk_out7类型 wire`timescale 1ns/1nsmodule odo_div_or ( input wire rst , input wire clk_in, output wire clk_out7...原创 2022-05-01 17:14:52 · 266 阅读 · 0 评论 -
牛客网刷题VL15 自动贩售机2
描述题目描述: 设计一个自动贩售机,输入货币有两种,为0.5/1元,饮料价格是1.5/2.5元,要求进行找零,找零只会支付0.5元。ps:1、投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1,在下降沿到0的脉冲信号2、此题忽略出饮料后才能切换饮料的问题注意rst为低电平复位信号示意图:d1 0.5d2 1sel 选择饮料out1 饮料1out2 饮料2out3 零钱波形示意图:输入描述:输入信号 c原创 2022-05-01 16:56:46 · 278 阅读 · 0 评论 -
牛客网刷题VL14 自动贩售机1
描述题目描述:设计一个自动贩售机,输入货币有三种,为0.5/1/2元,饮料价格是1.5元,要求进行找零,找零只会支付0.5元。ps:投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1,在下降沿到0的脉冲信号注意rst为低电平复位信号示意图:d1 0.5元d2 1元d3 2元out1 饮料out2 零钱波形示意图:对应的激励源:`timescale 1ns/1nsmodule seller1( input...原创 2022-05-01 16:29:39 · 458 阅读 · 0 评论 -
牛客网刷题VL13 时钟分频(偶数)
描述请使用D触发器设计一个同时输出2/4/8分频的50%占空比的时钟分频器注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk rst类型 wire输出描述:输出信号clk_out2clk_out4 clk_out8类型 wire`timescale 1ns/1nsmodule even_div ( input wire rst , input wire clk_in, outp...原创 2022-05-01 16:12:45 · 370 阅读 · 0 评论 -
牛客网刷题VL12 状态机-重叠序列检测
描述设计一个状态机,用来检测序列 1011,要求:1、进行重叠检测 即10110111 会被检测通过2次2、寄存器输出,在序列检测完成下一拍输出检测有效注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk rst data类型 wire输出描述:输出信号 flag类型 reg`timescale 1ns/1nsmodule sequence_test1( input wire clk , input...原创 2022-05-01 15:16:13 · 279 阅读 · 0 评论 -
牛客网刷题VL11 状态机-非重叠的序列检测
描述设计一个状态机,用来检测序列 10111,要求:1、进行非重叠检测 即101110111 只会被检测通过一次2、寄存器输出且同步输出结果注意rst为低电平复位信号示意图:波形示意图:输入描述:输入信号 clk rst data类型 wire输出描述:输出信号 flag类型 reg`timescale 1ns/1nsmodule sequence_test1( input wire clk , input wire rst , input wire da原创 2022-05-01 15:06:43 · 326 阅读 · 0 评论 -
牛客网刷题VL6 数据串转并电路
实现串并转换电路,输入端输入单bit数据,每当本模块接收到6个输入数据后,输出端输出拼接后的6bit数据。本模块输入端与上游的采用valid-ready双向握手机制,输出端与下游采用valid-only握手机制。数据拼接时先接收到的数据放到data_b的低位。电路的接口如下图所示。valid_a用来指示数据输入data_a的有效性,valid_b用来指示数据输出data_b的有效性;ready_a用来指示本模块是否准备好接收上游数据,本模块中一直拉高;clk是时钟信号;rst_n是异步复位信号。原创 2022-04-30 16:34:37 · 243 阅读 · 0 评论 -
牛客网刷题VL4 输入序列不连续的序列检测
描述题目描述:请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。模块的接口信号图如下:模块的时序图如下:请使用状态机实现以上功能,画出状态转移图并使用Verilog HDL编写代码实现以上功能,并编写testben...原创 2022-04-29 17:00:24 · 150 阅读 · 0 评论 -
牛客网刷题VL3 不重叠序列检测
描述请编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数据不符合,则不考虑后五位。一直到第七位数据即下一组信号的第一位开始检测。当信号满足该序列,给出指示信号match。当不满足时给出指示信号not_match。模块的接口信号图如下:模块的时序图如下:请使用Verilog HDL实现以上功能,要求使用状态机实现,画出状态转化图。并编写testbench验证模块的功能。输入描述:clk:系统时钟信原创 2022-04-20 00:12:04 · 234 阅读 · 0 评论 -
牛客网刷题VL1 输入序列连续的序列检测
描述请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。模块的接口信号图如下:模块的时序图如下:请使用Verilog HDL实现以上功能,并编写testbench验证模块的功能输入描述:clk:系统时钟信号rst_n:异步复位信号,低电平有效a:单比特信号,待检测的数据输出描述:match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0看了一下评论,我怎么感觉大家的状态图画错了,还是我画错了??他们为啥都s4:原创 2022-04-19 23:42:42 · 513 阅读 · 0 评论 -
异步fifo
一、.filelsit结构二、RTL三、testbench四、仿真结果原创 2022-04-10 18:45:54 · 150 阅读 · 1 评论 -
【转】异步信号的同步处理
1.异步信号的同步处理——慢时钟域到快时钟域https://blog.csdn.net/qq_39485231/article/details/1053810142.异步信号的同步处理——快时钟域到慢时钟域(方法一)https://blog.csdn.net/qq_39485231/article/details/1053783233.异步信号的同步处理——快时钟域到慢时钟域(方法二) https://blog.csdn.net/qq_39485231/article/details/105380869转载 2022-03-29 22:59:37 · 2061 阅读 · 0 评论 -
异步fifo深度计算
转https://www.cnblogs.com/lgy-gdeu/p/12891678.html转载 2022-03-17 11:11:20 · 276 阅读 · 0 评论