verilog总结

verilog总结
verilog总结

1. Assign 语句中赋值的变量不能定义为reg型。

2 Always块里面写的是触发信息。

3 测试模块里要包含所有的情况。如果可以先把波形图画出来,再按照波形图写测试模块会好写些,并且能写全。

4 在进行测试模块编程时,输入定义为寄存器类型,输出定义为线性。

5 信号初始化放在initial中。

6 可以用计数来实现分频。比如根据时钟的周期计算出记一个数所用的时间。高电平的时间内计多少数,低电平的时间记多少数。高低电平时间之和加起来就是周期。再求倒数就是频率。

7 在always模块中被赋值的语句的变量应定义为reg型。

8 被测试模块的输出信号定义为wire型。被测试模块的输入信号定义为reg型。

9 If块里面的语句如果有两句以上,要加上begin end 否则会出错。

else 里面的语句如有有两个以上,也要加上begin end。

10 If 语句中给RB赋值,要写成非阻塞赋值,RB《=0;如果写成阻塞,报错。

11 一般情况下,要有一个总体系统的复位信号,否则,由于初始状态不定,所以仿真时,第一个周期容易不准确

12 Always模块里面语句是时刻赋值,意思是,比如一个上升沿作为触发信号,如果在模块里面你写f0=f1,你的意思是想把信号f1赋给f0,这是错误的,它只能将f1此刻的值赋给f0

13. if 可以和else不配对使用,if可以单独使用

14.If else 里面可以再嵌套if else

Eg if(MSL==9)

begin

if(MSH==9)

begin

MSH<=0;cn1<=1;

end

else

MSH<=MSH 1;

end

else

begin

MSL<=MSL 1;cn1<=0;

end

15. else if 里面仍然可以嵌套if else语句

Eg

else if(SL==9)

begin

if(SH==5)

begin

SH<=0;cn2<=1;

end

else

SH<=SH 1;

end

else

begin

SL<=SL 1;cn2<=0;

End

16. 如果问题老是出在第一行,很可能是没有写endmodule

17.每个端口除了要声明是输入,输出,还是双向端口外,还要声明其数据类型

是连线性还是寄存器类型。如果没有声明,综合器默认为wire型

18. 输入和双向端口不能声明为寄存器类型

19.调用子模块时,里面变量的例化写法要一致。

如COUNT U2(.RB(RBB),.CLK(CLK),.EN(FD),.Q(Q)); 是正确的

COUNT U2(RBB, CLK,.EN(FD), Q);是错误的。

20. reg [3:0]MSH,MSL,SH,SL,MH,ML=0;表示的是只将ML赋0,其他都没有赋0

verlog语法要点:

module endmodule之间由两部分构成:接口描述和逻辑功能描述

IO端口种类:input output inout

相同位宽的输入输出信号可以一起声明,input[3:0] a,b; 不同位宽的必须分开写

内部信号为reg类型,内部信号的状态:0 1 x z,3'bx1=3'bxx1 x/z会往左扩展3'b1=3'b001 数字不往左扩展

逻辑功能描述中常用assign描述组合逻辑电路,always既可以描述组合逻辑电路又可以描述时序逻辑电路,还可以用元件调用方法描述逻辑功能

always之间、assign之间、实例引用之间以及它们之间都是并行执行,always内部是顺序执行

常量格式:< /-><二进制位宽><'><进制><该进制的数值>:

默认进制为10进制

默认位宽为32位

位宽是从二进制宽度角度而言的

由位宽决定从低位截取二进制数2'hFF=2'b11,通常由被赋值的reg变量位宽决定parameter常用于定义延迟和变量位宽,可用常量或常量表达式定义

变量种类:wire reg memory

IO信号默认为wire类型,除非指定为reg类型

wire可以用作任何输入输出端口

wire包括input output inout

wire不带寄存功能

assign赋值语句中,被赋值的信号都是wire类型

assign之所以称为连续赋值,是因为不断检测表达式的变化

reg类型可以被赋值后再使用,而不是向wire一样只能输出,类似VHDL中的buffer 端口

reg类型变量初始值为x (VHDL中初始值为本类型最小值,通常是0)

always模块里被赋值的信号都必须定义为reg类型,因为always可以反复执行,而reg 表示信号的寄存,可以保留上次执行的值

reg类型变量与integer变量不同,即使赋负值,实质上也是按二进制无符号数存储的,integer是有符号数

verilog中所有内部信号都是静态变量,因为它们的值都在reg中存储起来了

memory型只有一维数组,由reg型变量组成

memory初始化只能按地址赋值,不能一次性赋值

1*256的memory写法:reg mema[255:0] mema[3]=0;

不同位宽的变量之间赋值,处理之前都以被赋值的变量位宽为准扩展或截取

A[a:b] 无论a b谁大,a总是实际电路的信号高位,b总是实际电路的信号低位

算术运算中如果有X值则结果为X

for循环中的变量另外定义成integer,因为它不是实际信号,有正负;reg则以无符号数存在

== 和!=只比较0、1,遇到z或x时结果都为x (x在if中算做假条件),结果可能是1、0、x

===和!==比较更加苛刻,包括x和z的精确比较,结果可能是0、1

&&的结果只有1'b1或1'b0两种,A&A的结果位宽则是与A相同的

{1,0}为64'h100000000,所以拼接运算中各信号一定要指定位宽

移位运算左移将保留4'b1000<<1等于5'b10000,右移则舍弃4'b0011等于4'b0001 数字电路里位运算应用普遍,包括按位逻辑运算、移位运算、拼接运算、缩减运算

非阻塞式赋值<=与阻塞式赋值=

阻塞:在同一个always过程中,后面的赋值语句要等待前一个赋值语句执行完,后面的语句被该赋值语句阻塞

非阻塞:在同一个always过程中,非阻塞赋值语句是同时进行的,排在后面的语句不会被该赋值语句阻塞

<=:

块结束后才能完成赋值

块内所有<=语句在always块结束时刻同时赋值

