搜档网
当前位置:搜档网 › Verilog HDL常用的行为仿真描述语句(一)

Verilog HDL常用的行为仿真描述语句(一)

Verilog HDL常用的行为仿真描述语句(一)
Verilog HDL常用的行为仿真描述语句(一)

Verilog HDL常用的行为仿真描述语句(一)

一、循环语句

1、forever语句

forever语句必须写在initial模块中,主要用于产生周期性波形。

2、利用for、while循环语句完成遍历

for、while语句常用于完成遍历测试。当设计代码包含了多个工作模式,那么就需要对各个模式都进行遍历测试。其典型的应用模板如下:[c-sharp:nogutter] view plaincopy?

parameter mode_num = 5;

initial begin

// 各种不同模式的参数配置部分

for(i=0; i<mode_num-1; i=i+1) begin

case (i)

0: begin

.

.

end

1: begin

.

.

end

.

.

endcase

end

// 各种模式共同的测试参数

.

.

end

3、利用repeat语句来实现有次数控制的事件,其典型示例如下:

[c-sharp] view plaincopy?

initial begin

// 初始化

in_data = 0;

wr = 0;

// 利用repeat语句将下面的代码执行10次

repeat(10) begin

wr = 1;

in_data = in_data + 1;

#10;

wr = 0;

#200;

end

end

4、用disable实现循环语句的异常处理,其典型示例如下:[c-sharp] view plaincopy?

begin : one_branch

for(i=0; i<n; i=i+1) begin : two_branch

if (a==0)

disable one_branch;

if (a==b)

disable two_branch;

end

end

Director 疑难解答

