搜档网
当前位置:搜档网 › DspBuilder中文教程2

DspBuilder中文教程2

DspBuilder中文教程2
DspBuilder中文教程2

第10章 DSP Builder 设计深入

应用Matlab/DSP Builder 可以对多种类型的电子线路模块或系统进行建模、分析和硬件实现,且更擅长于一些较复杂的功能系统,及偏向于高速算法方面的模块的设计和实现,还能利用HDL Import 模块将HDL 文本设计转变成为DSP Builder 元件。

本章将给出一些DSP 及数字通信领域中实用模块的设计实例,以及基于Matlab/DSP Builder 平台的IP 核的应用。

10.1 FIR 数字滤波器设计

FIR (Finite Impulse Response :有限冲激响应)滤波器在数字通信系统中,被大量用于以实现各种功能,如低通滤波、通带选择、抗混叠、抽取和内插等。

在DSP Builder 的实际应用中,FIR 滤波器是最为常用的模块之一。DSP Builder 的FIR 滤波器设计方式有多种,作为示例,本节介绍基于模块的FIR 与基于IP 的FIR 设计方法。 10.1.1 FIR 滤波器原理

对于一个FIR 滤波器系统,它的冲激响应总是有限长的,其系统函数可以记为:

∑=?=M

k k k z b z H 0)( 10-1

最基本的FIR 滤波器可用下式表示:

∑?=?=1

0)()()(L i i h i n x n y 10-2

其中()x n 是输入采样序列,()h n 是滤波器系数,L 是滤波器的阶数,)(n y 表示滤波器的输出序列。也可以用卷积来表示输出序列)(n y 与)(n x 、)(n h 的关系。

)()()(n h n x n y ?= 10-3

图10-1中显示了一个典型的直接I 型3阶FIR 滤波器,其输出序列)(n y 满足下列等式:

EDA 技术与VHDL

366)3()3()2()2()1()1()()0()(?+?+?+=n x h n x h n x h n x h n h 10-4

在这个FIR 滤波器中,总共存在3个延时结,4个乘法单元,一个4输入的加法器。如果采用普通的数字信号处理器(DSP Processor )来实现,只能用串行的方式顺序地执行延时、乘加操作,不可能在一个DSP 处理器指令周期内完成,必须用多个指令周期来完成。

图10-1 3阶FIR 滤波器结构 但是,如果采用FPGA 来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR 滤波器的输出,不难发现图10-1的电路结构是一种流水线结构,这种结构在硬件系统中有利于并行高速运行。

10.1.2 使用DSP Builder 设计FIR 滤波器

使用DSP Builder 可以方便地在图形化环境中设计FIR 数字滤波器,而且滤波器系数的计算可以借助Matlab 强大的计算能力和现成的滤波器设计工具来完成。

1.3阶常数系数FIR 滤波器设计

一个3阶FIR 滤波器的)(n h 可以表示为下式:

))3()3()2()2()1()1()()0(()(?+?+?+=n x h n x h n x h n x h C n h q 10-5

其中: 63

)3(127

)2(127)1(63

)0(====h h h h

q C 是量化时附加的因子。这里采用直接I 型来实现该FIR 滤波器。利用Matlab

设计好的3阶直接I 型FIR 滤波器模型图可以参见图10-2。

第10章 DSP Builder 设计深入 367

图6-2 带有仿真信号模块的3阶滤波器模型

由于FIR 滤波器的系数)(n h 已经给定,是一个常数,由图中看到,在DSP Builder 库中可以用Gain (增益)模块来实现)()(k n x k h ?×的运算,用延时Delay 模块来实现输入信号序列)(n x 的延时。设计完3阶FIR 滤波器模型后,就可以添加simulink 模块进行仿真了,如图10-2所示。新增的仿真模块参数作如下设置:

Chirp Signal 模块:(Chirp Signal )

库:Simulink 中Sources 库

参数“Initial Frequency (Hz )”设为“0.1”

参数“Target time ”设为“10”

参数“Frequency at target time (Hz )”设为“1”

参数“Interpret vectors parameters as 1-D ”选中

Gain 模块:(Gain )

库:Simulink 中Math Operations 库

参数“Gain ”设为“127”

参数“Multiplication ”设为“Element wise(K.*u)”

Scope 模块:(Scope )

库:simulink 中sinks 库

参数“Number of Axes ”为“2”

其中Chirp Signal 模块为线性调频信号发生模块,生成一个线性调频信号0.1Hz ~1Hz 。 在该模型仿真中,使用默认的仿真参数。仿真结果如图10-3所示。一个线性调频信号通过3阶FIR 滤波器后,幅度发生了变化,频率越高,幅度被衰减得越多。

EDA 技术与

VHDL

368

图10-3 FIR 滤波器仿真结果

2、4阶FIR 滤波器节设计

以下将设计一个系数可变的FIR 滤波器节。对于直接I 型的FIR 滤波器(结构见图10-4)是可以级联的。也就是说,在滤波器系数可变的情况下,可以预先设计好一个FIR 滤波器节,在实际应用中通过不断地调用FIR 滤波器节,级联起来,用来完成多阶FIR 滤波器的设计。

图10-4 直接I 型FIR 滤波器结构 图10-5是一个直接I 型的4阶FIR 滤波器节的结构。为了使该滤波器节的调用更为方便,在xin 输入后插入了一个延时单元,由3阶滤波器演变成4阶的,不过常数系数项(0z 系数项))0(h 恒为0。由于在通信应用中,FIR 滤波器处理的往往是信号流,增加一个延时单元不会影响FIR 滤波器处理的结果,只是系统延时增加了一个时钟周期。

对于该FIR 滤波器节,其系统函数可以用下式来表示:

4321)4()3()2()1()(????+++=z h z h z h z h z H 10-6

第10章 DSP Builder 设计深入 369

由于浮点小数在FPGA 中实现比较困难,实现的资源代价太大。在DSP Builder 中不妨使用整数运算来实现,最后用位数舍取的方式得到结果。

为了使参数可变,FIR 滤波器系数)1(h 、)2(h 、)3(h 、)4(h 也作为输入端口。在本设计中输入序列)(n x 的位宽设为9位。图10-6显示的就是一个设计好的4阶FIR 滤波器节,与图10-2常数FIR 滤波器相比,用Product (乘法)模块代替了Gain (增益)模块。

图10-5 直接I 型4阶FIR 滤波器节

图10-6 直接I 型4阶FIR 滤波器节

图10-6中相关模块的参数设置如下:

Xin 、hn0、hn1、hn2、hn3模块:(Altbus )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“signed Integer ”

EDA 技术与VHDL

370参数“Node Type ”设为“Input port ”

参数“number of bits ”设为“9”

yn 模块:(Altbus )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“signed Integer ”

参数“Node Type ”设为“Output port ”

参数“number of bits ”设为“20”

xn4模块:(Altbus )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“signed Integer ”

参数“Node Type ”设为“Output port ”

参数“number of bits ”设为“9”

Parallel Adder Subtractor 模块:(Parallel Adder Subtractor )

库:Altera DSP Builder 中Arithmetic 库

参数“Add(+)Sub(-)”设为“++++”

使用“Pipeline ”

参数“Clock Phaese Selectioon ”设为“1”

Delay 、Delay1、Delay2、Delay3模块:(Delay )

库:Altera DSP Builder 中Storage 库

参数“Depth ”设为“1”

参数“Clock Phase Selection ”设为“1”

Product 模块:(Product )

库:Altera DSP Builder 中Arithemtic 库

参数“Pipeline ”设为“2”

参数“Clock Phase Selection ”设为“1”

不选择“Use LPM ”

3、16阶FIR 滤波器模型设计

利用以上设计的4阶FIR 滤波器节可以方便地搭成n ×4阶直接I 型FIR 滤波器(注意:0)0(=h )。比如要实现一个16阶的低通滤波器,可以调用4个4阶FIR 滤波器节来实现。

为了设计4阶FIR 滤波器节子系统,首先需要建立一个新的DSP Builder 模型,复制上节的FIR4tap 模型到新模型。由FIR4tap 模型建立子系统,并对端口信号进行修改,把子系统更名为fir4tap ,如图10-7所示。fir4tap 的内部结构示于图10-8。

然后组成16阶FIR 滤波器模型。为此复制4个fir4tap ,并将它们衔接起来,前一级的输出端口x4接后一级的x 输入端口。并附加上16个常数端口,作为FIR 滤波器系数的输入。把4个子系统fir4tap 的输出端口y 连接起来,接入一个4输入端口的加法器,得到FIR 滤波器的输出yout 。注意,在完成子系统设计后,要按照第9章中所述的方式,修改其Mask 参数Mask Type 为“SubSystem AlteraBlockSet ”。

设计好的16阶FIR 滤波器见图10-9所示。

第10章 DSP Builder设计深入371

图10-7 fir4tap子系统图10-8 fir4tap子系统内部原理图

图10-9 16阶直接I型FIR滤波器模型

16阶直接I型FIR滤波器模型中,新增加的模块作如下设置:

xin模块:(Altbus)

库:Altera DSP Builder中IO & Bus库

EDA 技术与VHDL

372参数“Bus Type ”设为“signed Integer ”

参数“Node Type ”设为“Input port ”

参数“number of bits ”设为“9”

yout 模块:(Altbus )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“signed Integer ”

参数“Node Type ”设为“Output port ”

参数“number of bits ”设为“20”

x16模块:(Altbus )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“signed Integer ”

参数“Node Type ”设为“Output port ”

参数“number of bits ”设为“9”

Parallel Adder Subtractor 模块:(Parallel Adder Subtractor )

库:Altera DSP Builder 中Arithmetic 库

参数“Add(+)Sub(-)”设为“++++”

使用“Pipeline ”

参数“Clock Phaese Selectioon ”设为“1”

h0、h1、h2、h3、h4、h5、h6、h7、h8、

h9、h10、h11、h12、h13、h14、h15模块:(Delay )

库:Altera DSP Builder 中IO & Bus 库

参数“Bus Type ”设为“Signed Integer ”

参数“number of bits ”设为“9”

注意,在图10-9中,对h1~h16统一设置了一个值:255,而实际上滤波器的系数要根据具体要求进行计算的。在系数计算后,FIR 滤波器才能真正应用。

10.1.3 使用Matlab 的滤波器设计工具

可以十分方便地利用Matlab 提供的滤波器设计工具获得各种滤波器的设计参数。这里以一个16阶的FIR 滤波器(0)0(=h )为例,滤波器指标参数如下:

z 低通滤波器

z 采样频率Fs 为48kHz ,滤波器Fc 为10.8kHz ,

z 输入序列位宽为9位(最高位为符号位)

在此利用Matlab 来完成FIR 滤波器系数的确定,详细步骤如下:

1、打开Matlab 的FDATool

Matlab 集成了一套功能强大的滤波器设计工具FDATool (Filter Design & Analysis Tool )

,可以完成多种滤波器的设计、分析和性能评估。 点击Matlab 主窗口下方的“Start ”开始按钮,按图10-10选择“ToolBox ”→“Filter Design ”

第10章 DSP Builder 设计深入 373

→“Filter Design & Analysis Tool (FDATool )”,打开FDATool (如图10-11所示)。

图10-10 打开FDATool 图10-11 FDATool 界面 2、选择Design Filter

FDATool 左下侧排列了一组工具按钮,功能分别是:

滤波器转换(TransForm Filer )

设置量化参数(Set Quantization Parameters )

实现模型(Realize Model )

导入滤波器(Import Filter )

设计滤波器(Design Filter )

选择其中的按钮,进入设计滤波器界面,再选择:

z 滤波器类型(Filter Type )为低通(Lowpass )

z 设计方法(Design Method )为FIR ,采用窗口法(Window )

z 滤波器阶数(Filter Order )定制为15

z 窗口类型为Kaiser ,Beta 为0.5

z Fs 为48kHz ,Fc10.8kHz

注意,在滤波器阶数选择时,在此设置的是15阶,而不是16阶!这是由于在前面设计的16阶FIR 滤波器的常数系数项0)0(=h 。

其系统函数)(z H 可以用下式来表示:

EDA 技术与VHDL

374

∑=?=161

)(k k k z b z H 10-7

或可写成:

∑=??=1501)(k k k

z b z z H 10-8

即可以看成一个15阶的FIR 滤波器的输出结果经过了一个单位延时单元1

?z 。所以在FDATool 中把它当成15阶FIR 滤波器来计算参数。

点击,让Matlab 计算FIR 滤波器系数并作相关分析。

3、滤波器分析

计算完FIR 滤波器系数后,往往需要对设计好的FIR 滤波器进行相关的性能分析,以便了解是否满足设计要求。分析操作步骤如下:

选择FDATool 的菜单“Analysis ”→“Magnitude Response ”,启动幅频响应分析。图10-12显示了滤波器的幅频响应图,x 轴为频率,y 轴为幅度值(单位为dB )。

在图的左侧列出了当前滤波器的相关信息:

z 滤波器类型为:Direct Form FIR (直接I 型FIR 滤波器)

z 滤波器阶数为:15

注意,不是每一种FIR 滤波器设计方法计算的滤波器都是直接I 型结构的。如果在DSP Builder 中设计的FIR 滤波器为直接I 型结构,那就必须保证在这里显示的FIR 滤波器器结构为“Direct Form FIR ”。

选择菜单“Analysis ”→“Phase Response ”,启动相频响应分析。图10-13显示了滤波器的相频响应,可以看到设计的FIR 滤波器在通带内相位响应为线性的,即该滤波器是一个线性相位的滤波器。

图10-12 FIR 滤波器的幅频响应

第10章 DSP Builder设计深入375

图10-13 FIR滤波器的相频响应

图10-14显示了滤波器幅频特性与相频特性的比较。这可以通过选择菜单“Analysis”→“Magnitude & Phase Response”,来启动分析。选择菜单“Analysis”→“Group Delay Response”,启动群延时分析,波形如图10-15所示。

在菜单“Analysis”下还有一些分析:

z“Impulse Response”:冲激响应,见图10-16

z“Step Response”:阶跃响应,见图10-17。

z“Pole/Zero Plot”,零极点图,见图10-18。

由于直接I型FIR滤波器只有零点,所以在图10-18中没有极点的存在。

求出的FIR滤波器的系数可以选择菜单“Analysis”→“Filter Coefficients”来观察,图10-19列出了FDATool计算的15阶直接I型FIR滤波器部分系数。

图10-14 幅频响应与相频响应比较图10-15 FIR滤波器的群延时

图10-16 FIR滤波器的冲激响应图10-17 FIR滤波器的阶跃响应

EDA技术与VHDL

376

图10-18 FIR滤波器的零极点图10-19 FIR滤波器系数

4、量化

从图10-19可以看到,FDATool计算出的值是一个有符号小数,而在DSP Builder下建立的FIR滤波器模型需要一个整数(有符号整数类型)作为滤波器系数。所以必须进行量化,并对得到的系数进行归一化。为此,点击FDATool左下侧工具按钮进行量化参数设置。在设置“Turn quantization”前选择“√”,如图10-20所示。

在滤波器的设计指标中,已经提到FIR滤波器的输入位宽是9位的,表示为有符号数。在图10-20中设置前4项的量化格式(Format)为“[9 8]”,表示量化后位宽为9位,绝对值为8位;设置后2项(乘积、乘积和)的量化格式为“[32 30]”。

点击Optimization按钮,打开图10-21所示的对话框。在此量化优化设置对话框中,选择相关的优化选项。

图10-20 量化参数设置图10-21 量化优化设置在图10-22显示了量化后的部分系数值。注意在这里系数仍是用小数表示的,不同于量化前的系数,现在其二进制表示的位数已满足量化要求了。

设计的FIR滤波器在量化后,滤波器的性能会有所改变,其幅频响应、相频响应也有

第10章 DSP Builder设计深入377

所变化,见图10-23的量化后幅频、相频响应波形图。

量化在带来实现方便的同时也带来了量化噪声,图10-24显示了量化带来的噪声分析。

图10-22 量化后系数图10-23 量化后幅频、相频响应

图10-24 量化后噪声分析图10-25 导出系数对话框

5、导出滤波器系数

为导出设计好的滤波器系数,选择FDATool菜单“File”→“Export…”,打开导出(Export)对话框,如图10-25所示的窗中,选择导出到工作区(Workspace)。这时滤波器系数就存入了一个一维变量Num。不过这时Num中的元素是以小数形式出现的:

Num =

-0.0742 0.0234 0.1133 0.0117 -0.1758 -0.0977

0.3594 0.8281 0.8281 0.3594 -0.0977 -0.1758

0.0117 0.1133 0.0234 -0.0742

现在若要在FIR滤波器模型中使用这些数据,还需要将它们转化为整数。

在Matlab主窗口的命令窗口中键入:

Num * (2^8)

得到:

>> Num*(2^8)

ans =

Columns 1 through 10

-19 6 29 3 -45 -25 92 212 212 92

Columns 11 through 16

-25 -45 3 29 6 -19

EDA技术与VHDL

378

6、修改FIR滤波器模型添加参数

修改图10-9的电路,把计算出的系数逐个填入到FIR滤波器模型中,见图10-26。这样一个16阶直接I型FIR低通滤波器就设计完成了。

7、导出滤波器系数的另一种方法

在FIR滤波器阶数较大时,若按照以上的导出滤波器系数的方法,会不太方便,而且系数在设计要求有所变化时,修改极为不利。对此,可以按照以下方法来导出:把FIR滤波器模型中的h1~h16模块的参数“Constant Value(常数值)”设置为:

Num(n)*(2^8)

其中Num同上文所述,是FDATool的系数导出,n用具体的数字来代替,如h1模块用Num(1)*(2^8),h2模块用Num(2)*(2^8)。

最后利用SingalCompiler,选定器件系列,把模型转成VHDL文件,用QuartusII进行综合/适配,锁定管脚和下载至FPGA中,就可以完成硬件实现了。

图10-26 16阶低通FIR滤波器

10.1.4 使用FIR IP Core设计FIR滤波器

对于一个面向市场和实际工程应用的系统设计,开发效率十分重要。然而对于一般的设计者,在短期内不可能全面了解FIR滤波器(指在FPGA上实现)相关的优化技术,也没有必要了解过多的细节。此外,FIR滤波器滤波系数的确定,即FIR滤波器的设计方法,

第10章 DSP Builder设计深入379

也是比较烦琐的,需要花费大量的精力和时间才能设计出在速度、资源利用、性能上都满足要求的FIR滤波器。此外,虽然DSP Builder提供了大量的基本DSP模块,但是要了解用哪些模块构建一个高效的FIR滤波器仍然不是一件简单的事情。

但是,如果采用设计好的FIR滤波器的IP核,几乎可以很容易地解决以上的问题。对于IP核,在速度、资源利用、性能上往往进行过专门的优化,还提供了相关的IP应用开发工具。

Altera提供的FIR Compiler是一个结合Altera FPGA器件的FIR Filter Core,DSP Builder 与FIR Compiler可以紧密结合起来,DSP Builder提供了一个FIR Core的应用环境和仿真验证环境。以下通过介绍采用DSP Builder和FIR Compiler设计一个高速低通FIR滤波器,来介绍IP在Matlab工具上的基本使用方法。

使用FIR Core之前,首先必须保证Matlab、DSP Builder、QuartusII以及IP核的本身,即FIR Compiler等工具安装正确。如果一切正常,就可以在Simulink库管理器的Altera DSP Builder库中看到MegaCore Functions子库中含有FIR Compiler等IP模块了(图10-27)。

图10-27 IP Core模块库图10-28 设置FIR Core参数

MegaCore是Altera的IP Core计划中的一个组成部分,FIR Compiler作为一个MegaCore,不附带在DSP Builder和QuartusII中,需要单独向Altera公司购买或申请试用版。现在最新的FIR Compiler的版本可以支持QuartusII和DSP Builder。

从图10-27可以看到,FIR Filter Core在DSP Builder中是以模块的方式出现。可以使用第9章介绍的调用DSP Builder模块的方式来使用。步骤如下:

EDA技术与VHDL

380

1、FIR滤波器核的使用

为了调用FIP Core,在Simulink环境中新建一个模型,放置SignalCompiler模块和FIR 模块。注意,在DSP Builder中使用FIR Compiler时,需要有SignalCompiler的支持,所以在使用配置FIR模块时,必须放置SignalCompiler模块。

2、配置FIR滤波器器核

首先确定好FIR滤波器的设计指标。

双击新模型中的FIR模块,弹出功能选择窗图10-28,点击Parameterize按钮,打开FIR滤波器核的参数设置窗口,进行FIR滤波器参数的配置(图10-29)。在这里,设计者只要把设计要求直接输入到对应的设置框,并点击“Apply(应用)”按钮,FIR滤波器的系数就自动计算完成,并在窗口中显示了设计的FIR滤波器的幅频特性。

图10-29 确定FIR滤波器系数

除了将设计指标的输入外,还有一些选项可以设置。点击上方的“Edit Coefficient Set”按钮,出现如图10-30。在此,可以作一些设置,比如FIR滤波器设计时采用的窗口类型,在这里设为Hanning窗。设计者不用关心这些窗口类型在FIR滤波器设计的具体实现何种算法,只要观察不同的窗(Window)对FIR滤波器性能的影响的仿真情况即可,然后选定其中一种最符合设计性能要求的窗口类型。

第10章 DSP Builder设计深入381点击“Apply”按钮后,在图中的左侧就显示了计算出的滤波器系数。

图10-30 确定FIR工作方式

图10-31 FIR设定信息窗

关闭窗口后,即完成了FIR核的参数设置。这时会弹出一个信息窗(图10-31),从中可以了解有关此FIR核设定后的相关情况。

由图10-29可见,滤波器系数精度为10位;器件为Cyclone;结构为并行滤波器结构;

EDA技术与VHDL

382

选择了1级流水线;滤波器由LC逻辑宏单元构成;系数数据存于FPGA的M4K模块中;1个输入通道;8位有符号并行数据输入;全精度数据输出。下方列表列出资源占用情况。

由图10-30可见,选择了Low Pass Set低通滤波器工作模式;Hanning窗;采样率3.9E6;截止频率1.19E5等。

为了测试此设定好的FIR模块,特建立如图10-32所示的电路模型。此模型的左边是以下不同性能特性的信号发生器,以供FIR核的测试。右边电路是将输出截取了高10位,并转化成了无符号输出,以便能在实验系统上的Cyclone FPGA上进行实测。

注意,此模型也能利用HIL模块来进行硬件仿真测试。此工作留给读者完成。

图10-32 FIR滤波器核的测试电路模型

图10-33 Scope2显示波形

图10-32对FIR核选择的输入信号来自两个正弦信号的叠加信号,Scope2的显示波形如图10-33所示。图上方的信号可以认为是干扰波,下方是传输信号波。他们叠加以后的波形如图10-34所示。图10-32中的Scope1显示的波形如图10-34所示。上方是输入FIR 模块的信号,下方是FIR模块输出的信号。显然具有良好的滤波作用。

第10章 DSP Builder设计深入383

图10-34 Scope1显示波形

图10-32中的P2频谱仪显示的波形如图10-35所示。上方的波形是FIR核的输入信号;下方的波形是输入信号的频谱。图10-32中的P1频谱仪显示的波形如图10-36所示。上方波形是FIR核的输出信号;下方波形是输入信号的频谱。显然,高频率的信号已被滤除。

图10-35 P2频谱仪显示波形图10-36 P1频谱仪显示波形

10.2 VHDL模块插入仿真与设计

在Simulink平台上可以利用Altera DSP Builder库的HDL Import模块将HDL文本设计变成DSPBuilder设计模块,参与这个模型的软件仿真、硬件仿真、VHDL转换和硬件实现。

本节通过一个实例说明HDL插入模块设计方法:

1.完成VHDL设计

此例是一个FIR滤波器。其VHDL描述如例10-1、10-2和例10-3所示,其中例10-1

EDA技术与VHDL

384

是顶层设计,实体名:fir_vhdl。注意,这里的3个程序仅给出了实体。完整的设计文件可通过以下路径找到相关示例:

Altera\DSPBuilder\DesignExamples\Tutorials\BlackBox\HDLImport

【例10-1】

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_signed.all;

Entity fir_vhdl is

Port(clock : in std_logic;

sclr : in std_logic:='0';

data_in : in std_logic_vector(15 downto 0);

data_out : out std_logic_vector(32 downto 0));

end fir_vhdl;

【例10-2】

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY lpm;

USE lpm.lpm_components.all;

ENTITY final_add IS

PORT ( data, datab : IN STD_LOGIC_VECTOR (32 DOWNTO 0);

Clock, aclr : IN STD_LOGIC ;

Result : OUT STD_LOGIC_VECTOR (32 DOWNTO 0) );

END final_add;

【例10-3】

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY altera_mf;

USE altera_mf.altera_mf_components.all;

ENTITY four_mult_add IS

PORT( clock0 : IN STD_LOGIC := '1';

dataa_0 : IN STD_LOGIC_VECTOR (15 DOWNTO 0) := (OTHERS => '0');

aclr3 : IN STD_LOGIC := '0';

datab_0 : IN STD_LOGIC_VECTOR (13 DOWNTO 0) := (OTHERS => '0');

datab_1 : IN STD_LOGIC_VECTOR (13 DOWNTO 0) := (OTHERS => '0');

datab_2 : IN STD_LOGIC_VECTOR (13 DOWNTO 0) := (OTHERS => '0');

datab_3 : IN STD_LOGIC_VECTOR (13 DOWNTO 0) := (OTHERS => '0');

shiftouta : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);

result : OUT STD_LOGIC_VECTOR (31 DOWNTO 0) );

END four_mult_add;

Vericut 基础教程-构建机床、程序原点、刀具设置、宏程序仿真 by ljg

Vericut 基础培训一构建三轴机床、仿真宏程序 Vericut 基础培训1 ——构建三轴机床,仿真宏程序 作者:LJG 使用Vericut仿真,必须包含毛坯、数控程序、刀具三个部分,但为了仿真的准确性和真实性,我们还需要机床、夹具用于仿真碰撞,设计模型用于比对仿真结果的正确性等。 这一章我们从基本的三轴机床构建讲起。 在Vericut里有两种方法构建机床,一种是通过Vericut自带的简单建模工具建立机床模型,另外一种是使用其它CAD软件先建立好机床模型,再将机床模型文件导出为Vericut可以接受的文件格式,再导入Vericut。用Vericut自带的建模工具建立机床模型比较麻烦,这里我们用第二中方法,利用NX将建好的机床模型文件导出为.STL 格式文件,并导入Vericut用以构建三轴机床。 一、从NX输出机床模型 从论坛https://www.sodocs.net/doc/1d10545262.html,上下载机床模型文件,用NX6打开,如下图1所示。 图 1 一般像机床外壳,控制系统操作面板等实际仿真过程中不需要的部件可以不导出,不过在Vericut里导入不参与仿真的部件可以增加机床的真实感。这里我们不导出机床外壳,控制系统操作面板这两个部件,将这两个部件隐藏如图2所示。

图 2 将不用的部件隐藏后,我们可以看见如图3所示的主轴端面的坐标系。 图 3 在机床建模的时候,我们一般会按照机床的机械零点位置来建立各个机床运动部件的模型,而机床的Z轴的机械原点一般在主轴端面,如图3所示。但从这个机床模型可以看出X、Y轴的位置并不在机械原点,所以我们导出后还要在Vericut里进行调整。 下面先输入机床床身,即在仿真过程中不运动的部件。选择主菜单File > Export >STL…,弹出Rapid Prototyping对话框,这里可以设置输出模型的公差,公差的大小会影响STL文件的大小,不改变参数,单击OK,在弹出的对话框中输入要保存的文件名,输入Based_Y,双击鼠标中键(单击两次OK),选择绿色的底座和导轨,如图4所示的高亮显示部件,选择完成后所有弹出的窗口,都选择OK。 图4

Spring_Security-3.0.1_中文自学教程

Spring Security-3.0.1 中文官方文档(翻译版) 这次发布的Spring Security-3.0.1 是一个bug fix 版,主要是对3.0 中存在的一些问题进行修 正。文档中没有添加新功能的介绍,但是将之前拼写错误的一些类名进行了修正,建议开发者以这一版本的文档为参考。 另:Spring Security 从2010-01-01 以后,版本控制从SVN 换成了GIT,我们在翻译文档的时候,主要是根据SVN 的变化来进行文档内容的比对,这次换成GIT 后,感觉缺少了之前那种文本比对工具,如果有对GIT 熟悉的朋友,还请推荐一下文本比对的工具,谢谢。 序言 I. 入门 1. 介绍 1.1. Spring Security 是什么? 1.2. 历史 1.3. 发行版本号 1.4. 获得Spring Security 1.4.1. 项目模块 1.4.1.1. Core - spring-security-core.jar 1.4.1. 2. Web - spring-security-web.jar 1.4.1.3. Config - spring-security-config.jar 1.4.1.4. LDAP - spring-security-ldap.jar 1.4.1.5. ACL - spring-security-acl.jar 1.4.1.6. CAS - spring-security-cas-client.jar 1.4.1.7. OpenID - spring-security-openid.jar 1.4. 2. 获得源代码 2. Security 命名空间配置 2.1. 介绍 2.1.1. 命名空间的设计 2.2. 开始使用安全命名空间配置 2.2.1. 配置web.xml 2.2.2. 最小 配置 2.2.2.1. auto-config 包含了什么? 2.2.2.2. 表单和基本登录选项 2.2. 3. 使用其他认证提供器 2.2. 3.1. 添加一个密码编码器 2.3. 高级web 特性 2.3.1. Remember-Me 认证 2.3.2. 添加HTTP/HTTPS 信道安全 2.3.3. 会话管理 2.3.3.1. 检测超时 2.3.3.2. 同步会话控制 2.3.3.3. 防止Session 固定攻击 2.3.4. 对OpenID 的支持 2.3.4.1. 属性交换

Vericut 7.0教程 新功能

Vericut 7.0 新功能 Vericut 7.0的增强功能 亮点 加强了项目树(Project Tree)功能,减少了弹出对话框的数量,我们只要通过导航就可以创建一个仿真项目。Vericut 7.0在创建仿真项目方面与Vericut 6.2是有很大区别的。 ●项目必须通过项目树来配置。 ●以前版本中那些弹出对话框中的常用功能,都放置到项目树中。 ●选定项目树中的任意节点,在项目树的底部都会出现此节点的配置菜单。 ●在项目树中还增加了一种新的文件选择方法 ●在项目树配置菜单中的更改会直接应用,而不需要按“确定”、“应用”、“取消”等按钮。 ●由于项目树中也可以显示机床组件,则取消了组件树。 现在的项目树能引导您使用项目树的各种功能完成一个项目中的所有的设置的配置,例如: ●通过项目树从上到下的结构,可以完成项目树中所有的节点的配置。 ●在创建和配置某一个设置的过程中,可以有选择的在项目树底部显示配置面板。 ●配置面板中显示的设置操作都是配置项目时最常用的。 ●配置面板中显示的设置功能是根据项目树中选定的各个节点而不同,是各节点特有的。 ●在配置面板中的任何操作(填写的文字和数字、确认的选项、或点击的按钮)都会直接应用,不需要你按“确定”、“应用”等等。 ●不常用的功能可以通过鼠标右键项目树中各个节点弹出的快捷菜单,或者通过左键单击菜单工具栏弹出的对话框来设定。 VERICUT在计算和动画仿真NC代码的运动轨迹时,采用了一种新的方法。 ● 动画运动在所有的视图里都是等同的。 ● 在不同的视图类型中刀具的显示是一样的。

● 对于所有的动作类型和视图类型,放慢和跳跃切削都是一样的。 ● 碰撞公差和运动显示是相互独立的。 功能的增强 刀轨和机床验证 *VC增加了模拟自动倒圆、自动倒角的功能:approaching/departing, inside/outside, and CW/CCW. *工具条可以完全用户定制。每个人可以根据自己的需要添加或去掉某些按钮,并且可以调整按钮的显示顺序。 *在工件视图里,材料去除和刀具显示的功能增强了,可以在X方向或Y方向偏置刀具驱动点。*现在在VC的图形显示力可以很好的显示出水切割刀具的三段不同的区域,和其在刀具管理菜单的刀具显示区域显示得是一模一样的。 *BLOCK定义和描述的,以前只能用数字表示的变量现在也可以用。 *按钮“Preserve Stock Transition”现在已经移到了切削过程毛坯的右键菜单和切削过程毛坯的“Configure Model”的装配子菜单中。具体操作:运行VC的程序后,会自动生成一个cut stock,鼠标右键点击,就会看打“Preserve Stock Transition”,或者左键点击cut stock,在项目树的下方会出现一个“Configure Model”对话框,点击“Assemble”,就会看见“Preserve Stock Transition”。 *VC现在能参考NX的PART格式的文件。VC 是通过一个NX\OPEN的应用程序来打开文件的。 *VC的机床和控制系统文件的格式是XML格式的。 *工作目录可以可以保存到用户选择的文件夹中。 *现在可以鼠标右键点击项目树中的坐标系来实现坐标系的重命名。 *在项目树里可以指定G代码偏置,比如编程原点、工件偏置等等。 *在File>Preferences增加了一个勾选项:自动将工作目录设置到当前项目文件夹。当勾选的时

学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。 Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等); √提供强大的约定大于配置的契约式编程支持; √能简单的进行Web层的单元测试; √支持灵活的URL到页面控制器的映射; √非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); √非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; √提供一套强大的JSP标签库,简化JSP开发; √支持灵活的本地化、主题等解析; √更加简单的异常处理; √对静态资源的支持; √支持Restful风格。 2.3、Spring Web MVC架构