<=右边各变量的值是上一次时钟边沿时,这些变量当时的值

用于描述可综合的时序电路

=:

=语句结束之后过程always才可能结束

在always过程中,begin end块内按先后顺序立即赋值,在fork join内同时赋值(可能造成冲突)

与assign连用描述组合电路

begin end中阻塞的含义:begin ...@(A) B="C"...; end 如果A事件不发生则永远不能执行下去,被阻塞了

由于时钟的延时(往往在ps级),多个always(posedge)之间究竟谁先执行是个未知数

使用原则:同一个always过程块内建立时序电路用<=

纯组合逻辑电路用=,生成的电路结构最简单,执行速度最快

同一个always块内不要混用<=和=

不要在多个always块内对同一个变量赋值(多源驱动)

if else的三种形式,第三种形式适合描述优先编码器

if条件中0/x/z当成假,1当成真,非0的数值也当成真

case语句的三种:case(四种状态的比较) casez(忽略z) casex(忽略x和z,只看哪些位的信号有用)

case语句中所有表达式值的位宽必须相等,default中不能将n'bx用'bx代替

避免生成锁存器的方法:电平触发时if后加else case中加default ?

使用casex会将不必要的状态视为无关项,使得综合出来的电路最简单

两种特殊的括号:begin 顺序语句... end fork 并行语句... join,其差别在于块内语句的起止时间、执行顺序、相对延时

块被命名后,其内部变量可以被调用,因为变量都是静态的(调用信号:对应电路中的一个信号线被引到另一处)

initial块只无条件执行一次always块在满足条件时不断执行

initial常用来写测试文件,always块常用来写电路描述

always既可以描述组合逻辑电路又可以描述时序逻辑电路

always如果后面有敏感信号列表则不能用wait语句

always既可以描述电平触发又可以描述边沿触发,wait只能描述电平触发

assign常用于描述组合逻辑电路

测试文件中一般都是现initial 后always

生成语句:生成快的本质是使用循环内的一条语句代替多条重复的verilog语句,简化了用户的编程

genvar用于声明生成变量,生成变量只能用在生成快之间

仿真时,仿真器会将生成块中的代码展平,在确立后的方针代码中,生成变量是不存在的

最好是先想象出来循环生成语句被展平后的电路样子,再写相关的描述语句

task和function的区别:

task可以定义自己的仿真时间单位,function与主模块共用同一个仿真时间单位

函数不能启动任务,任务能够启动函数

函数至少要有一个输入变量,任务没有输入变量

函数返回一个值,任务不返回值

一个模块的设计包括3个部分:电路模块的设计测试模块的设计设计文档的编写设计者通过布局布线工具生成具有布线延迟的电路,再进行后仿真,得到时序分析报告从时序分析报告中可以知道电路的实际延迟t,同步电路内每个时钟周期要大于t,从而可确定该运算逻辑的最高频率

综合器之所以能够实现加法器、乘法器是因为库中已经存在可配置的参数化器件模型FPGA内总线宽度容易自定义,以便实现高速数据流,三态数据总线相当于数据流的控制阀门

数字系统内数据流的控制:开关(或三态数据总线)、数据暂存部件(寄存器)、同步状态机控制(整个系统在一个时钟域内)

流水线操作pipe line:

K级流水线就是从组合逻辑的输入到输出恰好有K个寄存器组,上一级的输出是下一级的输入

流水线操作获得第一个结果的时间要比不用流水线操作的时间长,但以后结果获得时间都只需要一个时钟周期,提高了数据吞吐量

流水线操作的保证:Tclk>K*(组合逻辑延迟触发器的建立保持时间/触发时间),即时间片段要长于最大路径延迟

体现了面积换速度的思想,在综合时考虑的是以面积小为主还是以速度为主

本质上是一种同步逻辑

同步时序逻辑和异步时序逻辑:

同步时序逻辑指所有寄存器组由唯一时钟触发always@(posedge clk) 或always@(negedage clk)

异步时序逻辑指触发条件不唯一,任意一个条件都会引起触发always@(posedge clk or posedage reset)

目前的综合器是以同步时序逻辑综合的,因为同步时序逻辑较异步时序逻辑可靠

严格的同步要求时钟信号传递速度远远大于各部分的延迟,实际中clk要单独用线,而不要经过反相器等部件

always @(posedge.. ) begin ...<=... end 表示同步时序逻辑(同时刻赋值)

不同速率数据接口的处理方法(异步数据的处理方法):帧同步FIFO 双端口RAM

同步状态机:

包括moore和mealy型两种,及其反馈模型(是一种反馈控制系统,当前状态就是其内部状态变量)

状态机的开发步骤:

根据实际问题列出输入输出变量和状态数

画出状态图并化简

写出状态转移真值表得到逻辑表达式

用D触发器或JK触发器构建电路(目前用D触发器多)

verilog描述时只需要得到简化的状态图就可以描述

状态编码方式:独热码格雷码

状态机主体程序有单always描述方式和多always描述方式

采用case/casez/casex建立模型最好,因为x是无关态,生成的电路最简单

default: state='bx与实际情况更一致,效果等同于default: state<=idle

只有同步状态机才能被目前的综合

for语句会将所有变量的情况展开,占用巨量逻辑资源,替代办法是用计数器和case语句说明所有情况

有优先级的if else结构会消耗更多资源,建议用无优先级的case替代

模块的复用往往比代码上修改节省的资源多

PLL的分频、倍频、移相操作会增加设计精度

同步时序电路的延时:#x通常用于仿真测试,实际硬件延时是:长延迟用计数器,小延迟

用D触发器,此方法用来取代延迟链

同步电路中,稳定的数据采用必须满足采样寄存器的建立和保持时间

reg类型在always中不一定综合成时序电路,也可能是组合逻辑电路

乒乓操作与作用异步时钟域同步问题

延迟包括门延迟和线延迟

组合逻辑产生的时钟仅能应用在时钟频率较低、精度要求不高的情况下

增减敏感信号得到的结果一样

补充部分:

