How to simulate the file with core(带IP核的文件)

How to simulate the file with core(带IP核的文件)

http://blog.csdn.net/lg2lh/article/details/51213440
http://www.doc88.com/p-7498874316214.html
http://www.360doc.com/content/12/0405/21/9644775_201229678.shtml
Modelsim-SE需要自己手动添加这些仿真库,我们如果设计中包含这些IP核,就必须在仿真之前,将这些库文件编译到Moldelsim 的库中去。
其实IP核只是我们要添加的其中一种库(MegaFunction),除此之外,我们还需要添加lpm库(设计中如果调用了lpm原件,需要添加此库),还有原语库(primitive),器件库(我们用的是cyclone),当然同一种库,还会分Verilog版和VHDL版

The method is as follows

NO.1 添加仿真库
我们将IP核等相关库文件编译到Modelsim中后,以后凡是设计中调用到IP核时,我们就不用再重复添加了。
由于要仿真xilinx的IP core,所以要添加编译好的有3个库,“simprims(用于进行布线仿真)”,“unisims(用于进行功能仿真)”和“xilinxcorelib(用于仿真xilinx的IP core)”
NO.2创建含有Xilinx IP核的工程并进行编译
NO.3指定IP核的仿真库

  1. Simulate ->Start Simulate 打开对话框;
  2. 单击【library】标签,在【search Libraries】栏中添加第一步中已经编译好的”XilinxCoreLib_ver”仿真库;
  3. 单击【Design】标签,选中要仿真的文件,比如:要仿真test_counter.v,选中后,在【Design Unit(s)】栏中会自动加入“work.test_counter”;
  4. 单击“OK”,仿真自动执行

0

How to make RUN.DO file

How to make RUN.DO file

http://blog.sina.com.cn/s/blog_7e2e98ad0101gxx7.html)
http://blog.csdn.net/lg2lh/article/details/51176467


modelsim_run.bat文件:这是一个批处理文件,里面就一行“modelsim -do sim.do”,这是一条DOS命令,意思就是调用Modelsim工具,并在Modelsim工具中执行sim.do这个文件。