vericut6中文教程-构建二轴车铣复合机床

Session 44 构建一个二轴运动的车铣中心 在这一课中演示怎样定义一个 VERICUT 二轴运动的车铣中心。通过这课演示定义有刀塔和多种刀具 加载的机床的应用。课文中集中在定义部件和模型来构建一个功能型的机床。极少的考虑部件显示的性质。 图 106.1 所示例子被定义的数控机床刀具。图中确定机床坐标(XcYcZc axes),运动坐标系和主要部件。使用 Fanuc 15T 车床控制系统。一个倾斜 45o的卧式车床;因此 X 轴有 45o的斜度。塔盘上有 12 个指针位 置。样板程序将使用三把刀具。构建好二轴车床以后并且配置一个合适的项目文件,VERICUT 将配置好以 后再通过数控程序仿真机床运动。 图 106.1 所示,XcYcZc 坐标系表示机床零点坐标系统。图示机床位置在 X460 Z520。 图 106.1 车铣中心 步骤: 1.建立一个公制的项目文件。 运行 VERICUT 应用程序。 223

选择File> New Project > Millimeter 菜单按钮。 2.在 Machine/Cut Stock 视图中显示坐标系。 在图形区,右击,从系统弹出的快捷菜单中选择View Type> Machine/Cut Stock 菜单命令。 在图形区,右击,从系统弹出的快捷菜单中选择Display Axes > Component 菜单命令。 重复操作显示 Model 坐标系。 重复操作显示 Driven Point Zero 坐标系。 在图形区,右击,选择View > H-ISO 菜单命令。 3.打开 Fanuc 15T 为车床配置系统控制文件。 Project,从系统弹出的右键快捷菜单中选择Expand All Children 在 Project tree(项目树)中,右击 菜单命令。 在 Project tree(项目树)中,右击Control,从系统弹出的右键快捷菜单中选择Open 菜单命令。 在 Shortcut 下拉列表框中选择 Library 选项。 在文件列表框中选择文件 fan15t_t.ctl。 单击 Open 按钮,图 106.2 所示。 图 106.2 配置控制系统 接下来步骤定义部件从"Base" to "Tool"。 在机床的刀具侧部件:Base > Z > X> Tool。 4.显示部件树。 ),系统弹出 Component Tree 窗口,如图 106.3在主菜单中,选择Configuration > Component Tree ( Or 所示。 224

Java经典入门教程 强推

java基础教程:Java基础 疯狂代码 https://www.sodocs.net/doc/1d10545262.html,/ ?:http:/https://www.sodocs.net/doc/1d10545262.html,/BlogDigest/Article75483.html Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java技术也不断更新。 Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版 ),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。 2009年04月20日,oracle(甲骨文)宣布收购sun。 1991年,Sun公司的James Gosling。Bill Joe等人,为电视、控制考面包机等家用电器的交互操作开发了一个Oak(一种橡树的名字)软件,他是Java的前身。当时,Oak并没有引起人们的注意,直到1994年,随着互联网和3W的飞速发展,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官Scott McNealy的支持,得以研发和发展。为了促销和法律的原因,1995年Oak更名为Java。Java的得名还有段小插曲呢,一天,Java小组成员正在喝咖啡时,议论给新语言起个什么名字的问题,有人提议用Java(Java是印度尼西亚盛产咖啡的一个岛屿),这个提议得到了其他成员的赞同,于是就采用Java来命名此新语言。很快Java被工业界认可,许多大公司如IBM Microsoft.DEC等购买了Java的使用权,并被美国杂志PC Magazine评为1995年十大优秀科技产品。从此,开始了Java应用的新篇章。 Java的诞生时对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响: (1)软件4A目标要求软件能达到任何人在任何地方在任何时间对任何电子设备都能应用。这样能满足软件平台上互相操作,具有可伸缩性和重要性并可即插即用等分布式计算模式的需求。 (2)基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。在此基础上形成了Java.2平台和.NET平台两大派系,推动了整个IT业的发展。 (3)对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。 (4)对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。 总之,目前以看到了Java对信息时代的重要性,未来还会不断发展,Java在应用方面将会有更广阔的前景。 ; JAVA-名字起源 Java自1995诞生,至今已经14年历史。Java的名字的来源:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。 据James Gosling回忆,最初这个为TV机顶盒所设计的语言在Sun内部一直称为Green项目。我们的新语言需要一个名字。Gosling注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。 在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。排在第一位的是Silk(丝绸

最全最经典spring_mvc教程

spring mvc学习教程(一)-入门实例 引言 1.MVC:Model-View-Control 框架性质的C层要完成的主要工作:封装web请求为一个数据对象、调用业务逻辑层来处理数据对象、返回处理数据结果及相应的视图给用户。 2.简要概述springmvc Spring C 层框架的核心是DispatcherServlet,它的作用是将请求分发给不同的后端处理器,也即使用了一种被称为Front Controller 的模式(后面对此模式有简要说明)。Spring 的C 层框架使用了后端控制器来、映射处理器和视图解析器来共同完成C 层框架的主要工作。并且spring 的C 层框架还真正地把业务层处理的数据结果和相应的视图拼成一个对象,即我们后面会经常用到的ModelAndView 对象。 一、入门实例 1. 搭建环境 在spring的官方API文档中,给出所有包的作用概述,现列举常用的包及相关作用: org.springframework.aop-3.0.5.RELEASE.jar:与Aop编程相关的包 org.springframework.beans-3.0.5.RELEASE.jar:提供了简捷操作bean的接口org.springframework.context-3.0.5.RELEASE.jar:构建在beans包基础上,用来处理资源文件及国际化。 org.springframework.core-3.0.5.RELEASE.jar:spring核心包 org.springframework.web-3.0.5.RELEASE.jar:web核心包,提供了web层接口org.springframework.web.servlet-3.0.5.RELEASE.jar:web 层的一个具体实包,DispatcherServlet也位于此包中。 后文全部在spring3.0 版本中进行,为了方便,建议在搭建环境中导入spring3.0 的所有jar 包(所有jar 包位于dist 目录下)。 2.编写HelloWorld实例 步骤一、建立名为springMVC_01_helloword,并导入上面列出的jar 包。 步骤二、编写web.xml配置文件,代码如下: spring

vericut6全中文版教程-如何配置机床刀库

Session 53 配置一个带刀库的机床 这一课将演示怎样配置一个有自动换刀配置的 VERICUT 机器。这一课将介绍用户使用刀具库部件和控制刀具更换的子系统。 1. 打开项目文件“tool_chain.vcproject”。 已经配置好的项目文件没有刀具库的功能,传送装置仅仅显示在图形窗口中。这一课将演示修改传送装置成为有刀具更换功能的刀具库。 运行 VERICUT 应用程序。 选择 File> Open 菜单命令,系统弹出 Open Project 对话框。 在 Shortcut 下拉列表框中选择 Training 选项。 选择文件 tool_chain.vcproject。 单击 Open 按钮确认打开文件,如图 115.1 所示。 选择工具条上按钮设定你的工作路径。 图 115.1 Machine 2.定义一个刀具放置链部件。 在主菜单中,选择Configuration > Component Tree ( Or),如图 115.1 所示。 276

图 115.1 部件树 右击 TC_Carousel ,从系统弹出的快捷菜单中选择Append > Tool Chain 命令。 双击 Tool Chain,系统弹出 Modeling 窗口。 在 Component Attributes 选项卡,在 Machine 选项组右侧单击 Toolchain Parameters 按钮,系统弹出Toolchain 窗口,如图 115.2 所示。 图 115.2 Toolchain 注意:传送装置的刀具数量能在 Toolchain 窗口中定义,以及每把刀具之间的距离。公式在计算器中能 被调用来计算刀穴之间输入值的距离。 在 Number of pockets 文本框中输入:10。 在Pocket-to-pocket distance (2 * π * r / 刀穴数)文本框中输入:4.744。 单击 OK 按钮。 277

Spring中文开发详细手册

Spring开发教程 Spring教程 (1) Spring框架概述 (2) Spring是什么? (2) Spring的历史 (3) Spring的使命(Mission Statement) (3) Spring受到的批判 (3) Spring包含的模块 (4) 总结 (5) Spring的IoC容器 (6) 用户注册的例子 (6) 面向接口编程 (7) (用户持久化类)重构第一步——面向接口编程 (8) 重构第二步——工厂(Factory)模式 (9) 重构第三步——工厂(Factory)模式的改进 (9) 重构第四步-IoC容器 (10) 控制反转(IoC)/依赖注入(DI) (10) 什么是控制反转/依赖注入? (10) 依赖注入的三种实现形式 (11) BeanFactory (13) BeanFactory管理Bean(组件)的生命周期 (14) Bean的定义 (15) Bean的之前初始化 (19) Bean的准备就绪(Ready)状态 (21) Bean的销毁 (21) ApplicationContext (21) Spring的AOP框架 (21) Spring的数据层访问 (21) Spring的声明式事务 (21) Spring对其它企业应用支持 (22)

名词解释 容器: 框架: 框架 容器 组件: 服务: Spring框架概述 主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。 目的:让学员全面的了解Spring框架,知道Spring框架所提供的功能,并能将Spring 框架和其它框架(WebWork/Struts、hibernate)区分开来。 Spring是什么? Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ?目的:解决企业应用开发的复杂性 ?功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ?范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ■轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ■控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ■面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实

Spring框架入门教程

Spring基础入门 一、基础知识 1.依赖注入、控制反转 依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中 控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部窗口负责得。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。 2.spring 的主要特性。 (1)降低组件之间的耦合度,实现软件各层之间的解耦。 (2)可以使用容器提供的众多服务,如:事务管理服务、消息服务、JMS 服务、持久化服务等等。 (3)容器提供单例模式支持,开发人员不再需要自己编写实现代码。 (4)容器提供了AOP 技术,利用它很容易实现如权限拦截,运行期监控等功能。 (5)容器提供的众多辅作类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate. (6)对主流的应用框架提供了集成支持。 3.常用技术 控制反转/依赖注入---面向切入编程---与主流框架的整合、管理--- 二、实例拓展 1.准备搭建环境 dist\spring.jar lib\jakata-commons\commons-loggin.jar 如果使用了切面编程,还需下列jar 文件: lib\aspectj\aspectjweaver.jar 和aspectjrt.jar lib\cglib\cglib-nodep-2.1.3.jar 如果使用了jsr-250 中的注解,还需要下列jar 文件: lib\j2ee\common-annotations.jar 2.搭建并测试环境 建立名为spring_01_base项目,根据需求导入jar包。建立一个Junit测试单元SpringEnvTest,测试代码如下: @Test public void testEnv() { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); } beans.xml 配置文件在此省略(见下)。运行此测试如无错,则说明环境搭建成功。 说明:beans.xml 可以在类路径下进行配置,也可以在具体的目录下配置。可以是一个配置文件,也可以是多个配置文件组成String 数组传入。 3.实例 作如下准备工作:(1)建立UseDao接口,代码如下: package com.asm.dao; public interface UserDao { void save(); }