Director 疑难解答 01. 如何制作一个放映机(projector)可以在不同分辨率下播放? [A] 加入下列语句: on prepareMovie (the stage).rect = (the desktopRectList)[1] (the stage).drawRect = (the desktopRectList)[1] end 注意,这个语句是通过放大或缩小舞台来达到效果的,所以会有变形。 02. 如何导入photoshop的图层? [A] Director7.0以后的版本你可以通过Medialab公司的Photocaster Xtra来实现。 03. 在程序中如何导入图片而不失去图片周围的白色部份? [A] 通过指定图片的trim whitespace属性可以实现: m = new(#bitmap) m.trimWhiteSpace = 0 m.filename = the moviePath & ‘‘file.bmp‘‘ m.media = m.media 04. 如何得到全局变量列表? [A] 在messages的窗口中,你可以输入showGlobals来显示所有的全局变量。以下的代码也可以显示所有的全局变量: repeat with x = 1 to (the globals).count put (the globals).getPropAt(x) & ‘‘= ‘‘& (the globals)[x] end repeat 05. 如何播放mpeg文件? [A] 有一系列的方法,不能说哪一种更好,并且在pc机和mac机上是不一样的,下面是四种常见的方法: 1. 用一个xtra。这种方法用起来简单,且也有好的产品支持,但大多不能跨平台使用。当然,这是需要购买的。 2. 使用ActiveX控件。这只能在pc机上用,相对xtra而言会有更多的限制,但它是免费的,且与标准playback能够很好的集成。

可综合的Verilog语法子集总汇

常用的RTL语法结构如下: ☆模块声明:module……endmodule ☆端口声明:input,output,inout(inout的用法比较特殊,需要注意) ☆信号类型:wire,reg,tri等,integer常用语for语句中(reg,wire时最常用的,一般tri和integer 不用) ☆参数定义:parameter ☆运算操作符:各种逻辑操作符、移位操作符、算术操作符大多时可综合的(注:===与!==是不可综合的) ☆比较判断:if……else,case(casex,casez)……default endcase ☆连续赋值:assign,问号表达式(?:) ☆always模块:(敏感表可以为电平、沿信号posedge/negedge;通常和@连用) ☆begin……end(通俗的说,它就是C语言里的“{ }”) ☆任务定义:task……endtask ☆循环语句:for(用的也比较少,但是在一些特定的设计中使用它会起到事半功倍的效果) ☆赋值符号:= 和<= (阻塞和非阻塞赋值,在具体设计中时很有讲究的) 可综合的语法时verilog可用语法里很小的一个子集,用最精简的语句描述最复杂的硬件,这也正是硬件描述语言的本质。对于做RTL级设计来说,掌握好上面这些基本语法是很重要。 相信大家在看了这么多了verilog语法书籍以后一定有点烦了,那么现在我告诉大家一个好消息,对于一个RTL级的设计来说,掌握了上面的语法就已经足够了,无论多么牛逼的工程师,在他的代码

里无非也就是上面一些语法而已。当然了,对于一个能够进行很好的仿真验证的代码,一般还需要在RTL级的设计代码中添加一些延时之类的语句,比如大家一定知道#10的作用,就是延时10个单位时间,这个语句虽然在仿真的时候是实实在在的延时,但是这个语句在综合后是会被忽略的,也就是说在我们综合并且布局布线最后烧进FPGA里,这个#10的延时是不会在硬件上实现的。所以说,上面给出的这些语法才是可以最后在硬件上实现的,其它的语法大多会在综合后被忽略。这么一来大家就要问了,为什么语法书里又要给出这么多的语法呢?呵呵,它们大都是为仿真验证是写testbench 准备的,先点到为止,下集继续! 对于模型(module)的建立,要保证可综合性应该注意: (1)不使用initial。(被忽略) (2)不使用#10。(被忽略) (3)不使用循环次数不确定的循环语句,如forever、while等。 (4)不使用用户自定义原语(UDP元件)。 (5)尽量使用同步方式设计电路。 (6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 (7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。 (8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 (9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值。(10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。 (11)如果不打算把变量推导成锁存器,那么必须在if语句或case语句的所有条件分支中都对变量明确地赋值。 (12)避免混合使用上升沿和下降沿触发的触发器。

VerilogHDL复习题与答案

VerilogHDL硬件描述语言复习 一、 1.VerilogHDL是在哪一年首次被IEEE标准化的? 答:VerilogHDL是在1995年首次被IEEE标准化的。 2.VerilogHDL支持哪三种基本描述方式? 答:VerilogHDL可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程 化结 构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述 建模 3.VerilogHDL是由哪个公司最先开发的? 答:VerilogHDL是由GatewayDesignAutomation公司最先开发的 4.VerilogHDL中的两类主要数据类型什么? 答:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示 抽象的数据存储元件。 5.UDP代表什么? 答:UDP代表用户定义原语 6.写出两个开关级基本门的名称。答: pmosnmos 7.写出两个基本逻辑门的名称。答: andor 8.在数据流描述方式中使用什么语句描述一个设计? 答:设计的数据流行为使用连续赋值语句进行描述 9.采用结构描述方式描述1位全加器。 答: modulefull_add(a,b,cin,s,co); inputa,b,cin; outputs,co; wireS1,T1,T2,T3; xor X1(S1,a,b), X2(s,S1,cin); and A1(T3,a,b), A2(T2,b,cin), A3(T1,a,cin); or O1(co,T1,T2,T3); endmodule 10.initial语句与always语句的关键区别是什么? 答:1)initial语句:此语句只执行一次。 2)always语句:此语句总是循环执行,或者说此语句重复执行。 11.采用数据流方式描述2-4译码器。 答: 'timescale1ns/ns moduleDecoder2×4(A,B,EN,Z); inputA,B,EN; output[0:3]Z; 1

Director MX 2004使用问答

