安卓手机如何打开xdc文件
1. vivado 修改了xdc文件需要重新编译综合吗
vivado 修改了xdc文件需要重新编译综合
Vivado Logic Analyzer的使用
chipscope中,通常有两种方法设置需要捕获的信号。
1.添加cdc文件,然后在网表中寻找并添加信号
2.添加ICON、ILA和VIO的IP Core
第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到
需要捕获的信号。
第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制
ICON,并调用VIO。
与之类似,Vivado也有着两种方法进行设置。
1.在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug
2.添加ILA,VIO的IP Core
第一种方法与chipscope的第一种方法极为类似:
1.都需要综合后才能设置;
2.都需要保留一定的设计层级或者网线名来便于寻找信号;
3.并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado
中是没有mark debug的选项在右键菜单中;
第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相
关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计,
但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。
另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。
这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。
2. 如何打开vivado的debug窗口
用Vivado进行硬件调试,就是要插入ila核,即“集成逻辑分析仪”,然后将想要引出来观察的信号连到这个核的probe上。
首先第一步,需要把想要观测的信号标记出来,即mark_debug,有两种mark_debug的方法,我用verilog写了一个简单的流水灯程序,只有几行代码,如下:
mole main(
input clk,
input rst,
output reg [7:0] led
);
(*mark_debug = "true"*)reg [23:0] counter;
always @(posedge clk) begin
if(rst) begin
counter <= 0;
led <= 8'b00000001;
end
else counter <= counter + 1;
if (counter == 24'hffffff)
led <= {led[6:0],led[7]};
end
endmole
例如,要观察counter信号的波形,那么在第7行定义reg型信号counter时,前面加上(*mark_debug=“true”*),这样就把counter信号标记了出来。如果用vhdl语言实现的话,这句话用该这样写:
signal counter : std_logic_vector (23 downto 0);
attribute mark_debug: string;
attribute mark_debug of counter : signal is "true";
另外添加xdc约束文件,内容如下:
set_property PACKAGE_PIN Y9 [get_ports clk]
set_property PACKAGE_PIN T18 [get_ports rst]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS18 [get_ports rst]
set_property PACKAGE_PIN T22 [get_ports {led[0]}]
set_property PACKAGE_PIN T21 [get_ports {led[1]}]
set_property PACKAGE_PIN U22 [get_ports {led[2]}]
set_property PACKAGE_PIN U21 [get_ports {led[3]}]
set_property PACKAGE_PIN V22 [get_ports {led[4]}]
set_property PACKAGE_PIN W22 [get_ports {led[5]}]
set_property PACKAGE_PIN U19 [get_ports {led[6]}]
set_property PACKAGE_PIN U14 [get_ports {led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
之后run synthesis综合,之后open synthesized design,在左上角选择debug layout,在debug窗口中netlist看到counter信号前面有一个绿色的小蜘蛛,表示counter信号被标记出来了。
这其实是一种比较繁琐的方法,更为方便的方法是,直接综合工程,在之后打开综合设计,在netlist中直接选中想要查看的信号,右键选择mark debug,即可将信号标记出来。
但是采用第一种方式的好处是,如果工程比较复杂的话,一些信号可能会被综合优化掉,加上模块层层实例化,在netlist中可能找不到要观测的信号,这时在代码里面mark_debug,依旧可以将该信号引出来。
3. 打开XDC格式文件
防盗拷CD.你用NERO刻到盘上试试.
4. 小米4kxdcnbh30.0是什么系统
是miui v5的稳定版系统,最近版本是v6的稳定版,可以检查系统更新进行升级,
5. 功能仿真 没有xdc文件为什么需要这么久 vivado
使用vivado isim仿真的方法和过程如下:
1) 测试平台建立;
a) 在工程管理区点击鼠标右键,弹出菜单选择New Source,弹出界面; b) 输入文件名,选择Verilog Test Fixture,打钩add to project,单击NEXT;
c) 选择要仿真的文件,点击NEXT;
d) 点击“FINISH”,就生成一个Verilog测试模块。
ISE能自动生成测试平台的完整构架,包括所需信号、端口声明以及模块调用的实现。所需要完成的工作就是initial….end模块中的“//Add stimulus here”后面添加测试向量生成代码。
这里给出示例测试代码,将其添加于//Add stimulus here处
#100;
SW = 7;
#100;
SW = 11;
#100;
SW = 13;
#100;
SW = 14;
2) 测试平台建立后,在工程管理区将状态设置为“Simulation”;选择要仿真的文件名,
过程管理区就会显示“Isim simlator”;
3) 下拉“Isim simlator”,选择“Simulate Behavioral Model”,单击鼠标右键,现在“Process Properties”可修改仿真远行时间等。
4) 修改后,直接双击“Isim simlator”中的“Simulate Behavioral Model”进行仿真。
检查仿真结果是否达到预期设计目标。
Vivado设计套件,是FPGA厂商赛灵思公司2012年发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。集成的设计环境——Vivado设计套件包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。
6. 智能手机便签文件,后缀名为.pwi,如何在电脑打开
如果需要电脑和手机云同步的便签软件,可以选择使用敬业签云便签,敬业签可在安卓手机、苹果手机、iPad以及Windows电脑上免费安装便签程序同步使用。
记事、提醒以及云同步是敬业签基础功能,免费用户也可以使用,开通付费会员后,还可以安装Mac端同步使用。
7. 如何在CCS3.3下建立基于DSP-BIOS和XDC的工程详解
首先我们要先配置一下XDC工具链,什么叫做配置呢,实际上就是要让这条工具链写入到系统的注册表中间去,下面是整个工具链的配置过程:
1、运行windows命令行工具。
打开compiler选项卡,配置如下:
-g-@"=$(Proj_dir)/xdcconfig/compiler.opt" -pdr -fr"$(Proj_dir)/Debug" -i"$(Proj_dir)" -i"." -i"%BIOSDVSDK_INSTALL_DIR%/examples/common/evmDM6437" -i"%BSL_EVMDM6437_INSTALLDIR%/include" -i"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/inc" -i"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/drivers/inc" -i"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/soc/dm6437/dsp/inc" -i"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/edma3/inc" -d"_DEBUG" -mv6400+
打开linker选项卡,配置如下:
-a -c -m"./Debug/BIOS_XDC_Project_Test.map" -o"./Debug/BIOS_XDC_Project_Test.out" -w -x -i"%BIOS_INSTALL_DIR%/packages/ti/rtdx/lib/c6000" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/i2c_bios_drv.lib" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/palos_bios.lib" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/prev_bios_drv.lib" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/video_bios_drv.lib" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/vpbe_bios_drv.lib" -l"%BIOSDVSDK_INSTALL_DIR%/psp_1_00_02_00/pspdrivers/lib/DM6437/Debug/vpfe_bios_drv.lib"
打开dspbiosbulider选项卡,配置如下:
-Dconfig.importPath="C:/CCStudio_v3.3/bios_5_31_02/packages;"
打开XDC选项卡,配置如下:
--xdcpathsfile="xdcpaths.dat" -tti.targets.C64P -pti.platforms.evmDM6437 -Dconfig.importPath=".../%BIOSDVSDK_INSTALL_DIR%/examples/common/evmDM6437" --tcf
以上配置我也是直接那个例程的配置,当然这里面的配置可以按照自己的需要进行相应的修改以适应自己的工程需求
7、修改DSPBIOS的memory配置需求,因为至少要有一个堆heap(否则会编译出错的),所以我们首先要建立一个堆,DSPBIOS默认的配置中是没有的
8、修改DSPBIOS编译配置
9、编译整个工程
如果建立成功的话就会有上面所示的提示信息,呵呵~~~~~
这样一个完整的基于XDC工具的DSPBIOS工程就建立好了。
8. 如何用vivado将ucf转成xdc
很高兴告诉你!
自从去年10月Xilinx发布ISE147之后,ISE套件便暂时没有了更新计划,相当于进入了软件生命中的“中年”;而当初在2012x版本还作为ISE套件中的一个组件的Vivado,此时已经如早上8、9点钟的太阳一样冉冉升起:因为随着FPGA/SOC制造工艺、硬件单规模和设计方法的不断改进,传统的基于ISE的设计方法已经逐渐不能满足我们的要求了。所以针对新的Artix-7/Kintex-7/Virtex-7芯片,Xilinx都建议我们使用全新设计的Vivado套件来进行开发(使用Spartan-6的筒子可以在新设计中考虑向Artix-7过渡了)。此外,因为ISE套件已经没有升级计划表,所以对新的作系统也无法支持了,例如在Win8/81上面,ISE147几乎无法完美运行,而从Vivado20141版本就开始全面支持了。
直观的来看,我理解的Vivado套件,相当于把ISE、ISim、XPS、PlanAhead、ChipScope和iMPACT等多个独立的套件集合在一个Vivado设计环境中,在这个集合的设计流程下,不同的设计阶段我们采用不同的工具来完成,此时Vivado可以自动变化菜单、工具栏,可以显着提高效率:因为不需要在多个软件间来回切换、调用,白白浪大量的时间。基于Vivado IP集成器(IPI),则把我们对硬件的配置更好地集成到我们的设计中,既极大地提高了对IP的使用和管理,也帮助我们减小了软件和硬件(例如ZYNQ器件的PS)之间的隔阂。Vivado HLS则可以把现有的C代码,在一些特定的规范下直接转换为可综合的逻辑,这也将极大地提高我们实现和移植现有算法的速度。
因为Vivado套件较为复杂,所以先用一个对比测试,来检验一下它们之间的性能差别。采用的测试环境是:
作系统:win7 sp1x64
CPU:I7-4770k,开启超线程,全部超频至43GHz
ISE: 147
Vivado:20141
使用的芯片:ZYNQ系列中的xc7z020-clg400-2(设计全部在PL中实现)
待测试程序:一个用来做实时仿真的模型(算下来有140424行Verilog代码)。为了减小硬盘的延迟影响,作系统和软件都安装在SSD上面,而把工程文件放在RAMdisk上面(因为综合、实现的过程都需要大量的小文件读取作)。
运行的测试:输入正确的工程,但是清理所有工程文件,这样就可以从0开始完成所有的综合、翻译、映射、布局布线和升级bit流文件的所有作;使用的策略则全部用默认策略。
首先,在ISE上运行,测试开始时间是7:33:10,生成bit文件的时间是7:37:01,共花了231秒。
然后,在Vivado上运行。为了方便测试,在Vivado套件里直接导入ISE的工程,源文件都可以正常导入,但是约束文件需要重新配置,因为ISE使用的ucf格式,而Vivado则升级为更先进的xdc格式,需要全部重写约束文件。不过这也不是特别困难的事情,例如管脚约束的转换就比较容易:
例如,ucf为:
NET "gateway_out1[0]" LOC = Y12;
NET "gateway_out1[0]" IOSTANDARD = LVCMOS18;
xdc则为:
set_property PACKAGE_PIN Y12 [get_ports {gateway_out1[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {gateway_out1[0]}]
为了快速转换,用查找/替换可以较快的完成其中的一部分转换。
然后在Vivado中点击reset runs,如图1所示,这样会清除所有潜在的已经生成的结果(清除综合的结果时可以选择自动清除实现的结果)。
图1 reset runs
为了分发挥Vivado套件的潜力,在tcl console里输入下面的脚本:
set_param generalmaxThreads 8
这样就可以分发挥最大的CPU潜力了(例如DRC检查可以使用全部的线程进行并行作)。然后运行产生比特流的作,开始时间是8:15:20,生成bit文件的时间是8:17:12,共花了112秒。
对比ISE的231秒,可以看出Vivado使用的时间只有ISE的485%。俗话说,“时间就是金”,“效率就是生命”,Vivado只用了不到ISE一半的时间就完成了这个复杂工程的全部实现过程,数据非常有说服力。当然Vivado使用的内存貌似比ISE多了几百MB,但是对于现在配置中等的机器都可以达到8GB内存的情况下,这点内存的差距还是可以忽略的。(好马配好鞍,电脑的这点投资和高端的芯片带来的性能提升和time-to-market减小相
9. 添加完xdc文件后生成顶层文件但是io ports中没有io口,请问这是怎么回事 管脚配置是对的。
波特率为9600
工程的网盘下载链接:
Step1新建工程,调用一个zynq核并配置
配置选中这个SD卡,工程做完后会从SD卡启动
将这个SDIO设置为50M
这里选择一个DDR的型号(不同的开发板有所不同),点击OK完成配置
配置完成后的zynq核(这个看起来和配置之前一样)
Step2调用axi_uart核并设置波特率
点击工具栏的AddIP按钮在弹出的搜索框中输入axi_uart,然后选择这个AXIUartlite核双击添加进来
双击这个AXIUartlite核,这里的BaudRate可以选择不同的波特率,我这里选择这个默认的9600(这个波特率可以
根据自己的需求选择),其它的选项都保持默认,点击OK完成配置
Step3axi_uart进行自动连线将IP核和zynq核连接起来
点击这个RunBlockAutomation引出DDR和PS的管脚
点击OK
如下图所示
点击这个RunConnectionAutomation将所有的模块连接起来
在弹出的对话框中勾选全部,点击OK
连接成功后如下图所示
Step4生成综合文件和生成顶层文件
综合
生成顶层文件
Step5新建xdc文件并设置管脚
set_propertyPACKAGE_PINT11[get_portsuart_rtl_rxd]
set_propertyPACKAGE_PINT10[get_portsuart_rtl_txd]
set_propertyIOSTANDARDLVCMOS33[get_portsuart_rtl_rxd]
set_propertyIOSTANDARDLVCMOS33[get_portsuart_rtl_txd]
Step6生成bit文件,导出硬件配置,打开SDK
点击GenerateBitstream生成bit文件
File->Export->ExportHardware导出硬件配置
勾选,点击OK
打开SDK
Step7新建一个fsbl
File-->ApplicationProject
点击Next
点击Finish
Step8新建一个axi_uart_test工程
File-->ApplicationProject
点击Next
选择hello_world模板,点击Finish
然后将这个主程序复制到这个新建hello_world模板里
/******************************************************************************
*
*Copyright(C)2002-2015Xilinx,Inc.Allrightsreserved.
*
*Permissionisherebygranted,freeofcharge,toanypersonobtaininga
*(the"Software"),todeal
*,
*touse,,modify,merge,publish,distribute,sublicense,and/orsell
*copiesoftheSoftware,
*furnishedtodoso,:
*
*
*.
*
*:
*(a)runningonaXilinxdevice,or
*(b).
*
*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR
*IMPLIED,,
*.INNOEVENTSHALL
*XILINXBELIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,
*WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOF
*
*SOFTWARE.
*
*Exceptascontainedinthisnotice,
*,useorotherdealingsin
*.
*
******************************************************************************/
/*****************************************************************************/
/**
*
*@filexuartlite_low_level_example.c
*
*-leveldriverfunctions
*andmacrosoftheUartLitedriver(XUartLite).
*
*@note
*
*
*transmittedwillbereceived.
*
*MODIFICATIONHISTORY:
*<pre>
*VerWhoDate Changes
*--------------------------------------------------------------------------
*1.00brpm04/25/02Firstrelease
*1.00bsv06/13/
*2.00aktn10/20/
* forcodingguidelines.
*3.2ms01/23/17Addedxil_
*ensurethat"Successfullyran"and"Failed"strings
*areavailableinallexamples.Thisisafixfor
*CR-965028.
*</pre>
******************************************************************************/
/*****************************IncludeFiles*********************************/
#include"xparameters.h"
#include"xstatus.h"
#include"xuartlite_l.h"
#include"xil_printf.h"
/**************************ConstantDefinitions*****************************/
/*
*
*xparameters.hfile.
*.
*/
#defineUARTLITE_BASEADDR XPAR_UARTLITE_0_BASEADDR
/*
*
*andreceivedwiththeUartLite,
*.
*/
#defineTEST_BUFFER_SIZEsizeof(uart_data)
/****************************TypeDefinitions*******************************/
/*****************Macros(InlineFunctions)Definitions*********************/
/**************************FunctionPrototypes******************************/
intUartLiteLowLevelExample(u32UartliteBaseAddress);
/**************************data******************************/
structsensor_register{
u8value;
};
staticconststructsensor_registeruart_data[]={
{0x01},
{0x02},
{0x03},
{0x04},
{0x05},
{0x06},
{0x07},
{0x08},
{0x09},
{0x10},
{0x11},
{0x12},
{0x13},
{0x14},
{0x15},
{0x16},
{0x17},
};
/*****************************************************************************/
/**************************VariableDefinitions*****************************/
/*
*
*withtheUartLite.
*/
u8SendBuffer[sizeof(uart_data)];/*BufferforTransmittingData*/
u8RecvBuffer[sizeof(uart_data)];/*BufferforReceivingData*/
/*****************************************************************************/
/**
*
*Mainfunctiontocalltheexample.
*
*@param None.
*
*@return XST_SUCCESSifsuccessful,XST_FAILUREifunsuccessful.
*
*@note None.
*
******************************************************************************/
intmain(void)
{
intStatus;
/*
*RuntheUartLiteLowlevelexample,specifytheBaseAddressthatis
*generatedinxparameters.h.
*/
Status=UartLiteLowLevelExample(UARTLITE_BASEADDR);
if(Status!=XST_SUCCESS){
xil_printf("UartlitelowlevelExampleFailed ");
returnXST_FAILURE;
}
xil_printf(" ");
returnXST_SUCCESS;
}
/*****************************************************************************/
/**
*
*-level
*drivermacrosandfunctions.
*thedatathroughtheUartLite.
*.
*
*@param
* andistheXPAR_<UARTLITE_instance>_BASEADDRvaluefrom
* xparameters.h.
*
*@return XST_SUCCESSifsuccessful,XST_FAILUREifunsuccessful.
*
*@note None.
*
******************************************************************************/
intUartLiteLowLevelExample(u32UartliteBaseAddress)
{
intIndex;
/*
*
*thereceivebufferbytestozero.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
SendBuffer[Index]=uart_data[Index].value;
RecvBuffer[Index]=0;
}
/*
*Sendtheentiretransmitbuffer.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
XUartLite_SendByte(UartliteBaseAddress,SendBuffer[Index]);
}
/*
*Receivetheentirebuffer'sworth.NotethattheRecvBytefunction
*blockswaitingforacharacter.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
RecvBuffer[Index]=XUartLite_RecvByte(UartliteBaseAddress);
}
/*
*
*datawascorrectlyreceived.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
if(SendBuffer[Index]!=RecvBuffer[Index]){
returnXST_FAILURE;
}
}
returnXST_SUCCESS;
}
复制完成后如下图所示
这里程序做一些基本的讲解:
这里是uart发送数据部分,可以填充不同的数据
/**************************data******************************/
structsensor_register{
u8value;
};
staticconststructsensor_registeruart_data[]={
{0x01},
{0x02},
{0x03},
{0x04},
{0x05},
{0x06},
{0x07},
{0x08},
{0x09},
{0x10},
{0x11},
{0x12},
{0x13},
{0x14},
{0x15},
{0x16},
{0x17},
};
下面这个接收和发送Buffer里都有这个sizeof(uart_data),这个函数主要计算这个定义的数组里放了多少个数据
(这样就不用每次加数据要改这个发送和接收Buffer的大小了)
u8SendBuffer[sizeof(uart_data)];/*BufferforTransmittingData*/
u8RecvBuffer[sizeof(uart_data)];/*BufferforReceivingData*/
这里对发送Buffer和接收Buffer进行填充
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
SendBuffer[Index]=uart_data[Index].value;
RecvBuffer[Index]=0;
}
这个是发送,发送Buffer里的数据
/*
*Sendtheentiretransmitbuffer.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
XUartLite_SendByte(UartliteBaseAddress,SendBuffer[Index]);
}
这个是接收外面发送进来的数据
/*
*Receivetheentirebuffer'sworth.NotethattheRecvBytefunction
*blockswaitingforacharacter.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
RecvBuffer[Index]=XUartLite_RecvByte(UartliteBaseAddress);
}
这里对数据进行校验看发送和接收的是不是一样,这个一般可以用rx和tx回环来进行验证
/*
*
*datawascorrectlyreceived.
*/
for(Index=0;Index<TEST_BUFFER_SIZE;Index++){
if(SendBuffer[Index]!=RecvBuffer[Index]){
returnXST_FAILURE;
}
}
Step9生成一个BOOT.bin文件放到SD卡里运行
右击工程选择CreateBootImage
点击CreateImage生成BOOT.bin文件
将这个BOOT.bin文件拷贝到SD卡插到开发板上,然后将这个rx和tx端连接一个带有串口转换芯片的uart线,这样就可以
从串口调试助手打印uart发送的数据(因分配的管脚是fpga管脚是CMOS电平,电脑是TTL电平所以要用一个带有串口
转换芯片的uart线就可以使用了)
上电后串口打印的输出数据
将数据区域填充不同的数据
/**************************data******************************/
structsensor_register{
u8value;
};
staticconststructsensor_registeruart_data[]={
{0x01},
{0x02},
{0x03},
{0x04},
{0x05},
{0x06},
{0x07},
{0x08},
{0x09},
{0x10},
};
此时的串口打印的输出数据
---------------------
10. 官方例程给了四个文件两个tcl文件,一个xdc文件,一个v文件,能在vivado下还原出整个工程吗怎么做呢
在这之前,你先得点开那个tcl文件,看是哪个版本的vivado,因为不同版本的vivado用的ip核可能不同,所以先得vivado版本一致;然后进vivado,在tcl console下,输入pwd,查看当前路径,然后将路径用cd指令指到你所在的文件夹下,如cd e:/vivado_workspace,然后再pwd查看下,如果路径对了, 最后vivado界面下tools下run tcl script,路径指到这个system_project.tcl。