Spring基础教程

Spring教程 作者:钱安川(Moxie)

Spring教程 (1) Spring框架概述 (3) Spring是什么? (3) Spring的历史 (4) Spring的使命(Mission Statement) (4) Spring受到的批判 (4) Spring包含的模块 (5) 总结 (6) Spring的IoC容器 (6) 用户注册的例子 (7) 面向接口编程 (8) (用户持久化类)重构第一步——面向接口编程 (8) 重构第二步——工厂(Factory)模式 (9) 重构第三步——工厂(Factory)模式的改进 (10) 重构第四步-IoC容器 (11) 控制反转(IoC)/依赖注入(DI) (11) 什么是控制反转/依赖注入? (11) 依赖注入的三种实现形式 (12) BeanFactory (14) BeanFactory管理Bean(组件)的生命周期 (15) Bean的定义 (16) Bean的之前初始化 (19) Bean的准备就绪(Ready)状态 (21) Bean的销毁 (21) ApplicationContext (21) Spring的AOP框架 (21) Spring的数据层访问..................................................................................... 错误!未定义书签。Spring的声明式事务..................................................................................... 错误!未定义书签。Spring对其它企业应用支持......................................................................... 错误!未定义书签。 名词解释 容器: 框架: 组件: 服务:

vericut中文教程-构建二轴车床模型