Director MX 2004使用问答 Q: 为什么用MX2004打包后会显示标题栏? A:把display template中的titlebat options里的选项都取消就可以了。 Q:如何在DR中打开word文件 A:1,在d内打开须使用activex 2,在d外打开调用word程序打开即可 Q:怎样实现让用户选择不同的背景音乐? A:on mouseUp me,7v@ fileobj=new(xtra "fileio")~M+Hhf fileobj.setFilterMask("all file, *.*,mp3,*.mp3,wave, *.wav")i filename=displayOpen(fileobj)^|kHUb if filename="" or filename=void then exitU9 closefile(fileobj) jhI sound playFile 2, string(filename) end Q:请问怎么给mpg视频加遮照? A:1,利用open widndow 做视频遮照 2,用MPEG advance xtra 插件,在属性窗口中把playback opitions 下的DTS取消了,就可以了,然后就在视频之上的通道里放你遮的图片即可 Q:怎么检测本机是否连接到intel网上? A:WinSocket Xtra Ad可以实现,说明: WinSocket Xtra 是一套Sprite Xtra,一共有三个,分别为 TCPServer.X32,TCPClient.X32和UDPSocket.X32。TCPServer.X32是服务器端xtra,TCPClient.X32是客户端xtra,采用Tcp/ip协议。互相配套用于网络信息传递,可以构建类似聊天室,多人连线游戏。UDPSocket.X32采用UDP 协议。独立用于网络信息传递,也可以构建类似聊天室,多人连线游戏。 Q:flash动画导到dr后声音和动画不同步怎么解决? A:使用线索点,最好调好以后把它锁定。 Q:如何检测用户是否安装quicktime,若无就提示安装? A:on exitframe me if quicktimeversion()<5.0 then open the moviepath@"quicktime\fullinstallercn.exe“ halt() else go "start" end if end Q:为什么发布成exe文件后视频不能正常播放? A:1.打包后Xtras文件夹是否在打包文件夹下,是否包含播放视频所需插件 2.视频是否为mpg,如使用DirectMediaXtras,mpg文件是否与exe在同级目录下 Q:如何实现点击打开本地文件夹? A:gotoNetPage("c:\") 不过路径中不要有中文! Q:如何将dr里的flash导出? A:ExportSWF.x32插件。说明: object = xtra("ExportSWF").new()

Director实例剖析

Director实例剖析:Director的常用Lingo命令和句柄 常用lingo 利用控制director电影的重要方面就是利用控制各个方面的属性,下面列出常用的精灵属性、字段属性、造型成员属性,以及其他的一些常用的命令和句柄。 1.常用精灵属性 blend 语法:the blend of sprite whichsprite 用途:此属性决定了精灵的混合百分比 举例:set the blend of sprite 3 to 40 bottom 语法:the bottom of sprite whichsprite 用途:此属性决定了精灵矩形边框的下部边缘的坐标值,这个属性可以用来测试但是不能直接修改 举例:set lowest =put the botiom ofsprite (i +l) castlibnum 语法:the castlibnum of sprite whichsprite 用途:此属性决定了精灵所使用的造型成员的cast表的编号,可以被测试和修改。如果更改此属性但是不修改castnum属性,director会使用原来的造型成员编号在新的cast表中为精灵寻找造型成员 举例:set the castlibnum of sprite 3 to the number ofcastlib“newcast” constrainh 语法:constrainh(whichsprite,va1ue) 用途:此函数首先计算表达式va1ue的值,然后和精灵的左右矩形边缘坐标进行比较。如果表达式在精灵左右矩形边缘之间,就返回这个表达式;如果这个表达式小于精灵矩形边缘的左边的坐标值,就返回精灵矩形左边边缘的坐标值;如果表达式大于精灵矩形边缘右边的坐标值,就返回精灵矩形右边边缘的坐标值 举例:put constrainh(1,20) --30 put constrainh(1,60) --60 put constrainh(1,100) constrainv 语法:constrainv(whichsprite,va1ue) 用途:和constrainh类似,但是是和精灵矩形边枢的上下边缘进行比较。 举例:set the locv of sprite l to constrainv(3,the mousev) constraint 语法:the constraint of sprite whichsprite

基于VerilogHDL语言的可综合性设计

