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

非整数倍数据位宽转换24to128

描述

        实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。

        电路的接口如下图所示。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;clk是时钟信号;rst_n是异步复位信号。

接口时序示意图

输入描述

    input                 clk         ,   input                 rst_n        ,input                valid_in    ,input    [23:0]        data_in       

 输出描述

    output    reg            valid_out    ,output  reg [127:0]    data_out

解题分析

输入:valid_in, data_in[23:0]
输出:valid_out,data_out[127:0]
        输入数据是24bit,输出数据是128bit。

        因为128×3=24×16128\times3=24\times16128×3=24×16,所以每输入16个有效数据,就可以产生三个完整的输出。因此设置一个仅在输入数据有效时工作的计数器cnt,计数范围是0-15。

    reg [3:0]   cnt;always@(posedge clk or negedge rst_n) beginif(~rst_n)cnt <= 0;elsecnt <= ~valid_in? cnt:cnt==15  ? 0  :cnt+1;end

然后设置一个数据暂存器data_lock,每当输入有效时,将数据从低位移入。

reg [127:0] data_lock;
always@(posedge clk or negedge rst_n) beginif(~rst_n)data_lock <= 0;elsedata_lock <= valid_in? {data_lock[103:0], data_in}: data_lock;
end

alt

        由上图易得,每当计数器cnt计数到5、10、15时,data_out要进行更新,并拉高valid_out一个周期。 

    always@(posedge clk or negedge rst_n) beginif(~rst_n)valid_out <= 0;elsevalid_out <= (cnt==5 || cnt==10 || cnt==15)&&valid_in;endalways@(posedge clk or negedge rst_n) beginif(~rst_n)data_out <= 0;else if(cnt==5)data_out <= valid_in? {data_lock[119:0], data_in[23:16]}: data_out;else if(cnt==10)data_out <= valid_in? {data_lock[111:0], data_in[23: 8]}: data_out;else if(cnt==15)data_out <= valid_in? {data_lock[103:0], data_in[23: 0]}: data_out;elsedata_out <= data_out;end

参考代码

`timescale 1ns/1nsmodule width_24to128(input 				clk 		,   input 				rst_n		,input				valid_in	,input	[23:0]		data_in		,output	reg			valid_out	,output  reg [127:0]	data_out
);reg [3:0]   cnt;reg [127:0] data_lock;always@(posedge clk or negedge rst_n) beginif(~rst_n)cnt <= 0;elsecnt <= ~valid_in? cnt:cnt+1;endalways@(posedge clk or negedge rst_n) beginif(~rst_n)valid_out <= 0;elsevalid_out <= (cnt==5 || cnt==10 || cnt==15)&&valid_in;endalways@(posedge clk or negedge rst_n) beginif(~rst_n)data_lock <= 0;elsedata_lock <= valid_in? {data_lock[103:0], data_in}: data_lock;endalways@(posedge clk or negedge rst_n) beginif(~rst_n)data_out <= 0;else if(cnt==5)data_out <= valid_in? {data_lock[119:0], data_in[23:16]}: data_out;else if(cnt==10)data_out <= valid_in? {data_lock[111:0], data_in[23: 8]}: data_out;else if(cnt==15)data_out <= valid_in? {data_lock[103:0], data_in[23: 0]}: data_out;elsedata_out <= data_out;end
endmodule

注:解题分析来源于网友,如有侵权,请告删之。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Meta发布Chameleon模型预览,挑战多模态AI前沿
  • Softing工业推出新品edgeGate:一款用于工业边缘和云应用的硬件网关
  • 使用VirtualBox+vagrant创建CentOS7虚拟机
  • 简易进程池的实现
  • MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端
  • 家政服务,让您的家更温馨
  • C++ 数据结构算法 学习笔记(32) -五大排序算法
  • AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月25日预测第1弹
  • 【机器学习】大模型在机器学习中的应用:从深度学习到生成式人工智能的演进
  • 【AI大模型】这可能是最简单的本地大模型工具,无须部署,一键使用
  • Controlnet作者放出新的大招 IC-Light,可以操控图像生成时的光照,对内容主体重新打光生成符合新背景环境光照的图片
  • XH连接器>KH-XH-5A-Z
  • 【全部更新完毕】2024电工杯A题数学建模详细思路代码文章分享
  • 【C++高阶(一)】继承
  • plt多子图设置
  • ES2017异步函数现已正式可用
  • ES6 学习笔记(一)let,const和解构赋值
  • Facebook AccountKit 接入的坑点
  • Golang-长连接-状态推送
  • node.js
  • Python学习之路16-使用API
  • Redis在Web项目中的应用与实践
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 阿里云应用高可用服务公测发布
  • 番外篇1:在Windows环境下安装JDK
  • 力扣(LeetCode)965
  • 前端面试总结(at, md)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 双管齐下,VMware的容器新战略
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个完整Java Web项目背后的密码
  • 第二十章:异步和文件I/O.(二十三)
  • 湖北分布式智能数据采集方法有哪些?
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​批处理文件中的errorlevel用法
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #QT(智能家居界面-界面切换)
  • #大学#套接字
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (libusb) usb口自动刷新
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)换源+apt-get基础配置+搜狗拼音
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转载)Linux 多线程条件变量同步
  • .apk 成为历史!
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET CLR基本术语
  • .NET简谈设计模式之(单件模式)
  • .NET轻量级ORM组件Dapper葵花宝典
  • @JoinTable会自动删除关联表的数据