verilog 数组参数
verilog 支持定义数组参数,这样工程很大时,例化模块时可以使代码更简洁:详见实例
module dma_controller #(
parameter integer C0_MAX_MIG_BL[3:0] = {2048,2048,2048,2048},
parameter integer C0_APP_DATA_WIDTH[3:0] = {64,64,64,64} ,
parameter integer C0_DMA_WR_DATA_WIDTH[3:0] = {16,16,16,16} ,
parameter integer C0_DMA_RD_DATA_WIDTH[3:0] = {16,16,16,16} ,
parameter [1 : 8*11] C0_READ_WRITE[3:0] = {"Write Only","Bidirection","Bidirection","Bidirection"},
parameter integer C1_MAX_MIG_BL[3:0] = {2048,2048,2048,2048},
parameter integer C1_APP_DATA_WIDTH[3:0] = {128,128,128,128} ,
parameter integer C1_DMA_WR_DATA_WIDTH[3:0] = {32,32,32,32} ,
parameter integer C1_DMA_RD_DATA_WIDTH[3:0] = {32,32,32,32} ,
parameter [1 : 8*11] C1_READ_WRITE[3:0] = {"Write Only","Bidirection","Bidirection","Bidirection"}
) (
input main_clk ,//I,W:01,main_clk主系统时钟:200MHz
input sys_rst ,
。。。。。。
)
genvar gv_dma_i;
generate
for (gv_dma_i=0;gv_dma_i<=3;gv_dma_i=gv_dma_i+1)
begin : c0_dma_blk
dma
#(
.MAX_MIG_BL (C0_MAX_MIG_BL[gv_dma_i]),
.APP_DATA_WIDTH (C0_APP_DATA_WIDTH[gv_dma_i]),
.DMA_WR_DATA_WIDTH(C0_DMA_WR_DATA_WIDTH[gv_dma_i]),
.DMA_RD_DATA_WIDTH(C0_DMA_RD_DATA_WIDTH[gv_dma_i]),
.READ_WRITE (C0_READ_WRITE[gv_dma_i]) //3 option : "Write Only" , "Read Only" , "Bidirection"
)
inst_c0_dma(
//与MIG(arbitor)接口
.ui_clk (c0_dma_ui_clk[gv_dma_i]),//I,W:01,UI接口输出时钟,200Mhz
.ui_clk_sync_rst (c0_dma_ui_clk_sync_rst[gv_dma_i]),//I,W:01,同步时钟复位
.init_calib_complete(c0_dma_init_calib_complete[gv_dma_i]),//I,W:01,PHY校准完成,DMA可以在校准完成之前发送读写操作命令信息
.app_req (c0_dma_app_req[gv_dma_i]),//O,W:01,MIG UI接口使用请求
.app_resp (c0_mig2dma_app_resp[gv_dma_i]),//I,W:01,MIG UI接口使用应答
.app_done (c0_dma2mig_app_done[gv_dma_i]),//O,W:01,MIG UI接口使用结束,数据搬移完成
.app_addr (c0_dma2mig_app_addr[gv_dma_i]),//O,W:28or27,当前操作地址信息,第一个控制器地址位宽为28,第二个为27
.app_cmd (c0_dma2mig_app_cmd[gv_dma_i]),//O,W:03,操作命令 Read 001,Write 000
.app_en (c0_dma2mig_app_en[gv_dma_i]),//O,W:01,命令参数使能,UI接口在该信号有效时采集app_addr[]和app_cmd[2:0]
.app_wdf_data (c0_dma2mig_app_wdf_data[gv_dma_i]),//O,W:APP_DATA_WIDTH,写数据端口,位宽视MIG controller而定,当连接controller1时,位宽为128bit,连接另一个controller时位宽为64bit
.app_wdf_end (c0_dma2mig_app_wdf_end[gv_dma_i]),//O,W:01,指示当前时钟周期app_wdf_data总线上的数据为本次写请求的最后一个数据
.app_wdf_mask (c0_dma2mig_app_wdf_mask[gv_dma_i]),//O,W:APP_DATA_WIDTH/8,数据屏蔽位,位宽视MIG controller而定,当连接controller1时,位宽为16bit,连接另一个controller时位宽为8bit
.app_wdf_wren (c0_dma2mig_app_wdf_wren[gv_dma_i]),//O,W:01,写使能,指示app_wdf_data总线上的数据有效
.app_rd_data (c0_mig2dma_app_rd_data[gv_dma_i]),//I,W:APP_DATA_WIDTH,读数据端口,位宽视MIG controller而定,当连接controller1时,位宽为128bit,连接另一个controller时位宽为64bit
.app_rd_data_end (c0_mig2dma_app_rd_data_end[gv_dma_i]),//I,W:01,指示当前时钟周期app_rd_data总线上的数据为本次读请求的最后一个数据
.app_rd_data_valid (c0_mig2dma_app_rd_data_valid[gv_dma_i]),//I,W:01,读有效,指示app_rd_data总线上的数据有效
.app_rdy (c0_mig2dma_app_rdy[gv_dma_i]),//I,W:01,指示UI接口是否已经接收刚才发送的操作请求,当app_en有效后,如果UI接口没有使能app_rdy,表示刚才操作请求无效,需要从新发起读写请求
.app_wdf_rdy (c0_mig2dma_app_wdf_rdy[gv_dma_i]),//I,W:01,指示写FIFO准备好接受数据,数据在app_wdf_rdy 和 app_wdf_wren都有效时被写入FIFO
genvar gv_dma_j;
generate
for (gv_dma_j=0;gv_dma_j<=2;gv_dma_j=gv_dma_j+1)
begin : c1_dma_blk
dma
#(
.MAX_MIG_BL (C1_MAX_MIG_BL[gv_dma_j]),
.APP_DATA_WIDTH (C1_APP_DATA_WIDTH[gv_dma_j]),
.DMA_WR_DATA_WIDTH(C1_DMA_WR_DATA_WIDTH[gv_dma_j]),
.DMA_RD_DATA_WIDTH(C1_DMA_RD_DATA_WIDTH[gv_dma_j]),
.READ_WRITE (C1_READ_WRITE[gv_dma_j]) //3 option : "Write Only" , "Read Only" , "Bidirection"
)
inst_c1_dma(
//与MIG(arbitor)接口
.ui_clk (c1_dma_ui_clk[gv_dma_j]),//I,W:01,UI接口输出时钟,200Mhz
.ui_clk_sync_rst (c1_dma_ui_clk_sync_rst[gv_dma_j]),//I,W:01,同步时钟复位
.init_calib_complete(c1_dma_init_calib_complete[gv_dma_j]),//I,W:01,PHY校准完成,DMA可以在校准完成之前发送读写操作命令信息
.app_req (c1_dma_app_req[gv_dma_j]),//O,W:01,MIG UI接口使用请求
.app_resp (c1_mig2dma_app_resp[gv_dma_j]),//I,W:01,MIG UI接口使用应答
.app_done (c1_dma2mig_app_done[gv_dma_j]),//O,W:01,
verilog 数组参数的更多相关文章
- mvc ajax提交数组参数(转)
http://blog.csdn.net/lonestar555/article/details/10192595/ 在action中的参数以数组方式接收数据 一.表单方式 1.提交Form < ...
- Atitit main函数的ast分析 数组参数调用的ast astview解析
Atitit main函数的ast分析 数组参数调用的ast astview解析 1.1. Xxcls.main(new String[]{"","bb"}) ...
- webAPI 数组参数
今天终于解决了一个坑的问题. 写了一个接口,调试了好几天都没成功. 一直以为是我的错误,直到我们部门的大牛来告诉我不是我的错误,是前端传参数有问题. 应该是参数是数组参数的问题,可能不好拼接,才导致接 ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- ThinkPHP分页链接支持数组参数的办法
这几天在用ThinkPHP做系统,搜索页有个数组参数提交 <input class="params_t" name="t[]" type="ch ...
- 解决JavaScript中使用$.ajax方式提交数组参数
一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox: $.ajax{ url:"xxxx", data:{ p: &quo ...
- 在ASP.NET MVC中以post方式传递数组参数的示例
最近在工作中用到了在ASP.NET MVC中以post方式传递数组参数的情况,记录下来,以供参考. 一.准备参数对象 在本例中,我会传递两个数组参数:一个字符串数组,一个自定义对象数组.这个自定义对象 ...
- [Swift 语法点滴]——数组参数
Swift语言一如既往的继承了苹果公司卓尔不群的奇葩思维方式,总是要弄得跟别的语言不一样,才能显出它的特殊 比如用数组作为参数上,这格式实在是没有试出来,找了stackoverflow,才找到相应信息 ...
- 使用javaScript解决asp.net中mvc使用ajax提交数组参数的匹配问题
想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发生取不到值的情况,当然网上也有很多解决的例子,但都是在服 ...
随机推荐
- 如何修改word的项目编号
在操作word文档时,有时会遇到word文档中的项目编号不是自己需要的,并造成word项目编号的混乱,如何word中的两级项目编号不统一,为解决会word的项目编号混乱问题,小编将教大家如何修改wor ...
- ☀【插件】iScroll
iScroll 4.2.5 中文API √http://www.gafish.net/api/iScroll.html -webkit-overflow-scrolling: touch <!D ...
- 1.进入debug模式(基础知识列表)
1.进入debug模式(基础知识列表)1.设置断点 2.启动servers端的debug模式 3.运行程序,在后台遇到断点时,进入debug调试状态 ========================= ...
- 一步步写STM32 OS【一】 序言
一直想写个类似uCOS的OS,近段时间考研复习之余忙里偷闲,总算有点成果了.言归正传,我觉得OS最难的部分首先便是上下文切换的问题,他和MCU的架构有关,所以对于不同的MCU,这部分需要移植.一旦这个 ...
- lightoj 1007
预先处理好phi数组和前缀和,水题. #include<cstdio> #include<string> #include<cstring> #include< ...
- Rose
<html> <head> <title>JS小尝试</title> <meta http-equiv="Content-Type&qu ...
- python调用系统命令 shell命令
使用python调用系统命令,基本有3种选择: 1. 使用os模块的system方法 import os os.system('ls') 2. 使用os模块的popen方法 import os os. ...
- IT小说
最近迷上了IT小说,连着读了好几个连载.伴随着一个项目的一些事,一些矛盾,也能体现出一个社会的缩影.最吸引的应该是一种熟悉感,常常想要是拍成电视剧也应该很好看,像<半泽植树>似的.看完了, ...
- 1到n数组,和为指定数所有序列问题
(1)方法一,背包问题解法 #include <iostream> using namespace std; #include <vector> #include <li ...
- 《Data-Intensive Text Processing with mapReduce》读书笔记之二:mapreduce编程、框架及运行
搜狐视频的屌丝男士第二季大结局了,惊现波多野老师,怀揣着无比鸡冻的心情啊,可惜随着剧情的推进发展,并没有出现期待中的屌丝奇遇,大鹏还是没敢冲破尺度的界线.想百度些种子吧,又不想让电脑留下污点证据,要知 ...