随笔分类 -  verilog刷题

摘要:给定一个双端口RAM作为sFIFO的存储空间,所以可以一套端口读,另一套端口写。在sFIFO里维护读写指针各一个,作为DRAM的地址。 判满判空采取扩1bit操作,只有这样才能标识反卷,指示写满。 其余地方根据RAM端口去思考要添加的控制逻辑即可 `timescale 1ns/1ns /****** 阅读全文
posted @ 2023-01-11 22:20 骑猪上树的少年 阅读(76) 评论(0) 推荐(0) 编辑
摘要:把输出段与次态段合并即可 `timescale 1ns/1ns module fsm2( input wire clk , input wire rst , input wire data , output reg flag ); //*************code***********// l 阅读全文
posted @ 2023-01-09 21:40 骑猪上树的少年 阅读(77) 评论(0) 推荐(0) 编辑
摘要:普通三段式,根据状态转移图写即可。 `timescale 1ns/1ns module fsm1( input wire clk , input wire rst , input wire data , output reg flag ); //*************code********** 阅读全文
posted @ 2023-01-09 21:27 骑猪上树的少年 阅读(33) 评论(0) 推荐(0) 编辑
摘要:直接采用0-5计数器,虽然题目说无占空比要求,但其实只有60%占空比才能通过 `timescale 1ns/1ns module odd_div ( input wire rst , input wire clk_in, output wire clk_out5 ); //************* 阅读全文
posted @ 2023-01-09 21:19 骑猪上树的少年 阅读(28) 评论(0) 推荐(0) 编辑
摘要:此题无思路,抄一个题解在这 `timescale 1ns/1ns module div_M_N( input wire clk_in, input wire rst, output reg clk_out ); parameter M_N = 8'd87; parameter c89 = 8'd24 阅读全文
posted @ 2023-01-08 22:56 骑猪上树的少年 阅读(26) 评论(0) 推荐(0) 编辑
摘要:根据题目中波形可以看出,周期为7,高电平和低电平分别持续3.5个周期。继续观察波形,输出信号拉高时和输入时钟下降沿对齐,拉低时和输入时钟上升沿对齐。由于同一个信号不能同时和上升沿和下降沿对齐。因此可以推断其是由两个信号进行组合逻辑得来,其中一个信号与上升沿对齐,另一个信号与下降沿对齐。由于手画的波形 阅读全文
posted @ 2023-01-08 22:18 骑猪上树的少年 阅读(89) 评论(0) 推荐(0) 编辑
摘要:跟上题基本类似,加了个sel选择 `timescale 1ns/1ns module seller2( input wire clk , input wire rst , input wire d1 , input wire d2 , input wire sel , output reg out1 阅读全文
posted @ 2023-01-08 20:23 骑猪上树的少年 阅读(26) 评论(0) 推荐(0) 编辑
摘要:用计数器对输入金额进行计数,大于等于1.5元时出货并找零。 注意在出货的同时也可能投币,并且不支持同时投入三种货币 `timescale 1ns/1ns module seller1( input wire clk , input wire rst , input wire d1 , input w 阅读全文
posted @ 2023-01-08 20:15 骑猪上树的少年 阅读(25) 评论(0) 推荐(0) 编辑
摘要:用计数器来翻转即可 `timescale 1ns/1ns module even_div ( input wire rst , input wire clk_in, output wire clk_out2, output wire clk_out4, output wire clk_out8 ); 阅读全文
posted @ 2023-01-08 18:57 骑猪上树的少年 阅读(29) 评论(0) 推荐(0) 编辑
摘要:注意看波形,flag相对于data的输入延迟两拍。也就是在输入1011后,第一拍进行检测,第二拍拉高flag。 `timescale 1ns/1ns module sequence_test2( input wire clk , input wire rst , input wire data , 阅读全文
posted @ 2023-01-08 16:24 骑猪上树的少年 阅读(38) 评论(0) 推荐(0) 编辑
摘要:可以用状态机也可用移位寄存器 注意题目给rst的命名不带n后缀,但其实还是下降沿触发 `timescale 1ns/1ns module sequence_test1( input wire clk , input wire rst , input wire data , output reg fl 阅读全文
posted @ 2023-01-07 22:47 骑猪上树的少年 阅读(69) 评论(0) 推荐(0) 编辑
摘要:比非整数倍简单 `timescale 1ns/1ns module width_8to16( input clk , input rst_n , input valid_in , input [7:0] data_in , output reg valid_out, output reg [15:0 阅读全文
posted @ 2023-01-07 22:13 骑猪上树的少年 阅读(26) 评论(0) 推荐(0) 编辑
摘要:输入位宽8bit,输出位宽12bit ,也就是说每三个输入数据可以生成两个完整输出。 注意给出的波形是data_lock而不是data_in,这是陷阱。data_lock是data_in打了一拍的结果。 用一个三进制计数器,按拍拼凑数据输出即可。 `timescale 1ns/1ns module 阅读全文
posted @ 2023-01-07 21:57 骑猪上树的少年 阅读(38) 评论(0) 推荐(0) 编辑
摘要:第一阶段:120bit+8bit 第二阶段:16bit+96bit+16bit 第三阶段:8bit+120bit 所以相当于发送了16个24bit数据,作为一个循环。第6、第11两个数据被拆开使用。 根据上述分析可知,缓存采用120bit即可够用。然后建立一个0-15计数器进行计数,对输出条件进行精 阅读全文
posted @ 2023-01-07 21:05 骑猪上树的少年 阅读(58) 评论(0) 推荐(0) 编辑
摘要:代码头ready_a声明为了wire型,所以是暗示用组合逻辑。 对于三个输出信号,分别来看 ready_a:用来和valid_a握手,表示当前模块可以从上游模块接收数据进行累加。所以就要判断在什么情况下,当前模块是可以接收数据的。 当输入数据不足四个时,此时可以继续接收数据,标识信号是valid_b 阅读全文
posted @ 2023-01-05 22:33 骑猪上树的少年 阅读(26) 评论(0) 推荐(0) 编辑
摘要:接收6个bit之后下一拍输出一个6bit宽的data,注意此时如果valid_a拉高,也要接收新进来的数据 这里用移位寄存器计数不太行,不太好让data_b在新数据出来前保持不变,虽然功能一样,但提交不通过 因此只能采用计数器来来方便进行条件判断 `timescale 1ns/1ns module 阅读全文
posted @ 2023-01-05 21:47 骑猪上树的少年 阅读(40) 评论(0) 推荐(0) 编辑
摘要:这个题目有点离谱,题里什么也没给,需要去题解中才知道方波、锯齿波和三角波最大值都为20,方波周期20,锯齿波周期21,三角波周期40 对三种波形具体分析 方波:周期为20且最大值也为20的方波,就是0-19的计数器,在0-9时wave输出0,在10-19wave输出20。 锯齿波:wave即为0-2 阅读全文
posted @ 2023-01-04 22:08 骑猪上树的少年 阅读(96) 评论(0) 推荐(0) 编辑
摘要:跟上一题基本类似,多了个valid判定当前输入数据是否有效 `timescale 1ns/1ns module sequence_detect( input clk, input rst_n, input data, input data_valid, output reg match ); reg 阅读全文
posted @ 2023-01-04 21:28 骑猪上树的少年 阅读(65) 评论(0) 推荐(0) 编辑
摘要:还是移位寄存器,加一个计数器来限制周期 题目要求状态机,懒得画了,移位寄存器可根据时序图直接写 `timescale 1ns/1ns module sequence_detect( input clk, input rst_n, input data, output reg match, outpu 阅读全文
posted @ 2023-01-03 23:04 骑猪上树的少年 阅读(81) 评论(0) 推荐(0) 编辑
摘要:跟上一题类似 这里有人可能会用到casex,最好别用,有的工具可能不支持 `timescale 1ns/1ns module sequence_detect( input clk, input rst_n, input a, output reg match ); reg [8:0] temp ; 阅读全文
posted @ 2023-01-03 22:14 骑猪上树的少年 阅读(22) 评论(0) 推荐(0) 编辑

回到顶部
点击右上角即可分享
微信分享提示