Session 43 构建一个二轴运动的车床模型 在这一课中演示怎样配置一个 VERICUT 二轴运动的车床文件。并且在 VERICUT 中为机床添加一个仿真的数控程序。二轴车床使用一个 Fanuc 16T.二轴控制系统,运行一个车加工程序“mcdturn.mcd”,如图105.1 所示 图 105.1 两轴车床 机床零点在主轴端面并且在主轴中心。上图显示机床回到 X12.0 Z14.0 的位置。 步骤: 1.建立一个英制的项目文件。 运行 VERICUT 应用程序。 选择File> New Project > Inch 菜单按钮。 显示项目树“Project Tree”。 2.给机床配置 Fanuc 16T 控制系统文件。 在 Project tree(项目树)中,右击Setup : 1,,从系统弹出的右键快捷菜单中选择Expand All Children 菜单命令。 在 Project tree(项目树)中,右击Control,从系统弹出的右键快捷菜单中选择Open 菜单命令。 在 Shortcut 下拉列表框中选择 Library 选项。 在文件列表框中选择 fan16t.ctl 文件。 单击 Open 按钮。 接下来步骤定义部件从"Base" to "Tool"。 216

在机床的刀具部分部件:Base > Z > X> Tool 3.显示部件树。 在主菜单中,选择Configuration > Component Tree ( Or 所示。 ),系统弹出 Component Tree 窗口,如图 105.2 图 105.2 部件树 4.增加"Z" to "Base"。 在部件树中,选择右击Base(0,0,0)。 Base(0,0,0),从系统弹出的快捷菜单中选择Append > Z Linear 菜单命令如图 105.3 所示。 图 105.3 添加Z 217

