首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA系统设计的3种常用IP模块(3)

FPGA系统设计的3种常用IP模块(3)

 剩下的一个文件是fifo_test_inst.v,inst是实例化的简称。在这个文件里面提供了FIFO模块实例化的模板,代码如下:
  fifo_test fifo_test_inst ( //fifo_test模块实例化
   .data ( data_sig ), //输入数据
   .wrreq ( wrreq_sig ), //写请求
   .rdreq ( rdreq_sig ), //读请求
   .clock ( clock_sig ), //时钟
   .aclr ( aclr_sig ), //异步清零
   .q ( q_sig ), //输出数据
   .full ( full_sig ), //满信号
   .empty ( empty_sig ), //空信号
   .usedw ( usedw_sig ) //字节使用信号
  );
  通过复制这个模板至工程设计文件中,即可实现FIFO模块的实例化。在进行实例化时,可以修改实例化的名称以及FIFO模块端口信号线的连线资源名称。
  下面是将FIFO实例化在IP_Generate_Test工程中的代码。
  module IP_Generate_Test(...); //调用FIFO模块的设计文件模块
   ... //连线资源声明
   fifo_test fifo_test_inst1 ( //实例化为fifo_test_inst1
  .data ( fifo_data ), //FIFO数据输入为fifo_data
  .wrreq (fifo_wrreq),
  .rdreq (fifo_rdreq),
  .clock (fifo_ clock),
  .aclr (fifo_aclr),
  .q (fifo_ q ),
  .full (fifo_ full ),
  .empty (fifo_empty ),
  .usedw ( ) //未实例化的端口保留空白表示不使用该端口
  );
   ...
  endmodule
  至此,已经在一个工程中实现了片上FIFO的调用。
  2.RAM
  这里主要介绍双口RAM模块的生成方法,模块的构造方法及调用方法与FIFO模块类似,不详细介绍。
  (1)打开宏模块向导管理器并新建宏模块。
  具体方法参见FIFO的方法。
  (2)选择宏模块。
  在本例中,我们选择LPM_RAM_DP模块进行实现,如图9.20所示。


图9.20选择宏模块


  (3)设置DPRAM端口数及容量单位。
  在宏模块向导管理器(DPRAM)的第3页,可以设置DPRAM的端口数及容量单位。支持两种DPRAM:1个读端口和1个写端口的DPRAM,2个读端口和2个写端口的DPRAM。可以设置DPRAM的容量单位为位或者是字节。同时在本页的左下角会计算出实现这样一个DPRAM所消耗的FPGA资源,如图9.21所示。


图9.21选择宏模块


  (4)设置DPRAM数据宽度及容量。
  在宏模块向导管理器(DPRAM)的第4页,可以设置DPRAM的数据宽度及容量,同时可以设置输入输出端口为不同的宽度实现串并或并串转换,如图9.22所示。
  (5)设置DPRAM时钟及使能。
  在宏模块向导管理器(DPRAM)的第5页,可以设置DPRAM的时钟及使能信号,可以将DPRAM设置为单时钟(输入输出使用同一个时钟),也可以使用独立的时钟。另外还可以为DPRAM增加读使能信号rden,如图9.23所示。


图9.22设置DPRAM数据宽度及容量



图9.23设置DPRAM时钟及使能


  (6)设置DPRAM端口寄存器及清零信号。
  在宏模块向导管理器(DPRAM)的第7页,可以设置DPRAM的端口寄存器及清零信号,可以选择是否增加端口的寄存器,如图9.24所示。


图9.24设置DPRAM端口寄存器及清零信号


  (7)设置DPRAM初始化值。
  在宏模块向导管理器(DPRAM)的第9页,可以设置DPRAM的初始化值。通过选择MIF文件或者HEX文件可以使用文件中的值对DPRAM进行初始化,如图9.25所示。


图9.25设置DPRAM初始化值

继承事业,薪火相传
返回列表