<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>西格玛向量™ &#187; 硬件与嵌入式</title>
	<atom:link href="http://sigmav.net/category/%e6%8a%80%e6%9c%af%e7%9b%b8%e5%85%b3/embededhw/feed/" rel="self" type="application/rss+xml" />
	<link>http://sigmav.net</link>
	<description>指向 任何方向都是未来</description>
	<lastBuildDate>Sun, 12 Feb 2012 11:24:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<cloud domain='sigmav.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>mini2440 Helloworld驱动</title>
		<link>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mini2440-helloworld%25e9%25a9%25b1%25e5%258a%25a8</link>
		<comments>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 15:42:35 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[硬件与嵌入式]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[mini2440]]></category>

		<guid isPermaLink="false">http://sigmav.net/2011/03/mini2440-helloworld%e9%a9%b1%e5%8a%a8/</guid>
		<description><![CDATA[&#160; &#160; Mini2440 是基于S3C2440（2410工业版） 的Arm9平台，实验平台已经移植了Linux，目前正打算添加RF24L01接口驱动程序。 &#160; 首先建立Helloworld驱动程序，作为驱动开发的模版，记录如下： &#160;&#160; 一、建立编译环境： &#160;&#160; mini2440开发环境 &#160;&#160;&#160; 编译器 ： arm-linux-gcc&#160;&#160;&#160; 3.4.1 &#160;&#160;&#160; linux内核版本 ： 2.6.32.2 &#160;&#160;&#160; 解压并记录内核源码树 位置例：/opt/FriendlyARM/mini2440/linux-2.6.32.2 &#160;&#160; 二、编写驱动程序文件： #include &#60;linux/init.h&#62; #include &#60;linux/module.h&#62; MODULE_LICENSE(&#34;Dual BSD/GPL&#34;); static int hello_init(void) { printk(KERN_ALERT &#34;Hello modulen&#34;); return 0; } static int hello_exit(void) { printk(KERN_ALERT &#34;Goodby modulen&#34;); return 0; } module_init(hello_init); module_exit(hello_exit); &#160;&#160;&#160;&#160;&#160; 上述实现了在加载时打印相关语句功能，KERN_ALERT [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>&#160; Mini2440 是基于S3C2440（2410工业版） 的Arm9平台，实验平台已经移植了Linux，目前正打算添加RF24L01接口驱动程序。</p>
<p>&#160; 首先建立Helloworld驱动程序，作为驱动开发的模版，记录如下：</p>
<h4>&#160;&#160; 一、建立编译环境：</h4>
<p>&#160;&#160; mini2440开发环境</p>
<p>&#160;&#160;&#160; 编译器 ： arm-linux-gcc&#160;&#160;&#160; 3.4.1</p>
<p>&#160;&#160;&#160; linux内核版本 ： 2.6.32.2 </p>
<p>&#160;&#160;&#160; 解压并记录内核源码树 位置例：/opt/FriendlyARM/mini2440/linux-2.6.32.2</p>
<h4>&#160;&#160; 二、编写驱动程序文件：</h4>
<pre class="brush: cpp">#include &lt;linux/init.h&gt;
#include &lt;linux/module.h&gt;
MODULE_LICENSE(&quot;<span style="color: #8b0000">Dual BSD/GPL</span>&quot;);

<span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> hello_init(<span style="color: #0000ff">void</span>)
{
    printk(KERN_ALERT &quot;<span style="color: #8b0000">Hello modulen</span>&quot;);
    <span style="color: #0000ff">return</span> 0;
}
<span id="more-41288"></span>
<span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> hello_exit(<span style="color: #0000ff">void</span>)
{
    printk(KERN_ALERT &quot;<span style="color: #8b0000">Goodby modulen</span>&quot;);
    <span style="color: #0000ff">return</span> 0;
}

module_init(hello_init);
module_exit(hello_exit);</pre>
<p>&#160;&#160;&#160;&#160;&#160; 上述实现了在加载时打印相关语句功能，KERN_ALERT 表示了优先级为KERN_ALERT级别，较低级别的printk可能出现在终端无显示的情况。</p>
<h4>&#160;&#160;&#160; 三、编写Makefile</h4>
<p>&#160;&#160;&#160;&#160;&#160; 这里所配置的makefile模板文件如下： </p>
<pre>#Mini2440 General Makefile for SSDUT_MCU_LAB
#Auth: sigmax6
#2011 03 01

CC = arm-linux-gcc                                 #name of platform compiler
KDIR ?= /opt/FriendlyARM/mini2440/linux-2.6.32.2    #platform linux source dir
PWD := $(shell pwd)

obj-m := hello.o                                   #obj-m means hello.ko , and it depends on hello.o

default:
	$(MAKE) -C $(KDIR) M=$(PWD) modules            #make 

.PHONY: clean
clean:
	$(MAKE) -C $(KDIR) M=$(PWD) clean              #clean
	rm -rf *.o *.ko .*.cmd *.mod.*</pre>
<p>&#160;&#160; 实际上，对于一个驱动模块来说，在有了hello.c之后，只要一句规则就可以生成目标模块</p>
<p>&#160;&#160;&#160;&#160; obj-m := hello.o</p>
<blockquote>
<p>&#160; <br />&#160;&#160;&#160; 熟悉的 make , 但是对 2.6 内核建立系统不熟悉的读者, 可能奇怪这个 makefile 如何工作. 毕竟上面的这一行不是一个传统的 makefile 的样子. 答案, 当然, 是内核建立系统处理了余下的工作. 上面的安排 </p>
<p>( 它利用了由 GNU make 提供的扩展语法 )表明有一个模块要从目标文件 hello.o 建立. 在从目标文件建立后结果模块命名为 hello.ko.</p>
<p>反之, 如果你有一个模块名为 module.ko, 是来自 2 个源文件( 姑且称之为, file1.c 和 file2.c ), 正确的书<br />
    <br />写应当是: </p>
<p>obj-m := module.o </p>
<p>module-objs := file1.o file2.o </p>
<p>对于一个象上面展示的要工作的 makefile, 它必须在更大的内核建立系统的上下文被调用. 如果你 </p>
<p>的内核源码数位于, 假设, 你的 ~/kernel-2.6 目录, 用来建立你的模块的 make 命令( 在包含模块源码 </p>
<p>和 makefile 的目录下键入 )会是: </p>
<p>make -C ~/kernel-2.6 M=`pwd` modules </p>
<p>这个命令开始是改变它的目录到用 -C 选项提供的目录下( 就是说, 你的内核源码目录 ). 它在那里 </p>
<p>会发现内核的顶层 makefile. 这个 M= 选项使 makefile 在试图建立模块目标前, 回到你的模块源码目 </p>
<p>录. 这个目标, 依次地, 是指在 obj-m 变量中发现的模块列表, 在我们的例子里设成了 module.o. </p>
<p>键入前面的 make 命令一会儿之后就会感觉烦, 所以内核开发者就开发了一种 makefile 方式, 使得生 </p>
<p>活容易些对于那些在内核树之外建立模块的人. 这个窍门是如下书写你的 makefile: </p>
<p></p>
<pre>

# If KERNELRELEASE is defined, we've been invoked from the
  # kernel build system and can use its language.

ifneq ($(KERNELRELEASE),)

obj-m := hello.o

# Otherwise we were called directly from the command

# line; invoke the kernel build system.

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

default:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif

</pre>
<p>&#160;&#160;&#160; 再一次, 我们看到了扩展的 GNU make 语法在起作用. 这个 makefile 在一次典型的建立中要被读 2次. 当从命令行中调用这个 makefile , 它注意到 KERNELRELEASE 变量没有设置. 它利用这样一个事实来定位内核源码目录, 即已安装模块目录中的符号连接指回内核建立树. 如果你实际上没有运行你在为其而建立的内核, 你可以在命令行提供一个 KERNELDIR= 选项, 设置 KERNELDIR 环境变量, 或者重写 makefile 中设置 KERNELDIR 的那一行. 一旦发现内核源码树, makefile 调用 default: 目标, 来运行第 2 个 make 命令( 在 makefile 里参数化成 $(MAKE))象前面描述过的一样来调用内核建立系统. 在第 2 次读, makefile 设置 obj-m, 并且内核的 makefile 文件完成实际的建立模块工作.这种建立模块的机制你可能感觉笨拙模糊. 一旦你习惯了它, 但是, 你很可能会欣赏这种已经编排进内核建立系统的能力. 注意, 上面的不是一个完整的 makefile; 一个真正的 makefile 包含通常的目标类型来清除不要的文件, 安装模块等等.</p>
<p>” —— 《Linux设备驱动程序 中文第三版》</p></blockquote>
<h4>四、编译生成模块 </h4>
<p>在当前目录下 使用make命令生成.ko模块文件</p>
<p>&#160; 按照上文的讲解,其中还会生成很多中间文件,格式为*.cmd *.mod.* 等 这些文件是系统将你的代码转化而来的。最终产品是.ko文件，也就是驱动模块。</p>
<p>&#160;&#160; Helloworld模块没有实际的操作，所以并不需要测试程序。一般情况下驱动程序需要通过测试程序验证其功能。</p>
<p>&#160;&#160; 将.ko文件下载到目标系统中，使用：</p>
<p> #insmod hello.ko</p>
<p>就可以看到 “Hello module” 出现在终端上。</p>
<p> 同理 </p>
<p> #rmmod hello&#160;&#160; （这里没有后缀名，因为调用的是模块名称）</p>
<p>&quot;会显示 “Goodbye module”</p>
<p>==========================================================</p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2011/03/01/mini2440-helloworld%e9%a9%b1%e5%8a%a8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>轻量级VHDL编译仿真工具&#8211;Symphon.Simili</title>
		<link>http://sigmav.net/2009/08/03/%e8%bd%bb%e9%87%8f%e7%ba%a7vhdl%e7%bc%96%e8%af%91%e4%bb%bf%e7%9c%9f%e5%b7%a5%e5%85%b7-symphonsimili/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25bd%25bb%25e9%2587%258f%25e7%25ba%25a7vhdl%25e7%25bc%2596%25e8%25af%2591%25e4%25bb%25bf%25e7%259c%259f%25e5%25b7%25a5%25e5%2585%25b7-symphonsimili</link>
		<comments>http://sigmav.net/2009/08/03/%e8%bd%bb%e9%87%8f%e7%ba%a7vhdl%e7%bc%96%e8%af%91%e4%bb%bf%e7%9c%9f%e5%b7%a5%e5%85%b7-symphonsimili/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 14:02:14 +0000</pubDate>
		<dc:creator>西玛哒</dc:creator>
				<category><![CDATA[IT悟语]]></category>
		<category><![CDATA[硬件与嵌入式]]></category>
		<category><![CDATA[VHDL]]></category>

		<guid isPermaLink="false">http://sigmax.yo2.cn/articles/%e8%bd%bb%e9%87%8f%e7%ba%a7vhdl%e7%bc%96%e8%af%91%e4%bb%bf%e7%9c%9f%e5%b7%a5%e5%85%b7-symphonsimili.html</guid>
		<description><![CDATA[&#160;&#160;



因为一些缘故开始学习VHDL&#8212;&#8212;一种硬件仿真语言，与VerilogHDL一起横行霸道于FPGA开发领域，至于两种语言的区别就不多叙了，其实个人比较倾向于Verilog （因为与C很像 学起来方便）<br />&#160;&#160; 关于VHDL的介绍：VHDL 维基百科<br />&#160;&#160; 之前VHDL使用中最常用的开发工具就是Xilinx ISE Des...]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;</p>
<p>因为一些缘故开始学习VHDL&mdash;&mdash;一种硬件仿真语言，与VerilogHDL一起横行霸道于FPGA开发领域，至于两种语言的区别就不多叙了，其实个人比较倾向于Verilog （因为与C很像 学起来方便）<br />&nbsp;&nbsp; 关于VHDL的介绍：<a id="b5w9" title="VHDL 维基百科" href="http://zh.wikipedia.org/wiki/VHDL">VHDL 维基百科</a><br />&nbsp;&nbsp; 之前VHDL使用中最常用的开发工具就是Xilinx ISE Design Suite 了，Xilinx是FPGA技术垄断巨头，开发工具必然很强大，但是它的体积和系统负荷是在是太高了，完整安装基本上要8G左右，而运行时一般的电脑是会卡的不得了的。<br />&nbsp;&nbsp; 因此 对于<strong>仅仅研究VHDL语言和仿真 不需要烧写分析等高级功能的人</strong>来说，一个轻量级的开发工具是很必要的。<br />&nbsp;&nbsp; 经过一番搜索 个人认为Symphon.Simili这款工具是不错的选择。<br />&nbsp;&nbsp; 工具的官方网站：<a id="jop9" title="http://www.symphonyeda.com/" href="http://www.symphonyeda.com/">http://www.symphonyeda.com/</a><br />&nbsp;&nbsp; 这里不提供破解下载，请自行搜索&#8230;&#8230;..（这个可以有&#8230;.XXXXX&#8230;..）<br />&nbsp;&nbsp; 下载后安装，会要求注册，否则只能使用初级的工具，不能仿真，不过可以编译：<br />&nbsp;&nbsp; 注册（或者是破解）之后，就可以使用professional的版本了 工具名称为sonata。</p>
<div id="u:3t" style="text-align: left;"><img style="width: 412px; height: 212px;" src="https://docs.google.com/File?id=dggx9jhh_335df3v5mfb_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></div>
<p>&nbsp;//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;//<br />功能略解：<br />&nbsp;1、 工程建立：<br />&nbsp; 整个工具基本上与VS6.0的思想相近，先建立文件，随后再将其加入工程项目，这样多少有点儿混乱，但是新文件的建立比较自由。这里以一个简单的与门代码为例 介绍&ldquo;Add&rdquo;这个工程的建立：</p>
<p>&nbsp;</p>
<div id="se0j" style="text-align: left;"><img style="width: 648px; height: 385.051px;" src="https://docs.google.com/File?id=dggx9jhh_336cdhrbrc8_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></div>
<p>建立Workspace ： File-》New Workspace&nbsp; 填写工作区项目名称与存储路径：</p>
<div id="ahi1" style="text-align: left;"><img style="width: 506px; height: 202px;" src="https://docs.google.com/File?id=dggx9jhh_337fz6t66gt_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></div>
<p>OK 工程区建立完毕</p>
<p>然后点击File&mdash;》New 建立一个空文件 用于书写代码<br />保存该文件为 Add.vhd&nbsp; (这里对后缀名有严格要求 系统根据它来判断文件类型 下面的选单也要相应选择)<br />这个文件就是VHDL源代码了。<img alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></p>
<p><img alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /><br /><img alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></p>
<p>点击 Project-》Add Files&nbsp; 选择你刚才创建的文件 将它添加到该工程中</p>
<p>到此 工程的初步设置就完成了。</p>
<p>2、 书写代码并编译调试</p>
<p>&nbsp;在VHDL代码的书写方面与其他的编译工具是一样的，语法上就不详细说了 这里给出我瞎写的一个实例以说明后续过程：<br />&nbsp; <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />&#8211; Company:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STC&nbsp;&nbsp; &nbsp;<br />&#8211; Engineer:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sigmax6<br />&#8211; <br />&#8211; Create Date:&nbsp;&nbsp;&nbsp; 08:42:51 07/07/2009 <br />&#8211; Design Name: <br />&#8211; Module Name:&nbsp;&nbsp;&nbsp; STC_ADD &#8211; Behavioral <br />&#8211; Project Name: <br />&#8211; Target Devices: <br />&#8211; Tool versions: <br />&#8211; Description: <br />&#8211;<br />&#8211; Dependencies: <br />&#8211;<br />&#8211; Revision: <br />&#8211; Revision 0.01 &#8211; File Created<br />&#8211; Additional Comments: <br />&#8211;<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br /><span style="color: #0000ff;">library IEEE;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_1164.ALL;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_ARITH.ALL;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_UNSIGNED.ALL;</span><br />&#8212;- 引用一些库<br />&#8212;- Uncomment the following library declaration if instantiating<br />&#8212;- any Xilinx primitives in this code.<br />&#8211;library UNISIM;<br />&#8211;use UNISIM.VComponents.all;</p>
<p><span style="color: #0000ff;">entity STC_AND2 is</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; Port ( A : in&nbsp; STD_LOGIC;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B : in&nbsp; STD_LOGIC;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C : out&nbsp; STD_LOGIC);</span><br style="color: #0000ff;" /><span style="color: #0000ff;">end STC_AND2;</span><br />&#8212;- 结构声明&nbsp; 一个二输入与门 A B 输入 C 输出</p>
<p><span style="color: #0000ff;">architecture Behavioral of STC_AND2 is</span><br style="color: #0000ff;" /><br style="color: #0000ff;" /><span style="color: #0000ff;">begin</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; C&lt;=A and B ;</span><br style="color: #0000ff;" /><br style="color: #0000ff;" /><span style="color: #0000ff;">end Behavioral;</span><br />&#8212;- 行为声明 描述与门功能 （A B 与的结果输送给C）<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>代码书写并保存之后，这个&ldquo;部件&rdquo;就已经随着文件进入你建立的工程了，<br />点击工具栏上的Compile=》Compile file &lsquo;你的文件名.vhd(l)&rsquo; 就开始编译你的文件了<br />编译正常会出现如下提示：<br />% vhdlp -ini test.sws -work test -s -maxerrors 10 AND_OR/add.vhd<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />Begin compilation session, Library = test, Dir=E:/Files/VHDL Project<br /><span style="color: #ff0000;">Finished compilation session</span><br />% <br />说明编译成功 如果你的代码有错误，编译器会提示警告和报错：<br /><span style="color: #ff0000;">Error: CSVHDL0002: AND_ORadd.vhd: (line 34): syntax error, unexpected END, expecting &#8216;;&#8217;</span><br style="color: #ff0000;" /><span style="color: #ff0000;">Error: CSVHDL0265: AND_OR/add.vhd: Skipping compilation of 0 file(s) due to errors compiling file &#8216;AND_OR/add.vhd&#8217;</span><br />Errors: 2, Warnings: 0<br />% <br />根据提示更改错误，重新编译即可。</p>
<p>3、 信号输入与功能仿真<br />之前的工作已经将功能实现完成了，重要的其实是检验其功能是否有偏差，也就是仿真检验。<br />与Xilinx ISE有专门的仿真工具，提供信号源，甚至能将器件细化显示相比，这个工具就低级的变态了（没办法，小工具）它没有自带的信号输出功能，只能通过在器件入口添加代码操控的信号源才可以正常的进行测试。</p>
<p>这里我们同上方式建立一个文件： testbeach.vhdl 用来在端口处添加输入信号。<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />&#8211; Company:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STC&nbsp;&nbsp; &nbsp;<br />&#8211; Engineer:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Sigmax6<br />&#8211; <br />&#8211; Create Date:&nbsp;&nbsp;&nbsp; 21:15:10 21/07/2009 <br />&#8211; Design Name: <br />&#8211; Module Name:&nbsp;&nbsp;&nbsp; testbeach &#8211; Behavioral <br />&#8211; Project Name: <br />&#8211; Target Devices: <br />&#8211; Tool versions: <br />&#8211; Description: <br />&#8211;<br />&#8211; Dependencies: <br />&#8211;<br />&#8211; Revision: <br />&#8211; Revision 0.01 &#8211; File Created<br />&#8211; Additional Comments: <br />&#8211;<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br /><span style="color: #0000ff;">library IEEE;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_1164.ALL;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_ARITH.ALL;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">use IEEE.STD_LOGIC_UNSIGNED.ALL;</span><br style="color: #0000ff;" /><br style="color: #0000ff;" /><span style="color: #0000ff;">entity tbh is</span><br style="color: #0000ff;" /><span style="color: #0000ff;">end tbh;</span><br style="color: #0000ff;" /><br style="color: #0000ff;" /><span style="color: #0000ff;">architecture beh of tbh is</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; signal a: std_logic;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; signal b: std_logic;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; signal c: std_logic;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; </span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp; component stc_and2</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; port ( A: in std_logic;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; B: in std_logic;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; C: out std_logic);</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; end component stc_and2;<br /><span style="color: #000000;">&#8212;- 一个空结构器件 只有端口 建立三个信号用于输入输出</span><br style="color: #0000ff;" /></span><span style="color: #0000ff;">&nbsp;&nbsp; begin </span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp; andgate:stc_and2</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; port map ( a=&gt;A ,</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; b=&gt;B,</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; c=&gt;C);</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp; tb: process</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp; begin</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&#038;nbs<br />
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&lt;=&#8217;0&#8242;;b&lt;=&#8217;0&#8242;;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait for 10 ns;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&lt;=&#8217;0&#8242;;b&lt;=&#8217;1&#8242;;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait for 10 ns;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&lt;=&#8217;1&#8242;;b&lt;=&#8217;0&#8242;;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait for 10 ns;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a&lt;=&#8217;1&#8242;;b&lt;=&#8217;1&#8242;;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wait for 10 ns;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert false</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; report &#8220;End of TestBench&#8221;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; severity error;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end process tb;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; end architecture beh;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; <br />&nbsp; <span style="color: #000000;">&#8212;-给器件输入相应信号 并定时更改信号 用于测试</span><br style="color: #0000ff;" /></span><span style="color: #0000ff;">&nbsp;&nbsp; configuration tb_c of tbh is </span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; for beh</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; end for;</span><br style="color: #0000ff;" /><span style="color: #0000ff;">&nbsp;&nbsp; end configuration tb_c;<br />&nbsp;<span style="color: #000000;">&#8212;-配置信息文件段 tb_c&nbsp; 用于工具使用此文件进行测试<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>同样对此文件进行编译 这样就可以使用这个文件进行测试<br /><br style="color: #0000ff; background-color: #000000;" /></span></span><span style="color: #0000ff; background-color: #ffffff;"><span style="color: #000000;">开始仿真之前需要选择&ldquo;顶层文件&rdquo; 便于工具选择用哪一个文件来作为器件分析的入口（包在最外面的信息）<br />这里我们必须选择配置信息 tb_c 作为我们的顶层文件<br /></span></span><img alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /><br style="color: #0000ff;" /></p>
<div id="l6v3" style="text-align: left;"><img style="width: 263px; height: 224px;" src="https://docs.google.com/File?id=dggx9jhh_344rbhnbsdd_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></p>
<div id="ado9" style="text-align: left;"><img style="width: 291px; height: 356px;" src="https://docs.google.com/File?id=dggx9jhh_345f6t6gstj_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /><br />&nbsp;选择好之后 点击Go 或Ctrl+F5&nbsp; 就开始了仿真<br />&nbsp;出现仿真界面后 将信号A B C 拖拽到仿真信号窗口</p>
<div id="oufv" style="text-align: left;"><img style="width: 648px; height: 372.697px;" src="https://docs.google.com/File?id=dggx9jhh_346chz4qcjm_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></div>
<p></div>
</div>
<p>点击开始按钮 就开始仿真了</p>
<div id="n_8h" style="text-align: left;"><img style="width: 648px; height: 370.286px;" src="https://docs.google.com/File?id=dggx9jhh_347dqr449cx_b" alt=" 轻量级VHDL编译仿真工具  Symphon.Simili"  title="轻量级VHDL编译仿真工具  Symphon.Simili" /></div>
<p>&nbsp;可以看出 这个与门的工作正常&#8230; O(&cap;_&cap;)O~</p>
<p>到此 这个工具的大部分功能就介绍完了 <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://sigmav.net/2009/08/03/%e8%bd%bb%e9%87%8f%e7%ba%a7vhdl%e7%bc%96%e8%af%91%e4%bb%bf%e7%9c%9f%e5%b7%a5%e5%85%b7-symphonsimili/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