基于Verilog HDL语言的可综合性设计 1 引言 逻辑综合带来了数字设计行业的革命,有效地提高了生产率,减少了设计周期时间。在手动转换设计的年代,设计过程受到诸多限制,结更容易带来人为的错误。而一个小小的错误就导致整个模块需进行重新设计,设计转换工作占去了整个设计周期的大部分时间,验证工作进行困难,设计技术无法重用等等。而自动逻辑综合工具的出现,突破了上述种种限制,使得设计者从繁琐的转换工作中解脱出来,将更多的时间用于验证和优化,不仅保证了功能的实现,而且有利于提高性能。可见,综合在逻辑设计中具有举足轻重的作用。 2 综合的概念及其过程 2.1 逻辑综合概述 综合就是在给定标准元件库和一定的设计约束条件下,把用语言描述的电路模型转换成门级网表的过程。要完成一次综合过程,必须包含三要素:RTL级描述、约束条件和工艺库。 2.2 RTL级描述 RTL级描述是以规定设计中采用各种寄存器形式为特征,然后在寄存器之间插入组合逻辑,其可以用如图1所示的“寄存器和云图”方式来表示。 图1 RTL级描述 2.3 约束条件 为了控制优化输出和映射工艺要用约束,它为优化和映射试图满足的工艺约束提供了目标,并且它们控制设计的结构实现方式。目前综合工具中可用的约束包括面积、速度、功耗和可测性约束,未来我们或许会看到对封装的约束和对布图的约束等,但是,目前的最普遍的约束是按面积和按时间的约束。 时钟限制条件规定时钟的工作频率,面积限制条件规定该设计将花的最大面积。综合工具将试图用各种可能的规则和算法尽可能地满足这些条件。 2.4 工艺库 按照所希望的逻辑行为功能和有关的约束建立设计的网表时,工艺库持有综合工具必须的全部信息。工艺库含有允许综合进程为建立设计做正确选择的全部信息,工艺库不仅含有ASIC单元的逻辑功能,而且还有该单元的面积、单元输入到输出的定时关系、有关单元扇出的某种限制和对单元所需的定时检查。

ChartDirector常见用法(示例代码)

ChartDirector 常见用法(示例代码) 最近在尝试在ChartDirector 里进行坐标的设置,想在这里写写最近最近的学习成果。 下面是我的代码实例,里面就是实现如何在ChartDirector 里进行坐标的设置,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public void createChart(ChartViewer viewer, int index) { // 这是两组数据,X 和Y 会一一对应生成;多在多纵轴图中使用,横坐标点会自动调整。 double[] dataY0 = { 4.5, 5}; Date[] dataX0 = { new GregorianCalendar(1999, 1, 1).getTime(), new GregorianCalendar(2000, 8, 6).getTime() }; double[] dataY1 = {7, 6.5, 6, 5, 6.5, 7, 6, 5.5, 5,9,8,7,8}; Date[] dataX1 = {new GregorianCalendar(1999, 1, 1).getTime(), new GregorianCalendar(1999, 6, 1).getTime(), new GregorianCalendar(1999, 11, 1).getTime(), new GregorianCalendar(1999, 11, 15).getTime(), new GregorianCalendar(1999, 12, 9).getTime(), new GregorianCalendar(2000, 2, 3).getTime(), new GregorianCalendar(2000, 7, 13).getTime(), new GregorianCalendar(2001, 4, 5).getTime(), new GregorianCalendar(2001, 8, 16).getTime(), new GregorianCalendar(2001, 10, 16).getTime(),new GregorianCalendar(2001, 12, 16).getTime(),new GregorianCalendar(2002, 2, 16).getTime(),new GregorianCalendar(2002, 4, 16).getTime()}; //这是单独的横坐标数据,横坐标会根据数据进行调整,Y 轴会按照顺利一一对应。 Date[] dataX2 = { new GregorianCalendar(1999, 1, 1).getTime(), new

Verilog可综合与不可综合语句汇总

1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。 (2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。 (3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。 建立可综合模型的原则 要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点:(1)不使用initial。 (2)不使用#10。 (3)不使用循环次数不确定的循环语句,如forever、while等。 (4)不使用用户自定义原语(UDP元件)。 (5)尽量使用同步方式设计电路。 (6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 (7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。 (8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 (9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值。 (10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。

verilog综合心得

综合:不可综合的运算符:= = = ,!= =,/(除法),%(取余数)。 1、不使用初始化语句。 2、不使用带有延时的描述。 3、不使用循环次数不确定的循环语句,如:forever、while等。 4、尽量采用同步方式设计电路。 5、除非是关键路径的设计,一般不调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 6、用always过程块描述组合逻辑,应在信号敏感列表中列出所有的输入信号。 7、所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 8、在verilog模块中,任务(task)通常被综合成组合逻辑的形式,每个函数(function)在调用时通常也被综合为一个独立的组合电路模块。 9、用户自定义原语(UDP)是不可综合的,它只能用来建立门级元件的仿真模型。 一般综合工具支持的V erilog HDL结构

移位运算符:V erilog HDL提供向右(>>)及向左(<<)两种运算符,运算符高位或地位一旦移出即予丢弃,其空缺的位则予以补零。 连续赋值语句(assign)、case语句、if…else语句都是可以综合的 initial 语句内若包含有多个语句时,必须以begin end 作聚合;单一的初值赋值,因此并不需以begin end做聚合。 循环(Loops)并不能单独地在程序中存在,而必须在initial和always块中才能使用。initial过程块中的语句仅执行一次,而always块中的语句是不断重复执行的。 编写顶层模块的注意事项 每个端口除了要声明是输入、输出还是双向外,还要声明其数据类型,是连线型(wire)还是寄存器型(reg),如果没有声明则综合器默认为wire型。 1、输入和双向端口不能声明为寄存器型。 2、在测试模块中不需要定义端口。 编写testbentch所归纳的心得

verilog语句可综合vs不可综合

1)所有综合工具都支持的结构: always,assign,begin,end,case,wire,tri,supply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。 2)所有综合工具都不支持的结构: time,defparam,$finish,fork,join,initial,delays,UDP,wait。 3)有些工具支持有些工具不支持的结构: casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。 建立可综合模型的原则 要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点: 1)不使用initial。 2)不使用#10。 3)不使用循环次数不确定的循环语句,如forever、while等。 4)不使用用户自定义原语(UDP元件)。 5)尽量使用同步方式设计电路。 6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值。 10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对

