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集合)以及更复杂的对象时,服务端总是会发生取不到值的情况,当然网上也有很多解决的例子,但都是在服 ...
随机推荐
- Wpf配置文件属性
public MainWindow() { InitializeComponent(); this.WindowState = Properties.Settings.Default.WindowSt ...
- BZOJ2843: 极地旅行社
2843: 极地旅行社 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 90 Solved: 56[Submit][Status] Descripti ...
- 【转】Android source build/envsetup.sh学习笔记
原文网址:http://blog.csdn.net/mliubing2532/article/details/7567164 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很 ...
- 【转】CUDA5/CentOS6.4
转载自http://wenzhang.baidu.com/article/view?key=076f36658dd0828c-1393896446 This article explains how ...
- SharePoint 2010 修改默认列表样式
SharePoint 2010 修改默认列表样式 :可以通过修改 下面两个全局配置进行修改.(未完..更新中...) C:\Program Files\Common Files\Microsoft ...
- MYSQL存储过程中的IN、OUT和INOUT
MYSQL存储过程中的IN.OUT和INOUT,不能简单理解为一个方法的参数和返回值,而是面向整个过程上下文变量的. 一.MySQL 存储过程参数(in) 基本可以理解为传入function的参数,而 ...
- HW2.11
控制台: import java.util.Scanner; public class Solution { public static void main(String[] args) { Scan ...
- Sitemap Editors for Dynamics CRM 2013
I’ve started using a couple of different sitemap editors in my projects for CRM 2013. These tools he ...
- 利用ACE 自己实现的线程池
1: 线程池组件的配置文件: [log] ;DEBUG = 0 ;INFO = 1 ;WARN = 2 ;FAULT = 3 level=0 ;SCREENOUT = 0 ;FILEOUT = 1 ; ...
- Xsocket学习
1.xsocket是一个轻量级的基于NIO的服务器框架,用于开发高性能.可扩展.多线程的服务器.该框架封装了线程处理,异步读写等方面的操作. 定义一个借口,继承IDataHandler,IConnec ...