Spring教程

Spring教程

Spring教程 (1) Spring框架概述 (3) Spring是什么? (3) Spring的历史 (4) Spring的使命(Mission Statement) (4) Spring受到的批判 (4) Spring包含的模块 (4) 总结 (6) Spring的IoC容器 (6) 用户注册的例子 (7) 面向接口编程 (8) (用户持久化类)重构第一步——面向接口编程 (8) 重构第二步——工厂(Factory)模式 (9) 重构第三步——工厂(Factory)模式的改进 (10) 重构第四步-IoC容器 (10) 控制反转(IoC)/依赖注入(DI) (11) 什么是控制反转/依赖注入? (11) 依赖注入的三种实现形式 (12) BeanFactory (14) BeanFactory管理Bean(组件)的生命周期 (14) Bean的定义 (15) Bean的之前初始化 (18) Bean的准备就绪(Ready)状态 (21) Bean的销毁 (21) ApplicationContext (21) Spring的AOP框架 (21) Spring的数据层访问 (21) Spring的声明式事务 (21) Spring对其它企业应用支持 (21) 名词解释 容器: 框架: 组件: 服务:

Spring框架概述 主要内容:介绍Spring的历史,Spring的概论和它的体系结构,重点阐述它在J2EE中扮演的角色。 目的:让学员全面的了解Spring框架,知道Spring框架所提供的功能,并能将Spring 框架和其它框架(WebWork/Struts、hibernate)区分开来。 Spring是什么? Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 ?目的:解决企业应用开发的复杂性 ?功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ?范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 ■轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 ■控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ■面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 ■容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean 可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 ■框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。 所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它