director 快捷键

1、F i l e菜单快捷键 命令快捷键 New Movie(新影片)Ctrl+N NewCast(新演员表)Ctrl+Alt+N Open(打开)Ctrl+O Close(关闭)Ctrl+F4 Save(保存)Ctrl+S Import(输入)Ctrl+R Export(输出)Ctrl+Shift+R Preview inBrowser(在浏览器中预览)F12 Page Setup(页面设置)Ctrl+Shift+P Print(打印)Ctrl+P General Preferences(基本参数设置)Ctrl+U Exit/Quit(退出)Alt+F4 2、Edit菜单快捷键 命令快捷键 Undo(撤消)Ctrl+Z Repeat(重复)Ctrl+Y Cut(剪切)Ctrl+X 命令快捷键 Copy(拷贝)Ctrl+C Paste(粘贴)Ctrl+V Clear(清除)Backspace Duplicate(复制)Ctrl+D Select All(全选)Ctrl+A Find Text(查找文本)Ctrl+F Find Handler(查找处理程序)Ctrl+Shift+; Find Cast Member(查找演员)Ctrl+; Find Selection(查找选区)Ctrl+H Find Again(再查找)Ctrl+Alt+F Replace Again(再替换)Ctrl+Alt+E Edit Sprite Frames(编辑角色的帧)Ctrl+Alt+] Edit Entire Sprite(编辑整个角色)Ctrl+Alt+[ Exchange Cast Members(交换演员)Ctrl+E Launch External Editor(运行外部编辑器)Ctrl+,(逗号) 3、View菜单快捷键 命令快捷键 Next Marker(下一个标志)Ctrl+右箭头键 Previous Marker(前一个标志)Ctrl+左箭头键 Zoom In(变焦放大)Ctrl++ Zoom Out(变焦缩小)Ctrl+-(连字符) Show Grid(显示网格)Ctrl+Shift+Alt+G Snap to Grid(吸附于网格)Ctrl+Alt+G Show Rulers(显示标尺)Ctrl+Shift+Alt+R

verilog语言的综合与不可综合

Verilog的综合与不可综合 综合说明编的代码可以对应出具体的电路,不可综合说明没有对应的电路结构。不可综合的代码编译通过,只能看到输出,不能实现电路,就是不能用来制作具体的芯片。 一、基本 Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器。 二:verilog语句结构到门级的映射 1、连续性赋值:assign 连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因些连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。 2、过程性赋值: 过程性赋值只出现在always语句中。 阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。 建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。 过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。 过程性赋值语句中的任何延时在综合时都将忽略。 建议同一个变量单一地使用阻塞或者非阻塞赋值。 3、逻辑操作符: 逻辑操作符对应于硬件中已有的逻辑门 4、算术操作符: Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。 5、进位: 通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如: Wire [3:0] A,B; Wire [4:0] C; Assign C=A+B; C的最高位用来存放进位。 6、关系运算符: 关系运算符:<,>,<=,>= 和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。

verilog不可被综合的语句

verilog 不可综合语句总结汇总 2009-04-20 18:37 (1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。 (2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。 (3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。 建立可综合模型的原则 要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点: (1)不使用initial。 (2)不使用#10。 (3)不使用循环次数不确定的循环语句,如forever、while等。 (4)不使用用户自定义原语(UDP元件)。 (5)尽量使用同步方式设计电路。 (6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 (7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。 (8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 (9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值。 (10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。 (11)如果不打算把变量推导成锁存器,那么必须在if语句或case语句的所有条件分支中都对变量明确地赋值。 (12)避免混合使用上升沿和下降沿触发的触发器。 (13)同一个变量的赋值不能受多个时钟控制,也不能受两种不同的时钟条件(或者不同的时钟沿)控制。 (14)避免在case语句的分支项中使用x值或z值。 不可综合verilog语句2009-04-14 19:33

外企常用英文简写

外企日常工作中常用的英语术语和缩写语 办公室职员(Office Clerk)加入公司的整个过程为例,引出在跨国公司(MNC-Multi-National Company) 工作中,日常人们喜欢经常使用的术语(Terminology)和缩写语(Abbreviation)。 [找工作Job Searching]我立志大学毕业后加入一家跨国公司。我制作了精美的个人简历(Resume, cv)。我参加了校园招聘(Campus Recruitment)。我关注报纸招聘广告(Recruiting Ads)。我也经常浏览招聘网站(Recruiting Website)。我还参加人才招聘会(Job Fair)。 [参加面试Be invited for Interview] 我选择了几家中意的公司,投出了简历。终于接到了人力资源部(Human Resources Department)邀请面试的通知。经过几轮面试(Interview)和笔试(Written Test)我终于接到了XXXX公司的聘用书(Offer Letter)。这是一家独资/合资企业(Wholly Foreign-Owned Company/Joint-Venture)。 [录用条件Employment Terms] 我隶属XX部门(Department)。我的职位(Position)是XXXX。我的工作职责(Job Responsibilities)是XXXX。我的直接上司(Direct Supervisor)是XXX。我的起点工资(Starting Salary)是XXXX。我的入职日期(Join-Date)是XXXX。我的试用期(Probation)是3个月。首期劳动合同(Labor Contract/Employment Contract)的期限(Term)是3年。 [第一天上班First day of join] 我乘坐公司班车(Shuttle Bus/Commuting Bus)来到公司。先来到人力资源部报到(Register)。我填了一系列的表格(Forms)。我领到了工卡(Badge Card)、餐卡(Meal Card)、员工手册(Employee Manual)、培训手册(Training Handbook)、保险手册(Insurance Handbook)、安全环境健康(EHS-Environment, Health and Safety)手册。公司培训主管(Training Supervisor)为我做了入职培训(Orientation)。我了解了公司的安全须知(Safety Precautions)和紧急疏散通道(Emergency Evacuation Route)。 [部门Department] 我随后来到我的部门,见到了我的部门经理(Department Manager)和同事(Colleagues)。我来到我的办公桌(Desk)前,看到办公用品(Stationery)和台式计算机(DeskTop)已经摆在桌上。经理说以后还会配备笔记本电脑(Notebook/LapTop)。 [午餐Lunch] 中午在公司餐厅(Cafeteria)吃饭,是免费的午餐(Free Lunch)。饭后跟大家一起外出散步。 [第一次会议First meeting] 下午部门开会(Have a Meeting),讨论目前面临的困难和问题(Difficulty & Issues),经理要求大家通过脑力激荡(Brain-Storming),找出问题的根源(Root Cause),并提出解决方案(Solutions)。 [各种类型会议Various meetings] 公司有多种会议。部门经理的管理层会议(Staff Meeting)。讨论项目进展的项目会议(Project Meeting)。讨论预算的预算会议(Budgeting Meeting)。与美国总部的电话会议(Teleconference Call)。还可以利用视频会议系统(Video Conference)或网络会议(Net-Meeting)系统开会。有各种周会(Weekly Meeting)、月例会(Monthly Meeting)、季度会议(Quarterly Meeting)和年度会议(Annual Meeting)。 [各种计划Various plans] 要制定各种计划(Plans)。有长期计划(Long-term Plan)、中期计

(完整版)Director常用快捷键

F i l e菜单快捷键 命令快捷键 New Movie(新影片) C t r l + N New Cast(新演员表) C t r l + A l t + N O p e n (打开) C t r l + O C l o s e (关闭) C t r l + F 4 S a v e (保存) C t r l + S I m p o r t (输入) C t r l + R E x p o r t (输出) C t r l + S h i f t + R Preview in Browser(在浏览器中预览) F 1 2 Page Setup(页面设置) C t r l + S h i f t + P P r i n t (打印) C t r l + P General Preferences(基本参数设置) C t r l + U E x i t / Q u i t (退出) A l t + F 4 E d i t菜单快捷键 命令快捷键 U n d o (撤消) C t r l + Z R e p e a t (重复) C t r l + Y C u t (剪切) C t r l + X 附录G计键盘快捷键计计535 命令快捷键 C o p y (拷贝) C t r l + C P a s t e (粘贴) C t r l + V C l e a r (清除) B a c k s p a c e D u p l i c a t e (复制) C t r l + D Select All(全选) C t r l + A Find Te x t (查找文本) C t r l + F Find Handler(查找处理程序) C t r l + S h i f t + ; Find Cast Member(查找演员) C t r l + ; Find Selection(查找选区) C t r l + H Find Again(再查找) C t r l + A l t + F Replace Again(再替换) C t r l + A l t + E Edit Sprite Frames(编辑角色的帧) C t r l + A l t + ] Edit Entire Sprite(编辑整个角色) C t r l + A l t + [ Exchange Cast Members(交换演员) C t r l + E Launch External Editor(运行外部编辑器) Ctrl+, (逗号) Vi e w菜单快捷键 命令快捷键 Next Marker(下一个标志) C t r l +右箭头键Previous Marker(前一个标志) C t r l +左箭头键Zoom In(变焦放大) C t r l + +

Director创作影视动画常用方法

Director创作影视动画常用方法 [摘要] 利用多媒体软件创作影视动画可以起到事半功倍的效果,Director凭借其强大的功能和可扩展性,为影视动画制作数字化提供了丰富多彩的创作方法,而且效果相当不错。 [关键词] Director 影视动画 引言 数字化的影视素材丰富多样。既可以是图像(包括BMP、TIFF、GIF、JPG、PNG、PSD、PCX等),也可以是音频(包括WAV、AIFF、Quick Time音频等),还可以是视频(如QuickTime视频和Video for Windows等)。如此丰富的数字化影视素材,其制作

方式也是多种多样的。比如用多媒体集成工具Director MX制作影视作品中的动画。其效果非常惊人,正所谓“他山之石,可以攻玉”。 1 Director MX的简述 顾名思义,Director的中文名为“导演”,是Macrcmedia家族中的杰出一员,出生在1985,经过不断的升级换代,今天流行的版本是Director MX,它是一款功能强大的多媒体集成工具,它是以拍电影或写剧本的形式,基于演员对象的时序性来实现多媒体创作的。这种创作模式与导演一部影视作品“异曲同工”,以至于最后生成的作品也称为Movie(英文意为“电影”)。创作者不必很辛苦地学习软件操作,就能实现一些非常理想的动画效果,而且操作简单。 Director MX的基本窗口主要有Stage(舞台)、

Cast(演员表)、Score(总谱)三大窗口,其名称和作用类似于影视创作中的舞台、演员和剧本。 Stage(舞台):这是演员表演的场所,是观众最终所面对的场景。其重要性不言而喻。创作者可以设置Stage(舞台)的大小、位置、背景色等。 Cast(演员表):是电影中(Cast Member)存储所有演员的仓库。演员表中的每一个单元格放置一个演员,最多可以放置32000个演员,软件系统默认的是512个演员。当演员被放置在舞台上时。称为角色(Sprite),一个演员可以扮演多个角色。 Score(总谱):相当于导演的剧本。一部电影的好坏,关键在于总谱编排是否得当,构思是否巧妙。总谱最多可容纳1000个通道(Channel),这些通道可以放置演员,使其成为角色,另外还有节奏通道(TempoChannel)、转场通道(Transition Channel)、两

director中常用代码

一、全屏播放 Director本身并不能支持自动适应屏幕分辨率的全屏播放,它也没有提供可以更改屏幕分辨率的函数。但许多时候,我们要求能全屏播放。解决办法是,使用第三方xtra:DMChangeRes.x32。DMChangeRes.x32中提供一个有用的函数:ChangeRes([width, height]),它用于设置屏幕分辨率。我们需要程序运行时改变分辨率,在程序退出时恢复分辨率。因此,新建Movie Script,在其中写如下代码: --全局oldScreenSize保存原始分辨率,用以程序退出时恢复 global oldScreenSize on prepareMovie if _system.deskTopRectList[1][3]<800 then alert "对不起,您的电脑显示屏当前分辨率太低,请调整为800*600后重新运 行本程序!" go to marker("end") else set oldScreenSize=ChangeRes([800,600]) end if end on stopMovie if oldScreenSize<>void then ChangeRes(oldScreenSize) end if end 另外,由于Demo中调用了试玩游戏,试玩游戏在退出时奇怪地把分辨率恢复了,致使Demo显示于左上角,无法继续布满整个屏幕。解决办法是响应Windows ActivateWindow消息,当Demo 被调到前台时,它将重新检测分辨率,在需要时重设: on activateWindow if _system.deskTopRectList[1][3]>800 then ChangeRes([800,600]) end if end 把以下命令放在第一帧的帧脚本处,可实现强制全屏:on exitFrame me go the frame (the stage).rect = (the desktopRectList)[1] (the stage).drawRect = (the desktopRectList)[1] end NO2:或者添加这段代码也行,可以达到同样的效果

Director几个技巧

Director中非常有用的一个Xtra是MUI Dialog Xtra,这是D自代的对话框生成器。在6.0 版本中就有这个Xtra了,但是很奇怪大多开发者都只应用了它最基本的特性,如果他们能否充分利用MUI Xtra的话,那么,你就可以自己定义个完全响应的对话框,而不是去用很废内存和磁盘空间的MIAW来实现。你可以去任意定制它,并且你可以完全根据你或者你的客户的需要来定义这个对话框如何去响应。可以说,你可以完全定制自己所需要的对话框,只有少数例外,那么这篇文章就来教你如何开始。 (你可以使用这些Lingo程序来生成特定平台的对话框) 对话框种类 你可以用MUI Xtra来产生两种对话框:“标准”对话框和“常规应用”对话框。“标准”类对话框由标准警告框、打开和保存对话框组成。Macromedia已经将这种对话框成为“系统对话框”,他们还添加了一个输入URL的对话框。毫无疑问,我们开发人员都会经常使用这种标准对话框,因为它们是已经完全定义好了的。我们只需要定义很少的一些参数,很少的几行lingo程序就可以创建他们,你只需要定义个属性列表来配置一下对话框,就可以用 alert(),fileopen(),filesave(),getURL()方法来调用。关于使用标准警告对话框请参考Multimedia Handyman artical。 如果这四种对话框都不能满足你的要求的话,你就需要创建一个“常规应用”的对话框。这种对话框为开发者提供了更为广泛的控制,包括内容,版式设计,方法。如果你所需要的对话框包含一组单选按钮(radio buttons)、多选按钮(checkboxes)、弹出列表框、文本输入框、文本标签、滑块、按钮或者图形,那你就需要用“常规应用”对话框来定制。当然,你可能要花费一定时间来创建他们,这由你的对话框复杂程度决定。所用的Lingo语言也很直观。

相关主题