当前位置:网站首页>【牛客网刷题系列 之 Verilog进阶挑战】~ 多bit MUX同步器
【牛客网刷题系列 之 Verilog进阶挑战】~ 多bit MUX同步器
2022-07-07 17:06:00 【AI很不错呦】
目录:
0. 前言
有几天没更新牛客刷题的博客了,最近有事在忙,只能尽量做到每天一更了!!!一边刷题,一边做点小demo,不断学习。
今天这个题主要是一个跨时钟域的多位数据传输,也是比较常见的一种题型,挺有用的,关于跨时钟域怎么处理,可以移步到我之前写的一篇博客,传送门
1. VL48 多bit MUX同步器
1.1 题目描述
在data_en为高期间,data_in将保持不变,data_en为高至少保持3个B时钟周期。表明,当data_en为高时,可将数据进行同步。
本题中data_in端数据变化频率很低,相邻两个数据间的变化,至少间隔10个B时钟周期。
1.1.1 信号示意图
1.1.2 波形示意图
无
1.1.3 输入描述
input clk_a ,
input clk_b ,
input arstn ,
input brstn ,
input [3:0] data_in ,
input data_en
1.1.4 输出描述
output reg [3:0] dataout
1.2 解题思路
我们根据题意大概框架如下:
其中,红色框框表示的是数据暂存 以及 使能暂存;蓝色框框表示跨时钟域处理,采用打两拍的形完成;绿色框框表示MUX选择以及暂存的结果输出。
1.3 代码实现
`timescale 1ns/1ns
module mux(
input clk_a ,
input clk_b ,
input arstn ,
input brstn ,
input [3:0] data_in ,
input data_en ,
output reg [3:0] dataout
);
//暂存data_en
reg data_en_reg;
always @ (posedge clk_a or negedge arstn) begin
if(!arstn) begin
data_en_reg <= 1'b0;
end
else begin
data_en_reg <= data_en;
end
end
//data_in
reg [3:0] data_in_reg;
always @ (posedge clk_a or negedge arstn) begin
if(!arstn) begin
data_in_reg <= 4'd0;
end
else begin
data_in_reg <= data_in;
end
end
//打两拍,跨时钟域过渡
reg data_en_ab1, data_en_ab2;
always @ (posedge clk_b or negedge brstn) begin
if(!brstn) begin
data_en_ab1 <= 1'b0;
data_en_ab2 <= 1'b0;
end
else begin
data_en_ab1 <= data_en_reg;
data_en_ab2 <= data_en_ab1;
end
end
// MUX
always @ (posedge clk_b or negedge brstn) begin
if(!brstn) begin
dataout <= 4'd0;
end
else begin
dataout <= data_en_ab2 ? data_in_reg : dataout;
end
end
endmodule
1.4 测试文件
待更新。。。
1.5 仿真波形
待更新。。。
声明
本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!
本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!
如果觉得对你有用的话,记得收藏+评论!!!
边栏推荐
- RISCV64
- [unity shader] insert pass to realize the X-ray perspective effect of model occlusion
- Basic operation of chain binary tree (implemented in C language)
- PTA 1102 teaching Super Champion volume
- 50亿,福建又诞生一只母基金
- Reinforcement learning - learning notes 8 | Q-learning
- Draw squares with Obama (Lua)
- IP netns command (memo)
- 前首富,沉迷种田
- Learn open62541 -- [67] add custom enum and display name
猜你喜欢
面试唯品会实习测试岗、抖音实习测试岗【真实投稿】
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
2022.07.05
cmd命令进入MySQL时报服务名或者命令错误(傻瓜式教学)
Redis cluster and expansion
App capture of charles+drony
Tsinghua, Cambridge and UIC jointly launched the first Chinese fact verification data set: evidence-based, covering many fields such as medical society
Comparison and selection of kubernetes Devops CD Tools
Policy mode - unity
The top of slashdata developer tool is up to you!!!
随机推荐
App capture of charles+drony
App capture of charles+postern
Three forms of multimedia technology commonly used in enterprise exhibition hall design
ES6 note 1
面试唯品会实习测试岗、抖音实习测试岗【真实投稿】
完整的电商系统
ES6笔记一
How much does it cost to develop a small program mall?
反爬虫的重点:识别爬虫
数据验证框架 Apache BVal 再使用
Version 2.0 of tapdata, the open source live data platform, has been released
Reject policy of thread pool
【MIME笔记】
Cloud security daily 220707: Cisco Expressway series and telepresence video communication server have found remote attack vulnerabilities and need to be upgraded as soon as possible
A hodgepodge of ICER knowledge points (attached with a large number of topics, which are constantly being updated)
3.关于cookie
Static routing configuration
Mathematical analysis_ Notes_ Chapter 11: Fourier series
50亿,福建又诞生一只母基金
How many are there (Lua)