当前位置: 首页 > news >正文

牛客网Verilog刷题——VL48

牛客网Verilog刷题——VL48

  • 题目
  • 答案

题目

  在data_en为高期间,data_in将保持不变,data_en为高至少保持3个B时钟周期。表明,当data_en为高时,可将数据进行同步。本题中data_in端数据变化频率很低,相邻两个数据间的变化,至少间隔10个B时钟周期。
  电路的接口如下图所示:
在这里插入图片描述

  端口说明如下表所示:

在这里插入图片描述
   本题考察的就是多比特跨时钟域处理,但是题目中没有指出是快时钟域到慢时钟域还是慢时钟域到快时钟域,只是明确指出data_en至少保持3个clk_b时钟周期,data_in至少保持10个clk_b时钟周期,也就是说,时钟域clk_a下的信号同步到时钟域clk_b下,在clk_b的上升沿处,肯定能被采集到,不会出现像我们常见的快时钟域到慢时钟域处理中,出现的慢时钟域采集不到快时钟域信号的情况,所以本题只需要简单的将单比特的使能信号进行跨时钟域处理后,再作为多比特跨时钟域处理打拍中的使能信号即可。

答案

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
);reg [3:0] data_reg; //输入数据打拍(时钟域clk_a)reg       data_en_reg_a; //输入使能信号打拍(时钟域clk_a)reg       data_en_reg1_b, data_en_reg2_b; //打两拍跨时钟域处理(时钟域clk_b)//输入数据在clk_a时钟域下打一拍,消除毛刺always@(posedge clk_a or negedge arstn) beginif(~arstn)data_reg <= 0;elsedata_reg <= data_in;end//使能信号在clk_a时钟域下打一拍,消除毛刺always@(posedge clk_a or negedge arstn) beginif(~arstn)data_en_reg_a <= 0;elsedata_en_reg_a <= data_en;end//时钟域clk_a下使能信号同步到时钟域clk_b下(打两拍,防止亚稳态)always@(posedge clk_b or negedge brstn) beginif(~brstn) begindata_en_reg1_b <= 0;data_en_reg2_b <= 0;endelse begindata_en_reg1_b <= data_en_reg_a;data_en_reg2_b <= data_en_reg1_b;endend//时钟域clk_b下,根据同步后的使能信号进行取值always@(posedge clk_b or negedge brstn) beginif(~brstn) dataout <= 0;else dataout <= data_en_reg2_b? data_reg: dataout;end
endmodule
http://www.lryc.cn/news/103506.html

相关文章:

  • Unity UGUI的Shadow(阴影)组件的介绍及使用
  • Kubernetes系列
  • 同步锁: synchronized
  • 【微服务】springboot 多模块打包使用详解
  • 嵌入式工程师面试经常遇到的30个经典问题
  • ER系列路由器多网段划分设置指南
  • 3 PostGIS基础查询
  • Shell错误:/bin/bash^M: bad interpreter: No such file or directory
  • Golang之路---01 Golang的安装与配置
  • Anolis OS 8.8服务器采用docker容器方式搭建gerrit3.8.1服务
  • PyTorch 中的多 GPU 训练和梯度累积作为替代方案
  • Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)
  • vmware的window中安装GNS3
  • FPGA XDMA 中断模式实现 PCIE3.0 AD7606采集 提供2套工程源码和QT上位机源码
  • 某某大学某学院后台Phar反序列化GetShell
  • 【ChatGPT辅助学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流
  • 使用云服务器和Frp(快速反向代理)框架快速部署实现内网穿透
  • Mac 上使用 Tesseract OCR 识别图片文本
  • 《MapboxGL 基础知识点》- 放大/缩小/定位/级别
  • VScode的简单使用
  • # Unity 如何获取Texture 的内存大小
  • dolphinscheduler switch+传参无坑版
  • VINS-fusion安装
  • 智慧消防:如何基于视频与智能分析技术搭建可视化风险预警平台?
  • selenium定位元素的方法
  • RISC-V特权级别
  • RISC-V 指令集介绍
  • 操作系统5
  • K8S系列文章之 Docker常用命令
  • 谷歌: 安卓补丁漏洞让 N-days 与 0-days 同样危险