zoukankan      html  css  js  c++  java
  • 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,

  • 相关阅读:
    Visual Studio 快捷键
    C#编程使用Managed Wifi API连接无线SSID
    C#两种创建快捷方式的方法
    COJ 1059
    [Unity3D]Unity3D游戏开发之鼠标滚轮实现放大缩小
    cloudstack4.4新增功能前瞻
    hdu 4635 Strongly connected (tarjan)
    freemarker声明变量
    Android 4.4 Kitkat Phone工作流程浅析(六)__InCallActivity显示更新流程
    评教,路上的风景更美
  • 原文地址:https://www.cnblogs.com/hfyfpga/p/4381471.html
Copyright © 2011-2022 走看看