verilog HDL起初是作为写testbench而产生的

verilog 有1995进入IEEE标准,为IEEE-1364, 于2001年进行了扩展,为IEEE 1364-2001;verilog AMS可用于模拟电路和数字电路的综合,目前正在不断发展和完善中;

verilog的标识符区分大小写,关键字使用小写;

用\\来进行单行注释,用\* *\来进行跨行注释;

标识符由字母、数字、下划线构成,并以字母开头;

关键字又叫保留字,只有小写的关键字才是保留字;

信号的状态有4种:0 1 x z

x和z在描述电路时不区分大小写,在仿真时大小写有不同意义;

常量表达式中:

x z不区分大小写;

进制符号h o d b与H O D B不区分大小写;

十六进制中a~f不区分大小写;

下划线_用于提高可读性;

?在数中可以代替z;

x和z的左端补位;

字符和字符串都以ASICII码形式存在,也可以当成电路内的信号;

字符串必须包含在同一行,不能分成多行书写;

如果表达式或者赋值语句中将字符串当成操作数,则字符串中的每个字符都被看成8位的ASCII值序列;

可综合的信号类型:wire reg memory 它们用来描述数字电路

不可综合的数据类型:integer real 它们只用仿真,位于testbench中

wire是连线的抽象模型,不能保存数据,其值由驱动元的值决定;

wire不能用在always或initial块中;

wire的默认值为高阻z;

wire的使用情形:1.作为模块的输出端口 2.用连续赋值语句assign赋值;

reg是1位寄存器(触发器)的抽象模型,可以保存数据;

reg必须用在always或initial块中;

reg的默认值为x;

reg的使用情形:1.阻塞赋值<= 2.非阻塞赋值=

memory只能是一维的;

memory只能对每个单元分别初始化,方法:1.一个一个赋值 2. 通过系统任务$readmem 赋值

reg[3:0] fc;//一个4位寄存器reg fc[3:0] //4个一位寄存器

parameter的作用:仿真开始以前对其进行赋值,整个仿真过程中保持其值不变;

关系运算符将以逻辑1或逻辑0返回比较的结果;

== !=的返回值有0 1 x三种情况,=== !==的返回值只有0 1两种情况;

verilog由于是描述电路的,用于位的操作较多,有: 位逻辑操作,移位操作,并置操作,归约操作;

位逻辑运算的结果中,位数与原操作数一样多;

归约符是在原操作数的所有位上进行操作,并产生1位结果;

并置运算可以发生在bit与bit之间bit与矢量之间矢量与矢量之间

用于仿真的系统任务:

所有系统任务都必须在initial或always内;

所有系统任务都必须以$开头;

常见系统任务:

显示任务($diplay系列和$write系列)

监控任务($monitor系列)

探测任务($strobe系列)

文件打开、输入、关闭任务(&fopen &fclose &fdisplay...)

读取文件任务($readmemb $readmemh)

仿真结束控制任务($finish $stop)

随即信号任务($random)

过程块:initial块和always块

一个module内可以包含多个initial或always模块;

所有initial或always块在0时刻开始并行执行,各initial或always块内部顺序执行;initial过程块主要是面向testbench的,通常不具有可综合性;

always过程块在描述电路时既可以描述组合逻辑电路(电平敏感)又可以描述时序逻辑电路(边沿敏感);

写testbench时initial通常用于初始化以及顺序波形的描述,always通常用于重复波形的描述;

任务task与函数function: 为了描述模块中被多次执行的部分以及为了增强代码的易读性verilog中的高级程序语句如for循环语句只用在写testbench中;

begin end和fork join是两种特殊的括号

if语句的第三种形式适合描述优先编码器,case语句适合描述数据选择器和状态机;

case的条件表达式如果与分支项表达式长度不同,则在比较前将所有表达式都统一为这些表达式的最长长度;

casez忽略z,casex忽略z和x;

assign语句只在右端表达式发生变化时才重新计算并重新赋值,其余时间都是连续赋值;assign语句可以指定bit、vector或是任意拼接操作的结果;

assign语句是连续赋值的,用于驱动网线wire,reg类型不需要连续赋值,reg类型一旦被赋值就会一直保存;

过程赋值语句有两种:阻塞式=和非阻塞式<=,只能在过程块initial和always中使用;

@对事件触发的控制与wait语句不能同时使用;

法语最常用整理!!!精品!!两年时间积累的《新大学法语》教程语法!!~~~~~~~~~~

泛指代词 1 quelqu’un某人quelqu’une quelques-uns(unes)某些人某些物 (1) quelqu’un=someone 不分男女,都用阳性,表示虚指,“某人” (2) quel qu’une +de =one of …中的一个(阴性的人/物) quelques-uns(unes)+de= some of …中的几个(复数的人/物) (3) quelqu’un de (plus) adj(阳)/bien 2 personne 没有人,无人quelqu’un的否定形式。 (1) 跟ne一起使用,或在sans,sans que后面。=nobody/anybody (2)personne+de+adj(阳) 3 quelque chose某事,某物 (1)中性,虚指,只有单数,“某物”、“某事”或“什么”=sth (2) quelque chose+de+adj(阳)/ bien/ mal (3) =sth important eg. C’est ~ que ce projet. 4 rien没有……quelque chose的否定形式=nothing/anything (1)跟ne一起使用,或在sans,sans que后面,用法和personne相同。 (2) Rien+de+adj阳/pp. (3) 不能与pas/point连用能和plus/jamais连用 * Rien 作直宾,谓语为简单时态时,放谓语后,谓语复合时态,放 在助动词和pp之间 Je ne sais rien. *rien作不定式动词直宾时,放不定式动词前 :Il reste là sans rien dire. 5 chacun 只有单数 (1)~+de+ 复数n 每个人/每一个(物) (2)单独使用,仅用阳性,只指人=everyone 6.aucun(e)只有单数=none/any,chacun 否定 (1)一般+de+n(也可省略)跟ne一起使用,或在sans,sans que后 (2)不能与pas/point连用能和plus/jamais连用 7 Certains只有复数。 (1) 单独使用时,用阳性,只指人,虚指,“有些人” 知道但不明说 (2) certains de/ certaines de =some of 指人/物 8.plusieurs 只有复数,两性词形相同。 (1) 单独使用,只指人,“好几个人”“几个人”: (2)plusieurs +de 指人/物“几个”“好几个”: 9.Un(une) (1)un de+n,或与副代词en一同使用;性数一致,”一个人/事/东西”: (2) 如后面是关系从句,则起指示代词celui,celle作用,“……的人”:eg : Une dont je me méfie,c’est sa cousine. 否 1.tout..ne..pas不再2.ne...plus不再3.ne....jamais 4.ne...rien 什么也不 5.ne...personne 没人 泛指代词 tout(物,阳单,一切) tous(所有人,阳) toutes(人,阴) adj. tout(阳单), toute(阴单), tous,(阳复) toutes(阴复) adv. tout, toute(h开头阴单adj前), ,toutes (h开头阴复adj) 指示adj ce(cet.h/元)阳 cette阴 ces复 指代词 celui阳celle阴ce中ceux阳复 celles阴复 /ceci这cela=c,a那独立用法无需前面出现n,特指某类人,通常复数 ceux