Spring3.0 MVC 中文教程

Spring3 MVC - 3到Spring MVC框架简介 Spring3 MVC框架简介 Spring MVC是Spring的框架的Web组件。它提供了丰富的功能,为建设强大的Web应用程序。Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。 Spring3.0 MVC系列 ?第1部分:到Spring 3.0 MVC框架简介 ?第2部分:在Spring 3.0 MVC创建Hello World应用程序 ?第3部分:在Spring 3.0 MVC的形式处理 ?第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程 ?第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse ?第6部分:Spring3 MVC示例教程Spring主题 ?第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的 在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。相反,它往往是最好直接绑定到业务对象。 请求处理生命周期 Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。Spring DispatcherServlet DispatcherServlet是Spring IoC容器完全集成,并允许我们使用的每一个Spring的其他功能。

Spring深入浅出教程

一、理论知识 1.依赖注入、控制反转 依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中 控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部窗口负责得。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。 2.spring 的主要特性。 (1)降低组件之间的耦合度,实现软件各层之间的解耦。 (2)可以使用容器提供的众多服务,如:事务管理服务、消息服务、JMS 服务、持久化服务等等。 (3)容器提供单例模式支持,开发人员不再需要自己编写实现代码。 (4)容器提供了AOP 技术,利用它很容易实现如权限拦截,运行期监控等功能。 (5)容器提供的众多辅作类,使用这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate. (6)对主流的应用框架提供了集成支持。 3.常用技术 控制反转/依赖注入---面向切入编程---与主流框架的整合、管理--- 二、基本实例 1.准备搭建环境 dist\spring.jar lib\jakata-commons\commons-loggin.jar 如果使用了切面编程,还需下列jar 文件: lib\aspectj\aspectjweaver.jar 和aspectjrt.jar lib\cglib\cglib-nodep-2.1.3.jar 如果使用了jsr-250 中的注解,还需要下列jar 文件: lib\j2ee\common-annotations.jar 2.搭建并测试环境 建立名为spring_01_base项目,根据需求导入jar包。建立一个Junit测试单元SpringEnvTest,测试代码如下: @Test public void testEnv() { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); } beans.xml 配置文件在此省略(见下)。运行此测试如无错,则说明环境搭建成功。 说明:beans.xml 可以在类路径下进行配置,也可以在具体的目录下配置。可以是一个配置文件,也可以是多个配置文件组成String 数组传入。 3.实例 作如下准备工作:(1)建立UseDao接口,代码如下: package com.asm.dao; public interface UserDao { void save(); } (2)建立UserDao接口的实现类,UserDaoImpl package com.asm.dao.impl;

