Moselsim仿真:

    

    EP为Endpoint部分实现代码,即例程主代码。其他的是搭建的仿真环境,主要目的是仿照驱动的行为,将PCIE软核用起来,主要是做PC端的行为仿真,如DMA配置,DMA读写操作及主时钟,复位等。加入testbench后结构如上图。

    board:顶层文件+系统复位

    RP:Root complex的部分。其中rport就是PCIE端口部分;rx_usrapp是RX部分,负责发送数据;tx_usrapp是TX部分,负责接收数据;cfg_usrapp是配置部分,配置读写使能,错误控制等,还有一些常用的任务方便其他模块调用;com_usrapp是加载RX/TX文件,把RX/TX的数据以dat文件形式保存,需要时加载/覆盖。pl_usrapp物理层控制和状态部分。

    CLK_GEN_RP/EP:分别是两个端口的时钟产生信号。

    其实EP和RP的结构很像的,基本都是对应的关系,所以理解起来工作量不是很大。

语法笔记:

    因为CLK_GEN_RP/EP很简单,没有什么扒的必要,所以分分钟掠过了。接下来是对RP(testbench)的一些平时没见过的语法的笔记。

    1.module xxx #(

              parameter  xxxx1 = xx,

              parameter      xxxx2 = xx,

              ......

            )

            (

              input          xxxxxx,

              output        xxxx,

               .......

            );

      这个是正常的模块定义。其中前面一个括号是为参数传递准备的定义,后面那个括号就是常见的输入输出端口定义。

     xxx #(

              .xxxx1 ( xx),

              .xxxx2 (xx),

              ......

            )

            module_usrname(

              .xxxxxx(xxxxxxx),

              .xxxx(xxxx),

               .......

            );

      这个是调用模块xxx的语句,其中前面一个括号用于参数传递,后面一个括号用于输入输出端口的引用。

     2.rport中,对RP的BAR0-BAR5有明确的定义需要记录下:      

      BAR0 = 32'hffffff00,
      BAR1 = 32'hffff0000,
      BAR2 = 32'hffff000c,
      BAR3 = 32'hffffffff,
      BAR4 = 32'h00000000,
      BAR5 = 32'h00000000,

     3.rx_usrapp中的output分别是trn_rdst_rdy_n和trn_rnp_ok_n,这两个信号是由ramdom产生的。不过原来的代码里面trn_rdst_rdy_n是始终为0的,实际加入DMA操作的时候可以用trn_rdst_rdy_toggle_count来控制使其有效。其中的状态机通过调用usrapp_com中的任务来进行RX中数据的store。

     4.调用TASK方法:

      eg: board.RP.com_usrapp.TSK_READ_DATA(0, `RX_LOG, trn_rd, trn_rrem_n);——是指调用board-RP-com_usrapp里面的 TSK_READ_DATA任务,其中括号里面的是传递变量,按照usrapp里面TSK_READ_DATA定义里面的input顺序来传递变量。

     5.$value$plusargs:将运行命令(run-options)中的参数值传递给指定的信号或者字符
      用法:

        if ($value$plusargs("TESTNAME=%s", testname))
        $display("Running test {%0s}......", testname);

        则,当使用的运行命令为:<run-options>+TESTNAME=tst_name时,运行结果为:Running test {tst_name}......

      6.如果想把DMA功能用起来,自行调用pci_exp_usrapp_tx.v中的函数,往DMA控制寄存器中写入地址、长度等数据,然后启动DMA读或者写。

PCIE_DMA:xapp1052学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. @Primary 注解的作用

    当一个接口有两个实现类时,并两个实现类都被 Spring 管理,则需要对某个类进行 @Primary 注解,表示优先选择此实现类. 否则会抛出 异常 org.springframework.beans ...

  2. 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组

    import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...

  3. 吴裕雄 python 神经网络——TensorFlow pb文件保存方法

    import tensorflow as tf from tensorflow.python.framework import graph_util v1 = tf.Variable(tf.const ...

  4. 5G新时代开启,你会选择哪家运营商?

    牌照正式发放后,5G新时代正式来临.而5G时代显然开了个好头,B站UP主"老师好我叫何同学"发布的<有多快?5G在日常使用中的真实体验>视频,引爆全网.除了仅在B站就获 ...

  5. C++11常用特性介绍——列表初始化

    一.列表初始化 1)C++11以前,定义初始化的几种不同形式,如下: int data = 0;   //赋值初始化 int data = {0};   //花括号初始化 int data(0); / ...

  6. 浅谈CVE-2018-12613文件包含/buuojHCTF2018签到题Writeup

    文件包含 蒻姬我最开始接触这个 是一道buuoj的web签到题 进入靶机,查看源代码 <!DOCTYPE html> <html lang="en"> &l ...

  7. centos启动jar包

    不挂断运行命令,日志输出到log.txt中 nohup java -jar boot-cms-module-system-2.0.1.jar >log.txt & Linux 运行jar ...

  8. 操作系统OS - 线程中的join()为什么叫join

    1. 问题:很好奇为什么叫Join? 参考: https://blog.csdn.net/frankarmstrong/article/details/55504161 https://stackov ...

  9. c# 分页 PaginatedList<TResult>

    using System; using System.Collections.Generic; using System.Linq; namespace Microestc.PaginatedList ...

  10. 关于ubuntu挂载ntfs无法进行读写的解决方法

    查看挂载信息 df -h 参看要挂载磁盘UUID sudo blkid 编辑/etc/fstab文件: sudo vim /etc/fstab 在最后一行添加如下一行信息: UUID=A248CF46 ...