下面按照实际仿真的步骤来说明do文件中需要用到的各个tcl命令。

  1. vlib work //create work library 在工作目录下建立一个work目录,后期我们编译的结果信息存放在work库中,请注意不要用操作系统直接新建一个work的文件夹,因为用操作系统建立的work文件夹并没有modelsim SE自动生成的_info文件。还有个问题是,当你的软件工程里需要用到软核时,可能会需要一些库,但这些库ISE软件中是没有的,此时就需要我们自己新建库了,并映射到当前目录下。我们将自己新建的库一般放在work库前面建立,
  2. vlog +acc –work work “fie_path/*.v”—- 编译“file_path”目录下所有.v文件,并将其添加进工作库(work)中,包括IP生成的V文件也要编译的。编译时可以分开单独编译,但是一定要注意顺序,先编译被调用的文件。其中的“-work work”是将后面的源文件编译到哪个库中,如果是编译到默认的work库中,则也可以不写该参数。若只想编译其中某些文件,则可以直接写出这些文件的名字,比如下面两种写法等效:
    vlog div.v div_tb.v
    vlog -work work div.v div_tb.v

    或者如下
    vlog "../src/sdram_write.v"
  3. vsim -novopt -quiet -c -L altera_ver -L E:/modeltech_6.6a/Xilinx_lib_edk/unimacro_ver -lib work div -t 1ns -do "run 2084655ns"—- 启动仿真命令,完成编译后就要启动仿真,该命令可以有许多参数。实际相当于在界面操作时,展开work库,右键—>Simulate without Optimization,启动仿真。
    参数“-L altera_ver”是添加仿真库,该处是直接使用逻辑库名称,也可以像后面一样使用物理库的名称及路径;若是库与源文件一起编译到work库中的,则不需要该参数;
    参数“-t 1ns”表示仿真时间单位为1ns;
    参数“-novopt”禁止优化(no vopt),可能会因为vopt的缘故使得一些不重要signal被modelsim自动忽略,一般会保留该参数;
    参数“-do”表示运行时间,该参数一般不用,在后面再运行该命令;
    参数“-c”表示进入命令行模式,如果没有该参数,则表示进行GUI模式。
    默认工作库为work因而下面几种写法等效:
    vsim div_tb
    vsim -lib work div_tb
    vsim work.div_tb
    sim -L D:/Modelsim/Installfiles/altera/altera_mf work.videoin_tb
  4. view signals source wave—- 打开signal、source、wave窗口,也可以只打开wave窗口;
  5. delete wave *—- 删除原来wave窗口中的波形;
    6.add wave -binary clk rst—- 打添加要观察的波形信号,clk、rst为tb的顶层信号名,若要添加内部信号则要给出路径,-binary表示使用二进制显示;
    添加一个模块的所有信号则可以用下面的方式:
    add wave -dec sim:/div_tb/*
    若只是要添加单个信号,则把“*”换成对应的信号即可,比如:
    add wave -unsigned sim:/div_tb/clk
  6. run 5000/run @5000 —- 开始运行仿真程序;
    没有“@”则表示在当前时刻继续运行5000个单位时间;
    有“@”则表示运行到5000这个时刻,如果当前程序仿真已经运行到了5000以后的时刻,则该方法不会继续向后运行,而会弹出一个错误信息,提示当前仿真时刻已经超过了该数值。
    run -all则表示一直运行,直到手动停止。
    在5000后面也可以跟上一个单位,不跟单位时则以仿真的最小单位为基准。
  7. quit -f/quit -sim —- 参数为“f”时则结束ModelSim,参数为“sim”时则结束该仿真进程。


这里只是编写了基本的do文件,需要在ModelSIm的Transcipts窗口输入相应的命令才可以执行。

  1. cd filepath —-进入do文件所在的目录;
  2. do filename.do —-执行do文件,开始仿真

0

FPGA硬件设计

FPGA硬件设计

对与电源方案的设计要注意以下几点:

  1. 器件要供几档电压
  2. 不同电压档的最大电流要求是多少
  3. 不同电压档是否有上电顺序(大部分fpga没有要求)
  4. 电源去耦电容应该如何分配和排布
  5. 电源电压是都需要设计特殊的去耦电路

电源电路

  1. FPGA器件电压分为三类:核心电压,I/O电压,辅助电压(如下载配置电压)
  2. FPGA 的I/O引脚通常会排布多个bank,同一个bank内的所有I/O引脚所提供的I/O电压是共用的,可以给不同的电压提供不同的I/O电压。

时钟电路设计与选型

  1. 系统运行的时钟频率是多少
  2. 是否有内部的时钟管理单元(如pll,dll),它的输入频率范围是多少?(查看器件手册进行确认)
  3. 尽可能选择专用的时钟输入引脚
  4. 时钟走线尽可能短,有条件找好包地处理
    由于FPGA器件内部使用的时钟信号往往不只是给单个寄存器使用,在实际应用中,可能成千甚至更多个寄存器使用同一个时钟信号,这样时钟源到达不同的寄存器间的延迟可能存在较大的偏差(通常称为时钟网络延迟),为了避免延迟过大,FPGA内部有“全局时钟网络的走线池”,通过专用的时钟网络走线,这个时差可以缩短在很小的范围内,对于尾部输入的时钟信号‘只要将晶振产生的信号接到全局时钟引脚,对于内部高速信号,通过工具软件自动识别此类信号,将默认走到‘全局时钟网络上’

复位电路注意事项

  1. 尽可能使用FPGA的专用复位引脚
  2. 上电复位时间的长短需要做好考量。(FPGA是基于ram结构的,他通常需要一颗用于配置的外部rom或FLSH进行上电加载复位时间过短,则分配FPGA没有足够的时间加载配置操作)

配置电路

FPGA和CPLD内部存储介质不同,cpld大多基于prom和flah来实现可编程特性,从新上电后还能够运行固有的配置数据,FPGA大多基于sram来实现可编程特性。点点后,sram数据丢失,因此FPGA通常外挂一个用于保存当前配置数据流和用户的程序的prom和flah芯片,称为配置芯片

0