vericut6全中文版教程-添加刀具到车铣复合机床

Session 45 添加一个铣刀到车铣中心 在这一课中,我们将增加一些铣刀到两轴车铣中心。这些工作在刀具管理器中完成,因此刀具得到正确的引导到刀塔中,如图 107.1 所示。 图 107.1 车铣中心 1.打开项目文件 mill_turn.vcproject。 运行 VERICUT 应用程序。 选择 File> Open 菜单命令,系统弹出 Open Project 对话框。 在 Shortcut 下拉列表框中选择 Training 选项。 在文件列表框中选择 mill_turn.vcproject 文件。 单击 Open 按钮确认打开文件。 显示项目树 Project Tree。 242

2.打开刀具管理器并增加刀具#3, Flat End Mill 0.5”Dia, 2.0” Long, .625” Flute Length。 在 Project tree(项目树)中,双击Tooling:Mill_turn 选项,从系统弹出 Tool Manager 窗口。 在 Tool Manager 主菜单中选择Add > Tool > New > Mill 菜单按钮,系统弹出 Tool 窗口。 单击(Flat Bottom End Mill)按钮。 在Flat Bottom End Mill 选项组中输入: Diameter (D) = 0.5 Height (H) = 2 Flute Length = 0.625 单击 Add 按钮。 选项卡左上方,在 Component Type 下拉列表框中选择 Holder 选项。 单击(Reference)按钮。 在 Reference 选项组中单击 Pick…按钮,系统弹出 Search Tool 窗口。 单击 Search 按钮。 选择 Live_spindle 选项。 单击 OK 按钮。 单击 Add 按钮。 单击 Close 按钮关闭 Tool 窗口。 在 Tool Manager 窗口,在 3 同样一行选择对应的Gage Point(0 0 0)。 移动光标到窗口右侧图形区的刀柄顶部。 单击鼠标中键仅仅记录 Z 值。 注意:单击鼠标中键方法仅仅是在 VERICUT 中动态的方式控制。 Gage Point 的值应该是:(0 0 4.6)。 刀具列表框顶部,单击 ID 按钮刀具按类排序,如图 107.2 所示 243

相关主题