verilog基本语法

Verilog基本语法 【逻辑值】 逻辑0 表示低电平,GND 逻辑1 表示高电平,VCC 逻辑X 表示未知电平,可能是高电平,也可能是低电平 逻辑Z 表示高阻态,外部没有激励信号,是一个悬空状态 注:高阻态的实质:电路分析时高阻态可做开路理解。 可以把它看作输出(输入)电阻非常大,对下级电路无任何影响。 若为0、x、z则按照假处理;若为1,按真处理。 【进制】 二进制4'b0101 —4位二进制数0101 十进制数4’d2 —4位十进制数2 十六进制数4’ha —4位十六进制数a Verilog中若不指定位宽,默认32位;若不指定位宽不指定进制,默认32位宽的十进制数。 【标识符】 标识符可以是字母、数字、$和_(下划线)的组合,且开头必须是字母或下划线,区分大小写。不建议大小写混合使用。 【数据类型】 寄存器关键字reg,默认初始值位不定值X; reg[31:0] delay_cnt; //[31:0],指定寄存器位宽32位, reg key_reg; // 默认位宽为1. reg类型数据只能在always和initial语句中被赋值。 线网表示结构实体的物理连线,包括wire和tri类型 参数常量,用parameter定义。 parameter H_SYNC = 11'd41; 【运算符】 [条件操作符] ?: 例,a?b:c //如果a为真就选b,否则选择c。 result=(a>=b)?a:b; [逻辑运算符] !&& || [位运算符] ~ & | ^(按位异或) a&b; //自动将位宽小的数高位补零至较大数的位宽,然后按位与操作。[移位运算符] << >> 用0填补移出的空位。左移时位宽增加,右移位宽不变。 [位拼接运算符] {} 例,{a,b} //将a和b拼接起来,作为一个新信号,a为高位。 c={a,b[3:0]}; //a、b位宽均为8位,c为8+4=12位。

VerilogHDL经典程序非常适合新手

一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0; 2'b01:y=i1; 2'b10:y=i2; 2'b11:y=i3; default:y=0; 一、2线-4线译码器 module counter4(q1,q0,ncr,cp); input cp,ncr; output q1,q0; reg q1,q0; always@(posedge cp or negedge ncr) begin if(~ncr){q1,q0}<=2'b00; else{q1,q0}<={q1,q0}+1'b1; end endmodule 二、4选1数据选择器 module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0; output y; reg y; always@(a1or a0) begin case({a1,a0}) 2'b00:y=i0;

新大学法语1·语法总结

新大学法语1·语法总结

[键入公司名称] [键入文档标题] [键入文档副标题] Administrator 2016/5/6

目录 一、名词 (1) (一)名词的阴阳性 (1) 1.名词的阴阳性 (1) 2阳性名词改为阴性名词: (1) (二)名词的单复数 (1) 1.名词的单复数 (1) 2.名词复数的构成: (1) (三)普通名词和专有名词 (2) 二、代词 (2) (一)人称代词 (2) 1.主语人称代词 (2) 2.重读人称代词 (2) 3.直接宾语人称代词 (2) 4.间接宾语人称代词 (3) (二)副代词“y”和“en” (3) 1.y (3) 2.en (3) (三)中性代词le (3) 1.作表语 (4) 2.作直接宾语 (4) (四)关系代词“qui” (4) 三、形容词 (4) (一)形容词的构成 (4) 1.阴性形容词的构成 (4) 2.复数形容词的构成 (4) (二)形容词的位置 (5) (三)疑问形容词和感叹形容词 (5) (三)主有形容词 (5) (四)指示形容词 (6) (五)泛指形容词 (6) 四、动词 (7) (一)及物动词与不及物动词 (7) (二)代词式动词 (7) 1.意义 (7) 2.代词式动词的命令式 (8) 3.代词式动词的复合过去时 (8) (三)无人称动词 (8) (四)动词变位 (8)

1.第一组规则动词的直陈式现在时动词变位 (8) 2.第二组动词的直陈式现在时动词变位 (9) 3.第三组不规则动词的直陈式现在时动词变位 (9) (五)过去分词 (9) 五、冠词 (10) (一)不定冠词和定冠词 (10) 1.形式 (10) 2.用法 (10) (二)缩合冠词 (10) (三)部分冠词 (11) 1.形式 (11) 2.用法 (11) (四)冠词的省略 (11) 六、介词 (11) (一)“à”和“de ” (11) (二)国名、洲名前所用的介词 (12) 1.en + 阴性国家名 (12) 2.au + 阳性国家名 (12) 3.aux + 复数国家名 (12) 七、命令式 (12) (一)命令式的形式与意义 (12) 1.形式与意义 (12) 2.特殊形式 (12) (二)宾语在命令式中的位置 (13) 1.名词宾语 (13) 2.代词宾语 (13) 八、疑问句 (13) (一)一般疑问句 (13) 1.结构 (13) 2.oui ,non ,si 的用法 (13) (二)特殊疑问句 (14) 九、强调表达法 (14) 十、复合句 (14) 1.平列句 (14) 2.并列句 (14) 3.主从复合句 (14) 十一、时间表达 (15) (一)年、季节、月、日、星期、钟点表达法 (15) 1.年 (15) 2.季节 (15) 3.月 (15) 4.日 (15)

