关于verilog不能处理数组端口的解决方法

Verilog语言目前并不支持数组型端口,这不利于一些信号的管理。虽然System Veilog支持这样的定义,但是如果是芯片开发,就不得不用Verilog开发了。


即在Verilog中,不支持如下的端口定义:

module divider_common#
(parameter                                  CHAN_NUM                  = 8    // 通道数,parameter                                  CHAN_DW                   = 8    // 数据位宽
)
(input                                      sys_clk,input                                      sys_rst...,input                                      i_dat_vld      [0:CHAN_NUM-1],input  [CHAN_DW-1:0]                       i_dat          [0:CHAN_NUM-1]...,output                                     o_dat_vld      [0:CHAN_NUM-1],output [CHAN_DW-1:0]                       o_dat          [0:CHAN_NUM-1]
);

针对上述情况,更改端口定义方式:即从数组定义方式变为大位宽定义

module divider_common#
(parameter                                  CHAN_NUM                  = 8    // 通道数,parameter                                  CHAN_DW                   = 8    // 数据位宽
)
(input                                      sys_clk,input                                      sys_rst...,input  [CHAN_NUM-1:0]                      i_dat_vld,input  [CHAN_NUM*CHAN_DW-1:0]              i_dat...,output [CHAN_NUM-1:0]                      o_dat_vld,output [CHAN_NUM*CHAN_DW-1:0]              o_dat
);

为了在模块内部更方便的使用(例如generate for 或者 generate if),可以在模块内部将大位宽数据拆分为数组。如下:

对于input端口

    genvar i;wire                             data_in_vld      [0:CHAN_NUM-1]  ;wire  [CHAN_DW-1:0]              data_in          [0:CHAN_NUM-1]  ;// input 大位宽转数组generatefor (i = 0; i < CHAN_NUM; i = i + 1) beginassign data_in_vld[i] = i_dat_vld[i*1 +: 1];assign data_in[i] = i_dat[i*CHAN_DW +: CHAN_DW];endendgenerate

对于output端口

    genvar i;reg                             data_out_vld      [0:CHAN_NUM-1]  ;reg  [CHAN_DW-1:0]              data_out          [0:CHAN_NUM-1]  ;// input 大位宽转数组generatefor (i = 0; i < CHAN_NUM; i = i + 1) beginassign o_dat_vld[i*1 +: 1] = data_out_vld[i];assign o_dat[i*CHAN_DW +: CHAN_DW] = data_out[i];endendgenerate...generatefor (i = 0; i < CHAN_NUM; i = i + 1) beginalways@ (posedge sys_clk) begindata_out_vld[i] <= ...;data_out <= ...;endendendgenerate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十二届蓝桥杯Python组1月中/高级试题 第一题

** 十二届蓝桥杯Python组1月中/高级试题 第一题 第一题&#xff08;难度系数2&#xff0c;18 个计分点&#xff09; 编程实现&#xff1a; 输入一个字符串&#xff0c;输出这个字符串的最后一个字符。 输入描述&#xff1a;输入一个字符串 输出描述&#xff1a;输出这个字符串…

短视频批量下载解决方案分享

对于作短视频运营的行业人员&#xff0c;获取对应的视频资源和素材是必不可少的。 所以需要一个批量搜索视频并且下载的工具非常重要 一&#xff1a;行业痛点&#xff1a; 1&#xff1a;只能通过单链接进行下载 2&#xff1a;不能通过关键词批量下载 3&#xff1a;无法获取…

【Ubuntu20.04安装java-8-openjdk】

1 下载 官网下载链接&#xff1a; https://www.oracle.com/java/technologies/downloads/#java8 下载 最后一行 jdk-8u411-linux-x64.tar.gz&#xff0c;并解压&#xff1a; tar -zxvf jdk-8u411-linux-x64.tar.gz2 环境配置 1、打开~/.bashrc文件 sudo gedit ~/.bashrc2、…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么&#xff1f;Java是值传递还是引用传递&#xff1f;值传递和引用传递的区别是什么&#x…

架空光缆用什么型号

架空光缆是什么意思 , 架空光缆用什么型号的 GYTC8A , 架空光缆型号是啥 8字形光缆 产品描述 Description GYTC8A光缆的结构是将250m光纤套入高模量材料制成的松套管中&#xff0c;松套管内填充防水化合物。缆芯的中心是一根金属加强芯&#xff0c;松套管(和填充绳 )围绕中心…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字&#xff1a;虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述&#xff1a;物理机无法连接虚拟机&#xff1b;虚拟机无法访问百度&#xff0c;虚拟机无法访问baidu.com 虚拟机…

Java数组的使用

前言 这里我使用的是IDEA编译器进行演示 数组的创建与初始化 创建格式&#xff1a; T[] 数组名 new T[N] T表示数组存放的数据类型&#xff0c;N表示数组的大小。 T[] 表示数组的类型。 这里要注意和C语言不同的是C语言使用类似int arr[10]这样的结构进行创建数组&#xff0c…

电脑文件x3daudio1 7.dll怎么修复?快速修复x3daudio1 7.dll的方法

你试过电脑文件x3daudio1 7.dll丢失么&#xff1f;如果你有遇到这种情况&#xff0c;那么可能你的某些程序就会启动不了&#xff0c;毕竟这个文件是用来处理音频功能的&#xff0c;那么我们要怎么去修复&#xff1f;下面我们一起来详细的了解电脑文件x3daudio1 7.dll这个文件吧…

