<?xml version="1.0" encoding="utf-8" ?>
<!-- generator="FEEDCREATOR_VERSION" -->
<rss version="2.0" xmlns:sns="http://blog.sina.com.cn/sns">
    <channel>
        <title>金曦的技术BLOG</title>
        <description></description>
        <link>http://blog.sina.com.cn/fpga</link>
        <lastBuildDate>Sun, 27 Jul 2008 08:37:06 GMT+8</lastBuildDate>
        <generator>FEEDCREATOR_VERSION</generator>
        <language>zh-cn</language>
        <copyright>Copyright 1996 - 2008 SINA Inc. All Rights Reserved.</copyright>
        <pubDate>Sun, 27 Jul 2008 00:37:06 GMT+8</pubDate>
        <item>
            <title>入梦 zz</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d0100a30h.html</link>
            <description><![CDATA[<p>入梦</P>
<p>&nbsp;&nbsp; 卞之琳</P>
<p><br />
设想你自己在小病中<br />
（在秋天的下午）<br />
望着玻璃窗片上<br />
灰灰的天与疏疏的树影，<br />
枕着一个远去了的人<br />
留下的旧枕，<br />
想着枕上依稀认得清的<br />
淡淡的湖山<br />
<br />
仿佛旧主的旧梦的遗痕，<br />
仿佛风流云散的<br />
旧友的渺茫的行踪，<br />
仿佛往事在褪色的素笺上<br />
正如历史的陈迹在灯下<br />
老人面前昏黄的古书中……<br />
你不会迷失吗<br />
在梦中的烟水</P>]]></description>
            <author>金曦</author>
            <category>其它</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d0100a30h.html#comment</comments>
            <pubDate>Thu, 10 Jul 2008 09:06:19 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d0100a30h.html</guid>
        </item>
        <item>
            <title>EDK简单使用流程（5）</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d010091uj.html</link>
            <description><![CDATA[<div STYLE="TEXT-INDENT: 2em">
这两天在看一本书《编码的奥秘》。从两个邻居小孩熄灯后用摩尔斯密码聊天，写到海豚的二进制、继电器、电报、触发器、存储器、总线、操作系统，最后写到图像化革命。这本书是写<font FACE="宋体">计算机软件、硬件的形成及发展的，但是语言通俗风趣，读来一点也不觉得枯燥。这个和EDK有点远，言归正传，今天想写写怎样通过PPC上跑的软件程序控制挂在总线上的IP
Core。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
如果需要对IPCore进行操作，必须为IPCore添加地址，这个地址对应IP
Core内部的寄存器地址，当总线的地址线的值等于某个寄存器的地址时，该寄存器将之后总线数据线发送的数据接收。然后IP
Core根据收到的数据进行工作。也就是说只要对IPCore的地址写数据就可以操作IPCore。EDK中对IPCore的操作提供了很多函数，这些函数是封装了一层一层又一层，其实最基本的函数就是
XIo_In32 XIo_In16 XIo_In8 XIo_Out32 XIo_Out16
XIo_Out8，这些在xio.c中可以看到函数原型。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d010091uj.html#comment</comments>
            <pubDate>Fri, 04 Apr 2008 02:19:49 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d010091uj.html</guid>
        </item>
        <item>
            <title>EDK简单使用流程（4）</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01009011.html</link>
            <description><![CDATA[<div>好久没写了......</DIV>
<div>今天写怎么向工程中添加EDK中提供的IPcore和MHS文件。</DIV>
<div>通过向导建工程后，System Assembly
View1中是工程中硬件的配置，这些信息都可以在MHS文件中找到。工程中<font FACE="宋体">的</FONT>硬件配置用的是EDK提供的IP
Core 或
如果板子提供lib也可能包含lib中的IPcore。工程建完后，如果还需要添加IP
Core，可以在左边IP Catalog中找到需要的IP Core对其双击或右键Add
IP。这只是把IP Core加入工程，还需对其进行总线连接(Bus
Interface)、端口连接(Ports)、地址分配(Addresses)。对于不同的IPCore
这三项不是必须的，但是如果进行了总线连接地址就是必须分配的，因为通过总线对IP
Core进行操作必须有地址。比如GPIO这三项都有；BRAM
Controler有Bus、address没有ports；如果自己写个IPCore（自定义IP
Core以后写，我打了好多伏笔啊~~~）不需要与总线通信就没BUs、Address有Ports。连接方法很简单，看看界面就会了，我在这就不写了。</DIV>
<div>
添加IPCore后如果对其使用方式不了解，可以看右键菜单中的PDF和view api
documentation(在System Assembly
View1中右键才有)。或者直接到EDK安装目录下的<font FACE="宋体">hw\XilinxProcessorIPLib\pcores和<font FACE="宋体">sw\XilinxProcessorIPLib\drivers中找HDL和C。</FONT></FONT></DIV>
<div>MHS（<font FACE="宋体">Microprocessor Hardware
Specification）中包含嵌入式处理器系统的配置信息、总线构架、外围设备、处理器、连接、地址。MHS所提供的信息在System
Assembly
View1中都包含了，不过直接编辑MHS文件更方便（个人观点）。语法不是很难，看看已有的MHS就可以了。在第一个<font FACE="宋体">BEGIN之前的是外部端口，这些端口可以连接FPGA的引脚，就是说可以在UCF中出现的引脚，一般如果是EDK生成的外部引脚名字都是*_pin。如果要添加外部引脚可以在System
Assembly View1-&gt;ports 中在对应引脚的下拉菜单中选make external
或者
直接在mhs文件中照着其他PORT的格式写一条语句。外部端口之后是N个BEGIN-END，N等于工程中用的IPCOre的数量。BEGIN-END间的语句是对IPCore进行设置，设置方式可以在IPcore的PDF中找到。psf_rm.pdf
的 chapter 2是对MHS的介绍。</FONT></FONT></DIV>
<div>&nbsp;</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01009011.html#comment</comments>
            <pubDate>Sun, 30 Mar 2008 12:43:37 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01009011.html</guid>
        </item>
        <item>
            <title>关于双核通信</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008yv4.html</link>
            <description><![CDATA[<div>
&nbsp;本想把双核通信写的详细些，不过有些步骤感觉自己写不明白。xilinx的xapp996是介绍双核通信的，建议大家看看，比我写的好多了。xapp996有个2M多的说明文档和13M多的例子。上不了外网的网友可以联系我，我把例子发给你。我的邮箱
<a HREF="mailto:sk2400@163.com">sk2400@163.com</A></DIV>
]]></description>
            <author>金曦</author>
            <category>其它</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008yv4.html#comment</comments>
            <pubDate>Thu, 27 Mar 2008 02:26:22 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008yv4.html</guid>
        </item>
        <item>
            <title>找公司工作，找学校读博</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008wvl.html</link>
            <description><![CDATA[<div>
&nbsp;趁着blog有人气，为自己做个广告。想找个地方工作，或是读博。哪位看了我的blog，觉得我还行就联系我<a HREF="mailto:sk2400@163.com">sk2400@163.com</A></DIV>
<div>
&nbsp;我是东北大学计算机研究生，今年7月毕业。做过的东西blog里写了一少部分，还有些“高深的”没写。软件善用C，我是计算机的吗，C就是我的母语，我的汉语还没C流利。硬件用VHDL，写了快3年了，写VHDL的潜规则知道些，对综合有一定的认识，对FPGA的了解不只停留在HDL级。工作要求是感兴趣就好。读博要求是想做可重构系统相关的研究。其他的都可商量。</DIV>
]]></description>
            <author>金曦</author>
            <category>其它</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008wvl.html#comment</comments>
            <pubDate>Thu, 20 Mar 2008 17:30:30 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008wvl.html</guid>
        </item>
        <item>
            <title>^_^</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008wve.html</link>
            <description><![CDATA[<div>
&nbsp;最近收到很多网友的email和纸条，很感谢各位对我blog的关注。这几天比较忙，没时间写blog了。过了这几天我会继续写的。<font COLOR="#CC3333"><strong>EDK的使用</STRONG></FONT>我会继续写下去，还有网友说的<font COLOR="#CC3333"><strong>回读</STRONG></FONT>和<font COLOR="#CC3333"><strong>双核通信</STRONG></FONT>我会再写的详细些。重点标记一下，要不就忘了。<img SRC="http://blogimg.sinajs.cn/images/control/face/001.gif"></IMG></DIV>
<div>&nbsp;</DIV>
]]></description>
            <author>金曦</author>
            <category>其它</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008wve.html#comment</comments>
            <pubDate>Thu, 20 Mar 2008 17:00:29 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008wve.html</guid>
        </item>
        <item>
            <title>通过ipif的中断不会用</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008uq8.html</link>
            <description><![CDATA[<div>
&nbsp;自定义IPCore一般会生成两个文件user_logic和core名字.VHD。user_logic是用户逻辑，其与总线连接的信号和中断都要经过ipif，可是中断信号ms在ipif中做了很复杂的处理，在user_logic中无法向外发中断。无奈只能将user_logic的中断信号绕过ipif，直接连到中断控制器上。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008uq8.html#comment</comments>
            <pubDate>Tue, 18 Mar 2008 16:30:21 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008uq8.html</guid>
        </item>
        <item>
            <title>EDK简单使用流程（3）</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008sx1.html</link>
            <description><![CDATA[<div STYLE="TEXT-INDENT: 2em">
继续我的长篇“简单使用流程”。一不小心写了这么长。</DIV>
<div STYLE="TEXT-INDENT: 2em">
今天该写建工程向导中的软件初始设置。</DIV>
<div STYLE="TEXT-INDENT: 2em">7、software setup&nbsp;
STDIN、STDOUT选择串口就行（第5步要选择串口），这样程序中的print和xil_printf就可以在串口上输出。在EDK中一般不用printf这个函数，这个函数在代码段中占几十K，如果只输出固定的字符串用print，需要%d
%s之类的用xil_printf这两个省资源。如果设计中代码段的memory足够大，也可以用printf。Boot
Memory
就是程序在哪里启动了（ppc的启动地址是0xFFFFFFFC）。窗口下边是要生成的两个软件工程。建议至少选一个，这样就不用自己建了。</DIV>
<div STYLE="TEXT-INDENT: 2em">8、configure&nbsp;XXXXXX
test application
如果第7步中选择生成软件工程会出现这个窗口，这个窗口是对软件工程进行配置的。根据需要选。</DIV>
<div STYLE="TEXT-INDENT: 2em">
9、之后就没什么要选的了。到“finish”这个向导就结束了。<font COLOR="#0000CC">向导中的设置在工程建完后都是可以改的。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
向导建完后，这个工程就有了在FPGA上运行的基本环境。之后可以向工程中添加其它的功能（添加功能明天写），没需要也可以不添加。</DIV>
<div STYLE="TEXT-INDENT: 2em">
如果当前的硬件配置是我们所需要的，选择菜单“Hardware"-&gt;"Generate
Netlist" 如果没错之后选择“Hardware"-&gt;"Generate Bitstream"，
或者直接选择&nbsp;“Hardware"-&gt;"Generate
Bitstream"，EDK会自动将“Hardware"-&gt;"Generate
Netlist"在“Hardware"-&gt;"Generate
Bitstream"前运行，这个过程会很长很长根据工程配置和电脑配置的不同可能是十几分钟到几十分钟。可以用这个时间改软件，之前那两个generate都是对硬件的，和软件无关。</DIV>
<div STYLE="TEXT-INDENT: 2em">
如果在第7步中选择生成软件工程，这时在界面左边的"project information
area"-&gt;"Applications" 中会出现你选择生成的软件工程和Default
...（FPGA内有几个核就有几个default...）。工程标记上有红色叉的是不被初始到bit文件中的，可以在右键菜单中改这个设置“make
to 。。。”。一个ppc上一次只能有一个“make to
..."的软件工程。“sources”里是程序，c语言的，默认生成的软件工程，不用改下载后就能看到板子上的现象。</DIV>
<div STYLE="TEXT-INDENT: 2em">经过N久的等待在界面下方的“console
window”中出现了“Done”，说明硬件部分已经生成完了，在工程目录\<font FACE="宋体">implementation
下生成了一个 工程名.bit
文件，这个是只包含硬件配置的bit文件。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
下面是对软件工程的操作，菜单"software"-&gt;"generate lib..."
生成库，"software"-&gt;"Build all ..."
。之后时间软件生成的elf文件和硬件的bit文件整合成download.bit，菜单"Device
configuration"-&gt;"update
bitstream"，生成的download.bit也在<font FACE="宋体">implementation
文件夹中。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
把板子的电源、串口和下载线连好，"Device
configuration"-&gt;"download bitstream"，“console
window”中出现done时download.bit就被下载到板子上了。程序中如果有print
或xil_printf可以用串口工具看输出。</DIV>
<div STYLE="TEXT-INDENT: 2em">明日待续......</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008sx1.html#comment</comments>
            <pubDate>Thu, 13 Mar 2008 04:40:51 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008sx1.html</guid>
        </item>
        <item>
            <title>EDK简单使用流程（2）</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008sm4.html</link>
            <description><![CDATA[<div>
&nbsp;昨天说到使用向导建工程中选目标板的步骤.<font FACE="宋体">大厂商的开发板都提供xbd文件，有的还提供lib。xbd文件拷到EDK安装目录下的board中，路径参考board中其他xbd文件路径。lib中除了xbd还有针对板子IP
Core的硬件逻辑和软件程序。硬件逻辑拷到EDK\hw\XilinxProcessorIPLib\pcores，软件拷到EDK\sw\XilinxProcessorIPLib\drivers。考完后启动XPS。再按照前两部写的做到选板子，在下拉列表中选使用的板子，我们实验室用的最大的板子是xilinx的XUP...
。如果没xbd就选下面的".... for a custom
board"。之后的步骤都以XUP为例。<br/>
3、select processor&nbsp;
MicroBlaze是软核，只要FPGA够大就能配置出软核。PowerPC是在FPGA内固定的硬核，只有部分系列的FPGA内有硬核，XUP上使用的是包含两个硬核的V2P30。所以这里选哪个都可以，我们实验室一直用的是PowerPC。<br/>

4、configure PowerPC system wide setting根据需要选pocessor 和
bus的时钟频率。Debug I/F选 FPGA
JTAG，有了这个可以用xmd调processor上的程序。Cache
setup没什么特殊需要就不用选了。还有就是选ocm的大小，这个就说来话长了。processor上运行的程序必须有个memory进行存储，就像pc机中的cpu和内存。PowerPC的程序可以放在片内的iocm和docm
或plb_bram_if_cntlr连接的BRAM（之后简称plb_bram）中或片外的存储器。这里要提到FPGA内的一种资源BRAM，一块FPGA内一般有若干块BRAM，分部在FPGA各处。上面说的iocm
docm
plb_bram都是由BRAM配置而成。V2P30的datasheet中说其内部包含136*18Kbit的BRAM。但是这些bit不全是EDK能用的，每块BRAM是18Kbit，但只能配置成2KByte。就是说v2p30中能用的BRAM有136*2KByte=272KByte。除了之前说的各种片内memory需要用BRAM外，有的IPCore也要用BRAM，例如HWICAP。所以做工程时要对BRAM进行合理分配。选ocm的大小根据程序的大小，或不选，在之后的步骤里选择plb_bram的大小，将程序放到plb_bram中。</FONT></DIV>
<div>5、configure IO Interface
选板子上的外设，需要什么选什么，EDK中从工程生成可下载的问大约要十多分钟到二十几分钟（电脑配置双核
1G）。选的越多生成的就越慢。</DIV>
<div>6、add internal
peripherals&nbsp;这步填的plb_bram_if_cntlr是用来连接plb_bram的。就是第四步中提到的用于存程序的memory。</DIV>
<div>
到此硬件部分的初始配置就完了，之后就是软件的了。明天再写。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008sm4.html#comment</comments>
            <pubDate>Wed, 12 Mar 2008 17:14:09 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008sm4.html</guid>
        </item>
        <item>
            <title>EDK简单使用流程（1）</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008se1.html</link>
            <description><![CDATA[<div>
&nbsp;EDK的使用方法我是已经讲了一遍一遍又一遍，以后还要继续讲下去。这里简单写一下使用的步骤，希望师弟、师妹们在听我讲的云里雾里后看看这篇blog。</DIV>
<div>&nbsp;xilinx
fpga的基本开发工具是ISE，ISE包括FPGA开发所需要的大部分工具。后来由于FPGA内有了硬核（powerpc）和可配置的软核（MicroBlaze），ISE的功能无法满足对软硬核开发的需求，所以出现了EDK。EDK可以同时配置FPGA内的硬件逻辑（*.mhs文件中是硬件配置信息）和跑在软硬核上的软件程序（*.mss文件中是软件配置信息）。EDK提供的图像化界面可以使用户方便的修改mhs和mss的配置信息。每个EDK工程包含一种硬件配置和若干个软件工程。同一硬件配置上的软件工程不能同时有效。下面以EDK9.1为例简单介绍使用流程：</DIV>
<div>1、打开Xilinx Platform Studio，会弹出一个小窗口。选第一项(Base
System Builder
wizard)新建一个EDK工程，然后选择工程目录，这里要自己建工程文件夹。</DIV>
<div>2、base system builder-welcome 窗口选"I would like to create a
new design".之后是选目标板。这个地方比较麻烦，明天再写...</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008se1.html#comment</comments>
            <pubDate>Tue, 11 Mar 2008 15:59:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008se1.html</guid>
        </item>
        <item>
            <title>opb_timer 实现系统时钟</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008ryr.html</link>
            <description><![CDATA[<div>&nbsp;<font FACE="宋体">项目需要一个系统时间，uc本身没有系统时间。用硬件做太占资源，软件做误差太大，用ds的时间芯片估计没时间调了。最后想了个折中的办法，用EDK中提供的opb_timer，大约1s触发一次中断，在中断处理函数中进行以s为单位的计时，误差是不小，但我们的项目对这个时间误差还可以忍受。</FONT></DIV>
<div><font FACE="宋体">MHS</FONT></DIV>
<div><font FACE="宋体">BEGIN opb_timer<br/>
&nbsp;PARAMETER INSTANCE = opb_timer_0<br/>
&nbsp;PARAMETER HW_VER = 1.00.b<br/>
&nbsp;PARAMETER C_BASEADDR = 0x20050000<br/>
&nbsp;PARAMETER C_HIGHADDR = 0x200503FF<br/>
&nbsp;BUS_INTERFACE SOPB = opb_v20_0<br/>
&nbsp;PORT CaptureTrig0 = net_gnd<br/>
&nbsp;PORT Interrupt = opb_timer_0_Interrupt<br/>
END</FONT></DIV>
<div>&nbsp;</DIV>
<div>程序</DIV>
<div><font FACE="宋体">#include "xtmrctr_l.h"</FONT></DIV>
<div><font FACE="宋体"><br/>
&nbsp;XTmrCtr_mSetLoadReg(XPAR_OPB_TIMER_0_BASEADDR, 0,
100000000 - 2);//100M时钟，计数后位1s</FONT></DIV>
<div><font FACE="宋体"><br/>
&nbsp;XIntc_RegisterHandler(XPAR_OPB_INTC_0_BASEADDR,
XPAR_OPB_INTC_0_OPB_TIMER_0_INTERRUPT_INTR,
(XInterruptHandler)timer_int_handler, (void
*)XPAR_OPB_TIMER_0_BASEADDR);</FONT></DIV>
<div><br/>
&nbsp;XTmrCtr_mSetControlStatusReg(XPAR_OPB_TIMER_0_BASEADDR,
0, XTC_CSR_INT_OCCURED_MASK | XTC_CSR_LOAD_MASK );</DIV>
<div><br/>
&nbsp;XIntc_mEnableIntr(XPAR_OPB_INTC_0_BASEADDR,
XPAR_OPB_TIMER_0_INTERRUPT_MASK);</DIV>
<div><br/>
&nbsp;XTmrCtr_mSetControlStatusReg(XPAR_OPB_TIMER_0_BASEADDR,
0, XTC_CSR_ENABLE_TMR_MASK | XTC_CSR_ENABLE_INT_MASK |
XTC_CSR_AUTO_RELOAD_MASK | XTC_CSR_DOWN_COUNT_MASK);</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008ryr.html#comment</comments>
            <pubDate>Mon, 10 Mar 2008 15:41:00 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008ryr.html</guid>
        </item>
        <item>
            <title>ppc的vector放置地址</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008r0o.html</link>
            <description><![CDATA[<div>
&nbsp;今天将别人移植完的ucos，整合到自己的工程中，出现了一个很奇怪的错误。ppc的.vector的开始地址要求放到64K对齐的位置。开始时将.vector和程序所有的段都放在plb_bram中该bram的地址是0xFFFF0000--0xFFFFFFFF,vector放在0xFFFF0000处。这个确实是64K地址对齐处。但是下载程序发现中断没起来。后来在工程中加入iocm和docm，将vector单独放在plb_ram(0x00000000--<font FACE="宋体">0x00003fff</FONT>)中，其他段放在iocm和docm中。这次下载后程序运行正常了。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008r0o.html#comment</comments>
            <pubDate>Fri, 07 Mar 2008 16:30:53 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008r0o.html</guid>
        </item>
        <item>
            <title>9.1无法生成ace 双核通信实现及调试</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008qky.html</link>
            <description><![CDATA[<div>
&nbsp;为了用9.1i生成ace文件，在xilinx的网站上写了ISE9.1
sp3和EDK9.1 sp2。安装ISE9.1 sp3时一切正常，安装EDK9.1
sp2后发现EDK无法启动。提示：</DIV>
<div>
<p><font FACE="宋体" COLOR="#CC3333">FATAL_ERROR:GuiUtilities:Gq_Application.c:578:1.17 - This
application has discovered an exceptional condition from which it
cannot recover. Process will terminate. For more information on
this error, please consult the Answers Database or open a WebCase
with this project attached at
http://www.xilinx.com/support.</FONT></P>
<p><font FACE="宋体">在网站上也没找到这个问题的解决办法，只能把sp卸载了，卸载后用EDK生成netlist，发现ISE也出问题了，提示spartan3a的什么什么没有安装（郁闷啊<img SRC="http://blogimg.sinajs.cn/images/control/face/013.gif"></IMG></FONT>）。我的解决办法是把EDK和ISE都卸载了，不能自动卸载的文件夹一定要手动删除，否则安装后还是提示spartan3a的什么什么问题，然后重新安装。用9.1生成ace可能是不行了，开始下载8.1.</P>
<p>&nbsp;</P>
<p>今天做了v2p30内的两个核通过共享ram通信，步骤如下：</P>
<p>
1、建个工程，一般默认是使用ppc405_0。ppc405_0的总线都已经默认连接完，不用再修改。</P>
<p>
2、为ppc405_1添加plb、plb2opb、opb、某种ram和需要的外设。地址需要设置，0xFFFFFFFC在启动ram中。opb外设的地址要包含在plb2opb的地址范围中。连接ppc405_1
需要的引脚，尤其是时钟引脚。</P>
<p>
3、建两个核的共享ram。分别在两个核的plb上添加plb_bram_if_cntlr，并分配地址。之后加一个共享的bram，将该bram的porta和partb分别连接到刚刚添加的两个plb_bram_if_cntlr上。</P>
<p>
4、新建个软件工程，或是将某个已有的软件工程的目标处理器改成PPC405_1。</P>
<p>基本上这样就能用了。</P>
<p>&nbsp;</P>
<p>
V2P30有两个ppc核但板子上只提供了一个串口，调试起来很麻烦。我开始的做发是想用同一个串口，调试哪个核时，就把这个串口接到哪个上。但是没有连接串口的ppc在编译软件工程时出现问题，因为print和xil_printf是要写到串口上的。所以我在工程中做了两个串口，分别连到两个ppc的opb上，在ucf中选择把哪个串口绑定到物理串口上。</P>
<p>&nbsp;</P>
<p>&nbsp;</P>
</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008qky.html#comment</comments>
            <pubDate>Thu, 06 Mar 2008 10:21:27 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008qky.html</guid>
        </item>
        <item>
            <title>DDR上跑软件部分</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008q7d.html</link>
            <description><![CDATA[<div>
&nbsp;XUPVIIP支持从CF卡启动。将硬件的bit文件和软件elf文件作为输入文件，生成ace文件，这个文件拷到cf卡上，调整板子上的开关设置，当板子上电时通过systemace方式将cf卡中的ace文件加载到FPGA上。当软件部分需要跑在FPGA外部的存储器上时，用ace加载更方便，不需要bootload或xmd。不过我现在使用的版本好像无法正确生成ace文件（在
非官方网站中查到的资料），正在xilinx网站下补丁（xilinx的FPGA更新速度是相当快的。这从ISE和EDK更新的速度就可以看出来，2005年时我还是6.x，现在的版本已经到9.2了，而且还有N个sp，每个sp的大小还是以百兆为单位的。就这更新速度还赶不上物理器件的更新速度，因为FPGA支持systemace了，可我用的9.1还不支持
:P）。明天下完补丁，再具体写ace文件怎么生成。</DIV>
<div>
今天做了个工程，将软件程序放到DDR上跑。有几点需要注意的：</DIV>
<div>
1、ppc的启动地址0xFFFFFFFC要指定到内部的BRAM中，且该BRAM的需要16KB。</DIV>
<div>
2、.boot0&nbsp;和.boot要放到包含0xFFFFFFFC的BRAM中，其他段放到DDR中，否则报错。</DIV>
<div>3、选择ppc405_0_bootloop为make to initialize BRAMs</DIV>
<div>
4、将生成的bit下载，此时没有软件程序，因为下载的只是包含硬件信息的bit文件，DDR中的程序要通过xmd下载。</DIV>
<div>5、打开xmd，敲命令</DIV>
<div>&nbsp;&nbsp; connnect ppc
hw&nbsp;&nbsp;&nbsp;&nbsp;
连接ppc以hw硬件的方式</DIV>
<div>&nbsp;&nbsp; dow
executable.elf&nbsp; 下载elf文件</DIV>
<div>&nbsp;&nbsp;
con&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
运行elf</DIV>
<div>
不过用这种方法把以前运行正常的工程xmd到FPGA内就变的不好用了，估计是硬件部分先配置完了，之后再配置软件带来的问题。也许用ace启动就没这样的问题了。继续试验......</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008q7d.html#comment</comments>
            <pubDate>Wed, 05 Mar 2008 10:07:44 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008q7d.html</guid>
        </item>
        <item>
            <title>XUPVIIP SlideShow</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008pv6.html</link>
            <description><![CDATA[<div>&nbsp;<font FACE="宋体">SlideShow是xilinx网站上提供的针对XUPVIIP用于显示CF中BMP的EDK例子。这个例子中提供一个IP
Core <font FACE="宋体">plb_tft_cntlr_ref_v1_00_d，用于将缓存于DDR中的BMP显示在CRT或LCD上。这个core和系统的连接如下：</FONT></FONT></DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;
PPC&nbsp;&nbsp;&nbsp;</DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||</DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;
\/</DIV>
<div>
DDR&lt;=PLB=&gt;PLB2OPB=&gt;OPB=&gt;OPB=&gt;OPB2DCR=&gt;DCR=&gt;<font FACE="宋体">plb_tft_cntlr_ref</FONT></DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
||</DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/</DIV>
<div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;=======================================</DIV>
<div><font FACE="宋体">plb_tft_cntlr_ref通过DCR控制，然后以PLB
master的方式访问DDR。</FONT></DIV>
<div>
DCR的地址线是10bit，OPB的地址线是32bit，在OPB2DCR中OPB地址线<font FACE="宋体">的20
to 29（OPB地址线是0 to 31）映射到DCR的10bit地址线上。</FONT></DIV>
<div>MHS文件中plb2opb_bridge要如下写：</DIV>
<div><font FACE="宋体">BEGIN plb2opb_bridge<br/>
&nbsp;PARAMETER INSTANCE = plb2opb<br/>
&nbsp;PARAMETER HW_VER = 1.01.a<br/>
&nbsp;PARAMETER C_DCR_INTFCE =&nbsp;1
#DCR的地址范围在C_RNG1_BASEADDR&nbsp;<br/>
&nbsp;PARAMETER C_NUM_ADDR_RNG
=&nbsp;2&nbsp;#该核有两个地址范围RNG0
RNG1<br/>
&nbsp;PARAMETER C_RNG0_BASEADDR = 0x40000000<br/>
&nbsp;PARAMETER C_RNG0_HIGHADDR = 0x7fffffff<br/>
&nbsp;PARAMETER C_RNG1_BASEADDR = 0xD0000000<br/>
&nbsp;PARAMETER C_RNG1_HIGHADDR = 0xD0000FFF<br/>
&nbsp;BUS_INTERFACE SPLB = plb<br/>
&nbsp;BUS_INTERFACE MOPB = opb<br/>
END</FONT></DIV>
<div>&nbsp;连接到DCR总线上的IP Core地址如下：</DIV>
<div><font FACE="宋体">BEGIN plb_tft_cntlr_ref<br/>
&nbsp;......<br/>
&nbsp;PARAMETER C_DCR_BASEADDR = 0b0000010000<br/>
&nbsp;PARAMETER C_DCR_HIGHADDR = 0b0000010001<br/>
&nbsp;......<br/>
END</FONT></DIV>
<div>
当向挂到DCR的plb_tft_cntlr_ref的两个寄存器发数据时可以这样写XIo_Out32(0xD0000040,data)，XIo_Out32(0xD0000044,data)（DCR的数据线是32bit）.C_RNG1_BASEADDR
和C_RNG1_HIGHADDR
间的地址范围被映射到DCR上，又因为OPB到DCR的地址映射关系，既DCR_ABUS&lt;=OPB_ABUS(20
to
29),所以通过ppc访问plb_tft_cntlr_ref的地址是C_RNG1_BASEADDR&nbsp;
or （C_DCR_BASEADDR &lt;&lt;
2)=0xD0000040。由于DCR的地址为10bit，寻址空间是1K，但数据线是32bit，所以分配给plb2opb_bridge的RNG1的空间是4KB。这个空间不能再大了。</DIV>
<div>这是第一次看到使用DCR总线、有plb master的自定义IP core。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008pv6.html#comment</comments>
            <pubDate>Tue, 04 Mar 2008 15:59:37 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008pv6.html</guid>
        </item>
        <item>
            <title>o(Y_Y)o...</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008pv1.html</link>
            <description><![CDATA[<div>
&nbsp;以前做的东西还没等写到blog里就忘了，5555~~~~~~~~~~~</DIV>
<div>&nbsp;所以以后坚持每日写blog了。</DIV>
]]></description>
            <author>金曦</author>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008pv1.html#comment</comments>
            <pubDate>Tue, 04 Mar 2008 09:24:57 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008pv1.html</guid>
        </item>
        <item>
            <title>7183视频采集</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01008ncb.html</link>
            <description><![CDATA[<div>&nbsp;&nbsp;
用DIGILENT的VDEC1和XUPV2P做JPEG采集，芯片是ADV7183B，使用协议ITU-BT656．板子上除了DDR没其他可用的存储设备，自己做SDRAM的扩展板也来不及了，所以采集的图像数据只能放到FPGA内部的BRAM中,BRAM的容量有限，放720*576的图片是放不下的，所以我使用128KB的BRAM做图像数据的缓存，将一张图像分6组采集（奇数场的0-90、91-180、181-270，偶数场的0-90、91-180、181-270），每采集完一组，将数据读到DDR中保存，然后再采下一组。其实最后得到的720*540的图像不是一帧内的数据，当拍摄非静态景物时，会出现图像撕裂的情况。再改进是很困难了。因为如果用PPC和PLB总线上的自定义图像采集IP
Core以27M的速率接受图像数据再放入DDR中，感觉这样能将一帧中的图像完全采集到，但通过实验发现数据丢失的很严重。</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01008ncb.html#comment</comments>
            <pubDate>Tue, 26 Feb 2008 18:10:46 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01008ncb.html</guid>
        </item>
        <item>
            <title>EDK  opb_intc</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01007zc8.html</link>
            <description><![CDATA[<div>
&nbsp;EDK9.1中的opb_intc支持32个中断，这32个中断分别连接到opb_intc
32bit的int_inputs上，中断0对应第0位，中断1对应第1位依次。当中断到来时，ISR中相应的位置1并通过irp告知ppc有external
exception(异常5)。在ppc上的软件端，需要先做如下操作</DIV>
<div>&nbsp;</DIV>
<div><font COLOR="#0099CC"><font COLOR="#0099CC">//initial the ppc
exception table</FONT></FONT></DIV>
<div><font FACE="宋体">XExc_Init();</FONT></DIV>
<div><font COLOR="#0099CC">//将XIntc_DeviceInterruptHandler绑定为XEXC_ID_NON_CRITICAL_INT(异常5)的异常处理</FONT></DIV>
<div><font FACE="宋体">XExc_RegisterHandler(XEXC_ID_NON_CRITICAL_INT,<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(XExceptionHandler)XIntc_DeviceInterruptHandler,<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(void*) 0);</FONT></DIV>
<div><font FACE="宋体">XExc_mEnableExceptions(XEXC_NON_CRITICAL);</FONT></DIV>
<div><font FACE="宋体">XIntc_Start(IntcInstancePtr,
XIN_REAL_MODE);</FONT></DIV>
<div>&nbsp;</DIV>
<div>每当有external exception时，程序跳到被<font FACE="宋体">XExc_RegisterHandler指定为external
exception的异常处理的XIntc_DeviceInterruptHandler（<font COLOR="#000000">Xintc_l.c</FONT>）的函数中。</FONT><font FACE="宋体">将ISR和IER相与的值读入IntrStatus，从<font FACE="宋体">IntrStatus的低位到高位（所以是低位中断的优先级高于高位中断）依次判断是否为1，为1表示该ISR对应的中断上有中断请求，然后到<font FACE="宋体">XIntc_Config的<font FACE="宋体"><font FACE="宋体">XIntc_VectorTableEntry
HandlerTable</FONT>[interruptnum]中找中断处理函数。</FONT></FONT></FONT></FONT></DIV>
<div>&nbsp;</DIV>
<div>
参考文档：xapp778.pdf&nbsp;&nbsp;&nbsp;
ug011.pdf&nbsp;&nbsp; opb_intc.pdf</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01007zc8.html#comment</comments>
            <pubDate>Thu, 13 Dec 2007 06:55:31 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01007zc8.html</guid>
        </item>
        <item>
            <title>EDK编程心得</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01000bzq.html</link>
            <description><![CDATA[<div STYLE="TEXT-INDENT: 2em">
1<strong>、printf、xil_printf、print</STRONG></DIV>
<div STYLE="TEXT-INDENT: 2em">
printf在v4的MB上需使用50K左右的text段，在v2p的PPC上使用40K左右的text段，这个大小不一定的。</DIV>
<div STYLE="TEXT-INDENT: 2em">
xil_printf使用的格式和printf差不多，占用的text段确很小，3K左右。</DIV>
<div STYLE="TEXT-INDENT: 2em">
print使用的text段最少，ms不到1K，但是不能有格式控制和多于1个参数，只能是print("Hello
FPGA!\n");</DIV>
<div STYLE="TEXT-INDENT: 2em">
这三个函数在不同程序中使用的text大小还不一样，不知道为什么啊。</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;</DIV>
<div STYLE="TEXT-INDENT: 2em"><strong>2、for、while</STRONG></DIV>
<div STYLE="TEXT-INDENT: 2em">
好像while的处理比for快。根据如下：</DIV>
<div STYLE="TEXT-INDENT: 2em">
我要用串口接收82个Xuint8到a[82]中.PC这边用串口调试助手发字符串。使用for的程序段如下：</DIV>
<div STYLE="TEXT-INDENT: 2em">for (i=0;i&lt;82;i++)</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;&nbsp;
a[i] = <font FACE="宋体">XUartLite_RecvByte(XPAR_RS232_BASEADDR);</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
如果我将82个char的字符串全部写到串口调试助手的发送数据窗口，再点击发送，板子只能接收到82个中的一部分。如果一个个char的手动发送，板子就可以正常接收82个。说明可能是每个char的间隔太短所以板子没办法全部接收。</DIV>
<div STYLE="TEXT-INDENT: 2em">
但是使用while却可以全部接收到串口调试助手连续发送的82个char，while程序段如下：</DIV>
<div STYLE="TEXT-INDENT: 2em">i = 0;</DIV>
<div STYLE="TEXT-INDENT: 2em">while (i&lt;82)</DIV>
<div STYLE="TEXT-INDENT: 2em">{</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;&nbsp;
a[i] = <font FACE="宋体">XUartLite_RecvByte(XPAR_RS232_BASEADDR);</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;&nbsp;
i++;</DIV>
<div STYLE="TEXT-INDENT: 2em">}</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;</DIV>
<div STYLE="TEXT-INDENT: 2em">
我只是通过一些实验现象得出以上结论，为什么会这样没弄明白。</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;</DIV>
]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01000bzq.html#comment</comments>
            <pubDate>Sun, 25 Nov 2007 17:32:07 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01000bzq.html</guid>
        </item>
        <item>
            <title>EAPR(Early-Access Partial Reconfiguration)</title>
            <link>http://blog.sina.com.cn/s/blog_417f092d01000bwr.html</link>
            <description><![CDATA[<div STYLE="TEXT-INDENT: 2em">
EAPR是Xilinx公司提供的用来做DPR的工具，安装后将ISE中的工具链替换。</DIV>
<div STYLE="TEXT-INDENT: 2em">EAPR<font FACE="宋体">支持一种新的DPR方法，目前可以使用EAPR做DPR的些列是v2,
v2p, v4 <font COLOR="#0000CC">（v5, s3,
s3e虽然提供了slice总线宏，但是EAPR文档中并没有写是否支持。我用EAPR做s3e的重构，局部bitstream可以生成，但是bitstream中99%都是00，重配置后没效果，芯片内逻辑和重配置前一样。后来在网上查，有人说s3e不能使用EAPR，只能用以前流程的基于差异的）。</FONT></FONT></DIV>
<div STYLE="TEXT-INDENT: 2em"><font FACE="宋体"><strong>新的流程和旧的流程有一下几点不同：</STRONG></FONT></DIV>
<div STYLE="TEXT-INDENT: 2em"><font FACE="宋体">1、在旧流程中固定区域和重配置区域一样是在ngdbuild
-modular
module时完成的布局布线。在新的流程中FPGA内的固定区域称为base，这部分区域是在ngdbuild
-modular
initial步骤中完成布局布线的，而且如果base布线时使用了PRR中的布线资源也是可以的，这些在PRR中被base使用的布线资源会被记录在static.used中，在PRM布线时会参考static.used，不使用已经被base使用的布线资源。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">
2、新流程中允许PRR为任意矩形。在xilinx某些系列的FPGA中使用了<font FACE="宋体">glitchless（忘了是怎么拼写的，好像是g*less）技术。使用了这种技术的FPGA当向配置存储器中写入同样的数据时，不会产生尖脉冲。这样在配置PRM时，即使对base的某些区域进行了配置，只要新配置到base的某些区域的bitstream和原配置存储器中的bitstream相同就不会对原base区域产生任何影响。这样就可以使PRR的长度小于frame，做到任意矩形都可以配置。</FONT></DIV>
<div STYLE="TEXT-INDENT: 2em">3、总线宏使用slice做的bus
macro。这个在以前的流程中也支持，只不过在新流程中写到了官方文档中。slice的bus
macro允许总线的密度更密。</DIV>
<div STYLE="TEXT-INDENT: 2em">
目前就发现这几点与原流程不同。还有就是，布局布线时没有再出现布不通的情况。</DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;</DIV>
<div STYLE="TEXT-INDENT: 2em">
<strong>EAPR的目录结构：</STRONG></DIV>
<div STYLE="TEXT-INDENT: 2em"><a href="http://blog.photo.sina.com.cn/showpic.html#url=http://static13.photo.sina.com.cn/orignal/417f092d43f082c984d6c" TARGET="_blank"><img SRC="http://static13.photo.sina.com.cn/bmiddle/417f092d43f082c984d6c" BORDER="0" /></A></DIV>
<div STYLE="TEXT-INDENT: 2em">&nbsp;</DIV>
<div STYLE="TEXT-INDENT: 2em"><strong>EAPR命令：</STRONG></DIV>
<div STYLE="TEXT-INDENT: 2em">
<p><font FACE="宋体">cd top</FONT></P>
<p><font FACE="宋体">ngdbuild -modular initial -uc top.ucf
top.ngc</FONT></P>
<p>&nbsp;</P>
<p><font FACE="宋体">cd ..\base</FONT></P>
<p><font FACE="宋体">copy ..\top\top.ucf</FONT></P>
<p><font FACE="宋体">ngdbuild -modular initial -uc top.ucf
..\top\top.ngc</FONT></P>
<p><font FACE="宋体">map top.ngd</FONT></P>
<p><font FACE="宋体">par -w top.ncd base_routed.ncd</FONT></P>
<p>&nbsp;</P>
<p><font FACE="宋体">cd ..\reconfigmodules\t_and</FONT></P>
<p><font FACE="宋体">copy ..\..\top\top.ucf</FONT></P>
<p><font FACE="宋体">copy ..\..\base\static.used
arcs.exclude</FONT></P>
<p><font FACE="宋体">ngdbuild -modular module -active reconfig_t
-uc top.ucf ..\..\top\top.ngc</FONT></P>
<p><font FACE="宋体">map top.ngd</FONT></P>
<p><font FACE="宋体">par -w top.ncd PRM_t.ncd</FONT></P>
<p>&nbsp;</P>
<p><font FACE="宋体">cd ..\b_and</FONT></P>
<p><font FACE="宋体">copy ..\..\top\top.ucf</FONT></P>
<p><font FACE="宋体">copy ..\..\base\static.used
arcs.exclude</FONT></P>
<p><font FACE="宋体">ngdbuild -modular module -active reconfig_b
-uc top.ucf ..\..\top\top.ngc</FONT></P>
<p><font FACE="宋体">map top.ngd</FONT></P>
<p><font FACE="宋体">par -w top.ncd PRM_b.ncd</FONT></P>
<p><font FACE="宋体">......</FONT></P>
<p>&nbsp;</P>
<p><font FACE="宋体">cd ..\..\merges\t_and_b_or</FONT></P>
<p><font FACE="宋体">copy ..\..\base\base_routed.ncd</FONT></P>
<p><font FACE="宋体">copy
..\..\reconfigmodules\t_and\PRM_t.ncd</FONT></P>
<p><font FACE="宋体">copy
..\..\reconfigmodules\b_or\PRM_b.ncd</FONT></P>
<p><font FACE="宋体">pr_verifydesign base_routed.ncd PRM_t.ncd
PRM_b.ncd</FONT></P>
<p><font FACE="宋体">pr_assemble base_routed.ncd PRM_t.ncd
PRM_b.ncd</FONT></P>
<p>&nbsp;</P>
<p><font FACE="宋体">cd ..\..\merges\t_or_b_and</FONT></P>
<p><font FACE="宋体">copy ..\..\base\base_routed.ncd</FONT></P>
<p><font FACE="宋体">copy
..\..\reconfigmodules\b_and\PRM_t.ncd</FONT></P>
<p><font FACE="宋体">copy
..\..\reconfigmodules\t_or\PRM_b.ncd</FONT></P>
<p><font FACE="宋体">pr_verifydesign base_routed.ncd PRM_t.ncd
PRM_b.ncd</FONT></P>
<p><font FACE="宋体">pr_assemble base_routed.ncd PRM_t.ncd
PRM_b.ncd<br/></FONT></P>
</DIV>]]></description>
            <author>金曦</author>
            <category>技术</category>
            <comments>http://blog.sina.com.cn/s/blog_417f092d01000bwr.html#comment</comments>
            <pubDate>Fri, 16 Nov 2007 08:29:24 GMT+8</pubDate>
            <guid>http://blog.sina.com.cn/s/blog_417f092d01000bwr.html</guid>
        </item>
    </channel>
</rss>