VerilogHDL实例

本文档含有很多Verilog HDL例子://与门 module zxhand2(c,a,b); input a,b; output c; assign c= a & b; endmodule //或门 module zxhor2(c,a,b); input a,b; output c; assign c= a | b; endmodule //非门 module zxhnot2(c,b); input b; output c; assign c=~ b; endmodule ////异或门 module zxhxro2(c,a,b); input b; output c; assign c=a ^ b; endmodule 两选一电路 module data_scan(d0,d1,sel,q); output q; input d0,d1,sel; wire t1,t2,t3; n1 zxhand2(t1,d0,sel); n2 zxhnot2 (t4,sel); n3 zxhand2(t2,d1,t4); n4 zxhor2(t3,t1,t2);

assign q=t1; endmodule verilog HDL实例(一) 练习一.简单的组合逻辑设计 目的: 掌握基本组合逻辑电路的实现方法。 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意 equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。 测试模块源代码: `timescale 1ns/1ns //定义时间单位。 module comparetest; reg a,b; wire equal; initial //initial常用于仿真时信号的给出。 begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; //系统任务,暂停仿真以便观察仿真波形。 end compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。 Endmodule

用veriloghdl设计计数器

用Verilog HDL设计计数器 一、实验目的 1. 学习使用Verilog HDL语言,并学会使用进行QuartusⅡ软件编 程和仿真; 2. 掌握数字电路的设计方法,熟悉设计过程及其步骤; 3. 培养学生的动手能力,能学以致用,为今后从事电子线路设计 打下良好基础; 4. 巩固加深对数电知识的理解,在仿真调试过程中,能结合原理 来分析实验现象; 二、实验内容 1.设计内容及要求 1)利用Verilog HDL设计一个以自己学号后三位为模的计数器; 2)编写源程序; 3)给出仿真电路图和仿真波形图; 2.需求分析: 由于本人的学号后3位为212,所以应编一个以212为模的加法计数器。若采用同步清零的方法,则计数为0~211,化为二进制数即为0 0000 0000计到0 1101 0011。 3.编写源代码: module count_212(out,data,load,reset,clk);

output [8:0] out; input [8:0] data; input load,reset,clk; reg [8:0] out; always @(posedge clk) + A[8..0] B[8..0] ADDER < CIN A[8..0] B[8..0] LESS_THAN 1 D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR D ENA Q PRE CLR SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 Les s Than0 9' h0D3 -- out[0]~reg0 out[1]~reg0 out[2]~reg0 out[3]~reg0 out[4]~reg0 out[5]~reg0 out[7]~reg0out[8]~reg0 out~[8..0] 9' h000 -- res et clk out[8..0] data[8..0] out~[26..18] 9' h000 -- out~[17..9] load out[6]~reg0A dd0 9' h001 --

新大学法语第一册U1-9语法知识点整理

新大学法语第一册U1-9语法知识点整理新大学法语第一册UNITE1-9语法知识点整理Unité 2---Texte A 名词见名词知识点整理 Unité 2---Texte B 法语的钟点表达法: 1、表示钟点用无人称短语il est... Il est neuf heures, 现在九点钟。 Il est midi. 中午 Il est minuit. 午夜十二点。 2、表示―半‖ Il est neuf heures et demie. 九点半。注意这里的―demie‖用的 是阴性形式,因为heure是阴性名词。 3、表示―刻‖ Il est une heure et quart. 一点一刻 Il est sept heures trois quarts. 九点三刻=十点差一刻4、表示―分‖ Il est huit heures une (minute). 八点零一分 Il est trois heures vingt-cinq. 三点二十五分5、表示―差‖ Il est cinq heures moins quatre. 五点差四分 - 1 - 新大学法语第一册UNITE1-9语法知识点整理 Il est sept heures moins le quart. 七点差一刻。注意这里的 ―le‖,千万不能少。 6、欧洲大陆日常生活中使用二十四小时制。如果一个法国 人说sept / huit / neuf / dix / onze heures, 他通常说的是早晨

7/8/9/10/11点。有时也会用12小时制,为了避免混淆,在钟 点后加上du matin, de l'après-midi, du soir。写小时时,法国人 用字母 "h"来代替。如: 9:00 = 9h, 10:30 = 10h30. 介词à 和de的用法 A通常引出时间、地点或愿望: A demain ! 明天见A votre santé !为健康干杯Nous habitons à Jinhua我们住在金华 Je vais aller à Shanghai我要去上海 De通常表示起点、来源或从属,即―来自……‖、―从……‖。 Il est originaire de Shanghai.他是上海人。C’est l’étudiante de professeur Wang这是汪老师的学生 否定式 常见的形式是:ne + 动词 + pas (ne 碰到以元音字母或哑音 h开头的动词时变成 n' EX:Aujourd'hui je n'ai pas faim. Je ne déjeunerai pas. Je n'aime pas le vin blanc. Pierre n'habite pas chez ses parents. - 2 - 新大学法语第一册UNITE1-9语法知识点整理 Unité 3---Texte A 法语疑问句 法语的疑问句有多种形式,主要为两大类:一般疑问句和特殊疑问句。 一般疑问句:

从Verilog到VHDL(上)基本语法

从Verilog 到VHDL(上)基本语法 16 六 从学校里开始,我所接触的就一直是VerilogHDL 而非更老牌的VHDL, 而且后续接触的项目中也多半是Verilog 的用户,坦白的讲,Verilog 的活力也确实更足一些,从 IEEE1800-2005 开始的SystemVerilog 的标准化,将 Verification 和Design 的一体化的尝试,我个人认为,是走在正确的道路上。 所以,我确实想不到,我竟然也要回头学起VHDL 来了,毕竟一些老牌公司,特别是欧洲的公司,往往因为历史原因,仍然在使用VHDL ,看来终究是绕不过去的了正如一个Design Verification 工程师在目前想完全的不和SpecmanE 打交道是很难的一样。 面记载的是两种语言学习过程中的一些体会,而且更多的是从语法角度出发,算是梳理一下思路吧,而且,以前从来 没有接触过VHDL ,当然会存在很多非常初级的东西。 而在本文之后,打算再写一篇简单阐述下结合Cadence 的IUS 工具,使用SystemVerilog 对VHDL 进行验证的基本方

法。 起手式从Verilog 撞进VHDL 的世界,有些东西要先搞清 楚,否则会一头雾水: 1. 大小写敏感:Verilog 是大小写敏感的,VHDL 则非; 2.注释:Verilog 的行注释为// ,块注释为/**/;VHDL 只 支持 行注释–;[1. 这个算是不方便的一个地方了,不过不 基本结构 论是在Vim 还是Emacs 当中,批量做行注释也很容易实现;] VHDL 被认为是要求更严格,更多讲究的语言,相比和 C 类 似的Verilog ,架构上更严谨一些: 1.基本结构:从上往下为 USE 定义区(调用库和包);Package 定义区(自定义程序包);Entity定义区(定义电路实体外观,I/O接口的规 格); [2. Entity 感觉像是 C 的头文件定义之类的东西,而在Verilog 当中,这些其实都是被整合在Module 里头一起完成 了。]Architecture 定义区(描述内部功能);[3. 同 上,相当于Verilog 的Module 内部实现。]Configuration 定义区(决定那个Architecture 被使用)[4. 这也许就是 之所以要分开 Arch 和Entity 的原因,类似的效果在Verilog 里实现,则

常用VerilogHDL 语法总结

常用VerilogHDL 语法总结 1 模块 (1)端口定义:声明模块的输入输出口。引用模块时端口的两种连接方法。 (2)模块内容:I/O说明(输入输出)、内部信号说明(和端口有关的变量说明)、功能定义(定义逻辑功能的三种方式:assign 声明语句;实例元件;always 块)。 (3)理解要点:整体语句并发执行,always块内顺序执行。 2 常量 (1)数字:整数及三种表达方式 x和z值 负数:减号的位置 下划线:位置和作用 (2)参数:parameter符号常量,常用于定义延迟时间(使用#)和变量宽度。 3 变量 (1)wire:表示易assign指定的组合逻辑信号;默认值;任何方程式的输入或assign语句及实例元件的输出;定义格式。(2)reg:表示always块中指定的信号,代表触发器;寄存器数据类型(触发器存储值),默认值为x;定义格式。 (3)memory:reg的数组;描述RAM、ROM、reg文件;单元索引;一个n为寄存器和n个一位数组的区别。 4 运算符与表达式 (1)算术运算符:五种 (2)位运算符:五种 (3)逻辑运算符:三种 (4)关系运算符:四种(3种不同的返回值) (5)等式运算符:四种 (6)移位运算符:两种(移位补零) (7)位拼接运算符:{},常用于某些控制信号位;重复与嵌套使用 (8)缩减运算符:类似于逻辑运算符,结果为一位二进制数(9)运算符优先级 5 语句 (1)赋值语句 阻塞赋值:b<=a;块结束后完成赋值,b的值不是立即改 变的,较为常用; 非阻塞赋值:b=a;赋值语 句执行后块才结束,b的值马上 改变,在沿触发的always块中 使用可能引起错误后果。 (2)块语句 顺序块begin-end:顺序执 行,最后语句执行完流程跳出语 句块; 并行块fork-join:同时执 行,时间最长语句执行完或 disable语句执行时跳出程序 块; 块名的作用; 起始时间和结束时间 (3)条件语句 If-else语句:三种形式; if表达式判断;分号;复合语句; 表达式简写;if语句嵌套;if 与else的配对。 Case语句:三种形式 (casez:不考虑z进行比较, casex:不考虑z和x进行比较); 控制表达式与分支表达式(常量 表达式);default;所有表达式 的位宽必须相等。 条件语句使用不当造成锁 存器:避免错误:case中使用 default,if必须搭配else。 (4)循环语句 Forever:格式;连续执行; Repeat:格式;连续执行n 次;表达式通常为常量表达式; While:格式;执行语句至 条件不满足; For:格式:for(循环变量 初值;循环结束条件;循环变量 增值)。 (5)结构说明语句 Initial:格式;执行一次; 常用来变量初始化和生成激励 波形作为电路的测试仿真信号; Always:格式;执行至仿真 结束;注意时序;常用来描述时 钟信号作为激励信号;时间控制 可以为沿触发(描述时序行为) 也可以是电平触发(描述组合逻 辑行为); Task:定义;任务的调用与 变量的传递;任务调用变量与任 务定义的I/O变量必须一一对 应; Function:定义;函数返回 值(函数定义蕴含定义了同名寄 存器);函数调用通过函数表达 式中的操作数来实现的。 (6)时间控制语句 #、@、wait标识的语句 6 系统函数和任务 (1)$display和$write:输出 信息;格式说明和普通字符; (2)$monitor:监控和输出参 数列表中的表达式和变量值;关 闭与打开控制; (3)$time:返回64位整数表 示当前仿真时刻值;时间尺度; $realtime:返回时间为实 型数; (4)$finish:退出仿真器,返 回主操作系统;参数; (5)$stop:把EDA工具设置为 暂停,给出交互命令提示,把控 制权交给用户; (6)$readmemb 和$readmemh: 从文件读取数据到存储器;格 式;读取内容; (7)$random:返回32位带符 号整型随机数;用于产生随即脉 冲序列和宽度随机的脉冲序列 进行电路测试。 7 编译预处理 (1)`define:宏定义,符号常 量; (2)`include:文件包含;使 用形式; (3)`timescale:时间尺度, 说明跟在该命令后的模块的时 间单位和时间精度; (4)`ifdef、`else、`endif: 满足条件的语句进行编译;不编 译的部分也应符VerilongHDL语 言规范。

新大学法语第二学期语法

第一册:Unité 9 ●强调句型:c’est ... qui / c’est ... que 1. 强调主语用c’est ... qui, 如果主语是代词,必须用其重读形式 2. 强调主语以外的成分用c’est ... que 3. 强调复数,用ce sont ... qui / ce sont ... que 4. 强调部分前有介词,将介词一起放在强调短语之间 5. 被强调成分是间接宾语代词时,强调短语中换为“à+重读人称代词” Mon oncle m’a aidé à obtenir cet empl oi---c’est mon oncle qui m’a aidé à obtenir cet emploi. Mon frère a acheté une voiture---c’est une voiture que mon frère a acheté. Il part pour Paris aujourd’hui---c’est aujourd’hui qu’il part pour Paris. J’ai envie d’une crème glacée àla framboise---c’est d’une crème glacée à la framboise que j’ai envie. Attention !: Elle parle de Frédéric---C’est de Frédéric qu’elle parle. Elle parle à Frédéric---C’est àFrédéric qu’elle parle. Je suis arrivée en retard à cause de Frédéric.---C’est à cause de Frédéric que Je suis arrivée en retard. ●中性代词le,无性数变化 作直宾,代替一个不定式动词Partons, il le faut.我们走吧,必须走。 作表语,代替一个表示身份或职业的名词Ta mère est médecin, je crois que tu le seras un jour 作表语,代替一个形容词V ous voyez ces deux jumeaux, quand l’un est content, l’autre le ser a aussi. 代替一个句子Tu n’as pas bien écrit, je le sais, dit le petit Paul。 Unité 10 ●最近过去时 意义:表示刚刚发生或刚刚完成的动作 构成:venir(直陈式现在时)+de+inf. 例句:Je viens de finir mon travail. - Il vient d’être dix heures. - Nous venons d’entrer dans la classe. ●最近将来时 意义:表示立即要发生的动作 构成:aller(直陈式现在时)+inf. 例句:Je vais partir à dix heures. - Il va être dix heures. - Nous allons apprendre la grammaire de l’ unité 10.

新大学法语-第二册时态总结

(一)被动态P6 1.构成:être + (及物动词)过去分词+ par 2.常以par引出施动者 3.表示状态或情感的被动态动词后,以de引出施动者 être aimé/respecté de être couverte(couvrir) de 4.性数配合 5.被动态的时态以être 的时态为准 (二)简单将来时P29 1.第一组&第二组动词,在inf. 后依次加词尾e.g. habiter;finir -ai -ons -as -ez -a -ont 2.以-re结尾的第三组动词,去掉e加词尾e.g. prendre; construire; lire 3.大多数第三组动词简单将来时变位时,词根有变化

4.用法:简单将来时表示将来发生的动作或出现的状态 (三)先将来时P48 avoir(简单将来时)+p.p 【及物动词】e.g. j’aurai fini être (简单将来时)+p.p 【不及物动词】e.g. je serai sorti(e) (四)动词不定式的时态P67 1.动词不定式现在时表示与主要动词同时发生的动作 e.g. Je veux lire. 2.动词不定式过去时 avoir(不定式)+ p.p 【所有及物动词&小部分不及物动词】e.g. avoir lu être (不定式)+p.p 【大部分不及物动词&代动词】e.g. être parti 表示在主要动词之前已发生或完成的动作 (五)未完成过去时P86 1.构成:动词现在时第一人称复数(nous)形式去掉词尾-ons,再按人称顺序加

2.être的未完成过去时 3.下列动词未完成过去时的变化 未完成过去时与复合过去时的比较P87 (六)简单过去时P112 1.第一组动词(包括aller)用第一种词尾 去掉er,加词尾

新大学法语第二册1-5单元复习整理

新大学法语第二学期复习整理 一.语法: 1. Ce professeur est aiméde ses élèves. 2. Sa voiture a été réparée. https://www.360docs.net/doc/0c10879868.html, Chine est plus grande que la France 4.En été, il fait aussi chaud à Beijing qu’à Tianjin 5. Il est plus riche qu’avant . 6. Mon école est meilleure que ton école. 7. Paris est la plus grande ville de la France. 8. La grammaire du fran?ais est la plus difficile. 9. C’est la plus belle femme de cette ville. 10.C’est la ville la plus belle de son pays. 11.Marie, c’est une de mes amies les plus aimables. 12. Il marche plus vite qu’avant 13.Je vais au cinéma moins souvent que Marie. 14. Il va mieux aujourd’hui. 15.Je travaille peu, tu travailles autant, lui, il travaille plus. 16. Marie court le plus vite de notre classe. 17.Dès que je serai rentréà Beijing, je vous téléphonerai. 18.Je ferai une promenade quand j’aurai fini mon travai . 19.Ce qui m’intéresse, c’est le prix. 20.Ce qu’il veut lire, ce sont des romans fran?ais 21.Ce qui est important, c’est d’avoir une villa et une voiture. 22. Dire et faire sont deux choses. 23. Crier n’est pas chanter. 24. Après avoir dit au revoir, il est monté dans le train. 25. Après être arrivéà Beijing , je vous enverrai une lettre 26. Ce dictionnaire est utileà consulter. 27. Je suis obligéde vous donner ces exercices. 28.Hier, il faisait beau, je suis allé en ville. 29. Pendant les vacances, je me couchais à dix heures et je me levais à sept heures. 30.Je voudrais rester à Guanzhou. 31.Dites-moi ce qui vous intéresse.

VerilogHDL试卷及答案

一、选择题: 1、下列标示符哪些是合法的(B ) A、$time B、_date C、8sum D、mux# 2、如果线网类型变量说明后未赋值,起缺省值是(D ) A、x B、1 C、0 D、z 3、现网中的值被解释为无符号数。在连续赋值语句中,assign addr[3:0]=-3;addr被赋予的值是(A )//补 码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! A、4’b1101 B、4’b0011 C、4’bxx11 D、4’bzz11 4、reg[7:0] mema[255:0]正确的赋值是(A ) A、mema[5]=3’ d0, B、8’ d0; C、1’ b1; D、mema[5][3:0]=4’ d1 5、在code模块中参数定义如下,请问top模块中d1模块delay1、delay2的值是( D ) module code(x,y); module top; paramee delay1=1,delay2=1; ……………. ………………………………code #(1,5) d1(x1,y1); endmodule endmodule A、(1,1) B、(5,5) C、(5,1) D、(1,5) 6、“a=4’ b11001,b=4’ bx110”选出正确的运算结果(B ) A、a&b=0 B、a&&b=1 C、b&a=x D、b&&a=x 7、时间尺度定义为timescale 10ns/100ps,选择正确答案(C ) A、时间精度10ns B、时间单位100ps C、时间精度100ps D、时间精度不确定 8、若a=9,执行$display(“current value=%0b,a=%0d”,a,a)正确显示为(B )//去除无效0 A、current value=1001,a=09 B、current vale=1001,a=9 C、1001,9 D、current vale=00…001001,a=9 9、always begin #5 clk=0;#10 clk=~clk;end产生的波形(A )//5占15的1/3 A、占空比1/3 B、clk=1 C、clk=0 D、周期为10 10、在Verilog中定义了宏名`define sum a+b+c 下面宏名引用正确的是(C ) //注意引用 A、out=’sum+d; B、out=sum+d; C、out=`sum+d; D、都正确 二、填空题:(共15分,每小题3分) 1、某一纯组合电路输入为in1,in2和in3,输入出为out,则该电路描述中always的事件表达式应写为 always@(in1,in2,in3 );若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always @( posedge clk )。 //@(条件表达式) do_something; 表示等待条件表达式满足,然后do_something,然后就往下走了。通常用在testbench中,不可综合。 ------------------------------------ always @(a or b or c) begin do_something; end 表示不停地监测a、b、c,一旦它们任何一个发生变化,就立刻do_something,并且这个“监测”是始终存在的。这种电路综合出来时组合逻辑电路。