作为新型锂离子电池正极材料 磷酸锰铁锂(LMFP)行业发展空间有望扩展

作为新型锂离子电池正极材料 磷酸锰铁锂&#xff08;LMFP&#xff09;行业发展空间有望扩展 磷酸锰铁锂&#xff08;LMFP&#xff09;指在磷酸铁锂基础上添加锰元素而制成的新型磷酸盐类锂离子电池正极材料。磷酸锰铁锂含有橄榄石型结构&#xff0c;生产成本低、能量密度高、绿…

中国GDP空间分布数据集、中国人口空间分布数据集、GDP密度分布、人口密度分布数据、夜间灯光分布数据、土地利用数据、道路网分布数据、乡镇边界分布

引言 GDP&#xff08;国内生产总值&#xff09;是指一个国家或地区所有常驻单位在一定时期内生产的所有最终产品和劳务的市场价值。GDP是表征宏观经济发展状况的基础性指标。GDP是社会经济发展、区域规划和资源环境保护的重要指标之一&#xff0c;通常以行政区为基本统计单元。…

echarts 处理数据

假如 我数据是这样式的 一个数组里边包含两个对象 var data [{ "gender": "female", "height": 161.2, "weight": 51.6 }, { "gender": "female", "height": 167.5, "weight": 59 }] 想转换…

HTML学习|初识表单post和get提交、文本框和单选框、按钮、多选框和下拉框、文本域和文件域、搜索框滑块和简单验证、表单的应用、表单初级验证

初识表单post和get提交 form标签是表单&#xff0c;method控制表单提交方式&#xff0c;get方式&#xff0c;表单填写的参数能够在跳转的url地址中看到&#xff0c;post方式是看不到的&#xff0c;action是向何处跳转表单数据 input标签&#xff0c;且typetext&#xff0c;是…

基于“PLUS模型+”生态系统服务多情景模拟预测实践技术应用

工业革命以来&#xff0c;社会生产力迅速提高&#xff0c;人类活动频繁&#xff0c;此外人口与日俱增对土地的需求与改造更加强烈&#xff0c;人-地关系日益紧张。此外&#xff0c;土地资源的不合理开发利用更是造成了水土流失、植被退化、水资源短缺、区域气候变化、生物多样性…

命令行工具部署达梦数据库 DMDPC(BP 多副本架构)

解达梦数据库DPC集群的主要使用场景&#xff1a; DMDPC 关注和解决的是大数据、计算与存储分离、高可用、支持全部的 SQL 标准、拥有完整的事务处理能力和集群规模能够动态伸缩的业务场景&#xff1a; 大量的复杂查询操作要求优化器能够生成优良的执行计划&#xff0c;并且执…

STM32、GD32驱动PCA9685控制舵机源码分享

一、PCA9685介绍 PCA9685是一种16通道PWM&#xff08;脉宽调制&#xff09;控制器芯片&#xff0c;由NXP Semiconductors公司生产。它具有高速I2C总线接口&#xff0c;可以通过I2C总线与微控制器或其他设备进行通信。PCA9685广泛应用于各种需要精确控制多路PWM信号的应用&…

npm install 卡在reify:rxjs: timing reifyNode的解决办法

今天要逆向跑一个electron&#xff0c;但是npm install一直卡在 reify:element-plus: timing reifyNode:node_modules/lodash Completed in 6664ms这里一动不动&#xff0c;一番研究之后发现可能跟用的镜像有关系&#xff0c;我原本是官方镜像&#xff0c;总感觉第三方镜像有一…

伪装目标检测论文阅读之Dual-SAM(CVPR-2024)

论文&#xff1a;link code&#xff1a;code Fantastic Animals and Where to Find Them:Segment Any Marine Animal with Dual SAM 摘要 作为水下智能的重要支柱&#xff0c;海洋动物分割(MAS)涉及对海洋环境中的动物进行分割。以往的方法在提取长范围上下文特征方面表现不佳…

Python | Leetcode Python题解之第77题组合

题目&#xff1a; 题解&#xff1a; class Solution:def combine(self, n: int, k: int) -> List[List[int]]:ans []path []def dfs(x):remain k - len(path)if not remain:ans.append(list(path))returnif n 1 - x > remain:dfs(x 1)path.append(x)dfs(x 1)path.…

宁夏编程培训中心联络及介绍

版权宁夏编程培训中心 宁夏编程培训中心介绍 AI DuLuo&#xff1a;您好&#x1f91d; 欢迎咨询宁夏编程培训中心&#xff0c;创始人账号 公司介绍及创始人介绍&#xff1a; 在职某地区阿里云计算机有限公司 国内&#xff0c;南非发明专利各一项&#xff0c;腾讯云阿里云专家&am…

vue视图不刷新强制更新数据this.$forceUpdate()

在vue中&#xff0c;更新视图数据&#xff0c;不刷新页面&#xff0c;需要强制更新数据才可以 前言 在对数据就行添加和删除时&#xff0c;发现页面视图不更新&#xff0c;排除发现需要强制更新才可以 点击添加或删除&#xff0c;新增数据和删除就行&#xff0c;但在不使用fo…