新大学法语第一册 1-3单元知识点归纳

法语发音规则总结

注意: 1、字母h在词中永远不发音,在两个元音之间起分音作用,如cahier [kaje]。 2、辅音字母在词末一般不发音,但是c,f,l,r通常要发音,如sac[sak],vif [vif],canal [kanal],fuir [f ?ir]。 3、元音字母e在词末不发音, 如Anne [an],vive [viv]。 4、两个相同的辅音字母一起时,只读一个辅音,如cette [sεt],elle [εl]。 5、字母y一般情况下读音为[i],如stylo [stilo]。当它在两个元音字母之间时,其作用相当于两个i,要分别与前后的元音字母拼读,如crayon=crai+ion[krε-j?],voyage=voi+iag [vwaja?] 6、[p]、[t]、[k]在元音前不送气。

一、动词变位 être avoir manger aller je suis j’ai je mange je vais tu es tu as tu manges tu vas il /elle est il /elle a il/elle mange il /elle va nous sommes nous avons nous mangeons nous allons vous êtes vous avez vous mangez vous allez ils/elles sont ils/elles ont ils/elles mangent ils/elles vont faire prendre devoir vouloir je fais je prends je dois je veux tu fais tu prends tu dois tu veux il/elle fait il/elle prend il /elle doit il/elle veut nous faisons nous prenons nous devons nous voulons vous faites vous prenez vous devez vous voulez ils/elles font ils/elles prennent ils/elles doivent ils/elles veulent 第一组规则动词直陈式现在时的变位:去掉词末的er, 加e, es, e, ons, ez, ent, 以regretter 为例: Je regrette, tu regrettes, il/elle regrette, nous regrettons, vous regrettez, ils/elles regrettent 注意:j’étudie, j’entre, j’habite 中的省音。 二、重点句型 1.-Comment allez-vous ? –(Je vais) très bien, merci. -Comment ?a va ? – ?a va (bien) 2. -Qui est-ce ? -C’est ma s?ur. 3. Je te présente Madame Durant, elle est ingénieur/professeur. 4. -Quel est son nom ? -Son nom est Marie. Elle va àl’école. 5. -Comment t’appelles-tu /Tu t’appelles comment ? -Je m’appelle Jacques. 6. -Quel age (n.m.年龄) as-tu ?- J’ai vingt ans. 7. -Vous habitez où ?/ Oùest-ce que vous habitez ?/ Oùhabitez-vous -J’habite rue des écoles. 8. -Que’est-ce que tu fais (ce/le) dimanche ? -Je vais au cinéma/au concert/àl’école. 9. à dimanche./à demain./à bient?t/ Au revoir. 10. -à midi, je vais manger avec Gérard, tu viens ? - Désolée, j’ai des exercices àfaire. - Je regrette beaucoup, une autre fois peut-être. 11. Enfin te voilà. 12.-Excuse-moi, je suis en retard.-Ce n’est pas grave. 13.-Quelle heure est-il ?-Il est dix heures/ Il est dix heures et quart/ Il est dix heures moins le quart/Il est dix heures et demie/ Il est dix heures vingt-cinq./Il est dix heures moins deux./il est midi et demi/il est minuit. (注意:当demi位于名词前,无性数变化,如une demi-heure 半小时,当demi位于名词后,性随名词变化,数不变,如:cinq heures et demie 五点半,midi et demi 中午十二点半) 14.-V ous avez l’heure ?-Oui, il est neuf heures trente. 15.-Il est temps d’entrer au cinéma/Il est temps d’aller au cinéma. 16.-Attention aux voitures/ Attention àla voiture. 17.Je suis en retard. Je dois aller àl’école.

相关文档
最新文档