第一篇:语法学习心得
语法学习心得
语法,是语言中的词、短语、句子的构造规律。西方传统语言学认为,语法包括两个大的方面:词法和句法。也正由于汉语的词的分类定性
都必须依靠特定的句法环境来实现,所以,汉语语法有关词类问题的讨论总是要放到句法当中去进行。
研究语法的学科叫做语法学,语法学分很多类,1宏观研究方法。2研究对象的时限。3研究者的社会目的。4研究者的教育目的。5对象范。
语法系统分为客观语法系统和主观语法系统,一种语言只有一个客观的语法系统,它是客观存在于语言当中的。但一种语言的表述系统却可以
有几个。造成表述系统多样化的原因有两个:一是语法学研究的对象自身是复杂的,要全面把握并做出科学、合理的解释并不是容易的事情。
二是语法学家的研究方法、角度、能力以及占有的材料、观察问题的方法、能力等等,都不尽相同,所以,尽管面对的是同样的研究对象,也 可能得出完全不同的或者不很相近的结论来。
语法有其作用,首先,从说和写的角度来看,语法规定着人们怎样用词造句。比如,汉语的“我看书”从排列的角度来看,可有六种顺序:我
看书、书我看、我书看、看我书、书看我、看我书。其次,从听、读、写的角度来看,语法指示人们怎正确理解汉语的意义。如:①
人类需要动物。动物需要人类。② 这本书看了三天。这本书看了三天了。两个例子都说明语法规则对于句子语义内容的影响。
我们不难发现汉语语法的几个显著特点(1)短语和句子的基本构造方式一致。
汉语的短语和句子大都是由以下几种构造方式构造而成的:
结构方式 短语 句子
主谓结构 我写 花红 灯亮 我写了。花红了。灯亮
动宾结构学汉语 写信 吃饭来人!抓住他!请用饭。
偏正结构大人 高举 我的书 你的票!快跑!高点举!
联合结构读写 高大 我和你你和她?
中补结构抬高 说清楚 放好说清楚!干得非常非常好。
这一点给我们的启示是:分析句
子的方法和分析短语的方法基本一致。汉语句子的结构可以以短语为基础,弄清短语的结构模式,就可以
基本上把握句子的结构模式。因
为短语比句子简短,影响结构构造、分析的因素少。以此为基础,把握汉
语句子的结构模式,可以收到以简驭繁的效果。
(2)词类和句子成分之间不存在简单的、一一对应关系。
由上边所说的汉语语法有关词类问题的讨论总是要放到句法当中去进行,现在来说说我感兴趣的分析句子成分部分。
句子,是具有特定语调,能表达一个相对完整意思的语言单位。所谓“句子成分”,说的是根据句子内部组成成分
之间的不同的组合关系,以及各自语法职能划分而来的 句子的结构成分。如主语、谓语等等。分析句子的两种方法
(一)句子成分分析法。句子成分分析法,是传统的分析句子的方法,它把句
子成分分别为主、谓、宾、定、状、补等六类,然后按照这些成分的搭配情况来说明句子的各种结构格局。由此可以看到句子成分有如下特点:
其一,句子成分是句子分析的结果。
句子成分是通过对句子进行语法结构的分析得到的,应该是先有句子,而后得到句子成分。
其二,句子成分具有特定的语法职能或“身份” 特征。比如: 通过上边的分析可以得到以下几组句子结构成分 这也就是所谓的汉语“十大句子成分”:主语、谓 语、动语、宾语、中心语、修饰语、定语、状语、补 语、独立语。
关于语法学习的心得就简单说到这吧,这一学期的学习懂得了很多语法的基本知识,也有了一定对语法的思辨能力了。
第二篇:关于语法的学习心得
关于语法的学习心得
山西省永济中学王碧霞
英语学习过程中最重要的一个环节就是关于语法的掌握,不管是单选题,还是完型填空,以及阅读理解,都会涉及不是的语法知识,而如果我们不能熟练掌握这部分内容的话,势必造成总体成绩不佳的结果。语法教学能让学生对英语语言规则有明确系统的认识,有利于帮助学生建立起语言规范。不过我们在语法教学中要特别注意,我们教给学生英语语法,不是为了培养他们用语法分析英语语言的能力,语法教学是为培养学生运用英语的能力服务的,语法教学从属于运用英语的能力的培养。下面就我本人在教学一线的一线工作经验对语法学习方法总结如下:。
1、总体把握语法大纲
就像刚接触英语单词一样,我们得知道英语单词都是由26个字母组成的,并且一开始就得不断积累我们的单词量。同样语法的学习也需要先进行大体把握,再让学生在较短时间内迅速掌握英语基础语法知识。这种语法教学方法需要学生具有比较强烈的语法学习兴趣和比较顽强的语法学习毅力,同时需要学生具有比较强的集中注意力的能力。这种语法教学方法在期末复习和毕业复习时应该对学生有一定帮助,但在学生学习开始时使用可能增强学生学习英语的焦虑感,严重的可能导致学生形成英语学习的心理障碍。
这种方法将语法知识学习与课文学习长时间分开,如果将一学期的语法知识在学期开始时集中教学,那么本学期最后一个单元才会学到的语法知识就可能出现语法知识学习与课文学习分离一个学期之长,这可能影响学生准确掌握语法知识的运用。这种方法同时将语法知识和语法知识的运用长时间分开,不利于学生学习掌握运用语法知识的真实语境及其真实的语用功能。
语法集中教学能有效帮助学生比较系统地学习语法知识,而且可以帮助学生对容易混淆的语法知识进行比较,如能合理使用,是可以帮助我们提高教学质量和教学效率的,但如果使用不当,则可以反而增加教学难度,影响教学质量和教学效率,影响学生形成获得运用英语的能力。同时,在运用集中方法时,如何集中,集中哪些语法知识,语法知识的集中讲授与语法知识的运用能力培养怎样有机合理地结合起来,都是应该思考的问题。盲目集中可能不利于老师们所任教班级的教学质量和教学效率的提高。
2、善于总结归纳
归纳是从感性认识到理性认识的学习方法。归纳要求我们先给学生一些含有语法教学内容的语言材料,让学生在学习语言材料中接触这些语法现象,然后引导学生从这些语言材料中归纳总结出语法规则。
归纳法能够让学生先获得语言材料,从感性认识中获得理性认识,有利于学生理解和掌握语法规则,但需要一定的教学时间,需要老师做比较多的语言材料的教学规则,而且在语言材料教学中需要从语境、语用进行教学,而不是直接从语法概念和语法规则进行教学。
3、理性的归纳再应用于实践
应用是从已经形成的概念出发,直接将概念讲授给学生,然后再用例句和语言材料来说明概念。
这种方法让学生首先接触语法规则,可以避免出现规则误差,但演绎法过于理性,需要学生具有比较强的抽象思维能力,强烈的学习兴趣和一定的学习毅力。?
总结与应用相比,总结更有利于减轻学生学习负担,降低学生学习困难,弱化学生学习焦虑,应用更有利于缩短学生学习时间,减少学生学习错误。归纳法更利于学生的学习,演绎法更利于教师的教学。
所以刚接触英语时一定要注意不断总结,当我们具备一定基础后可以将总结的理论再推广应用到学习过程。不过老师们仍然应该根据自己任教班级的动态真实的教育因素和教学因素选择教学方法。
4、参考科学实验中的对照原则
学习过程中经常会遇到容易混淆的语法知道,这时我们不防把这两个内容放在一块进行对较,多看两遍就会发现它们之间总会有这样那样的区别,这里所谓比较包括两个方面:一是对英语语法本身中的相似但不同的英语语言现象进行比较,如一般现在时与现在进行时的比较,一般过去时与现在完成时的比较,形容词性物主代词与名词性物主代词的比较等等;二是对英语和汉语两种语言中的相关的语法现象和结构规则的比较。
比较的语法教学可以在学过可比较的一种语法现象之后,学习另一种语法现象之时,就两种语法现象进行比较,如学过形容词性物主代词之后,在学习名词性物主代词之时,就已经学过的形容词性物主代词与名词性物主代词进行比较,来帮助学生学习掌握名词性物主代词。
比较的语法教学也可以用在语法总结复习之时,比如学习了五种动词基本时态之后,就五种时态在用法、语义、语用等方面的区别进行比较,以帮助学生巩固掌握。复习时,比较方法的语法教学应该是在足够真实的语言环境中运用语言的比较,而不是单纯的语法概念、术语的比较。
5、更为具体直观的语法学习方法
表格能够很明确地对语法知识进行比较和归类,因此经常出现在语法知识教学中,甚至有的语法书都是有表格形式编写的。
由于表格强调内容的一致性,因此表格只能列举英语语法知识的基本内容,对于比较特别的不一致的内容往往列举有些困难,同时语法知识的运用比较难以列举。
很多老师运用图画进行英语语法知识教学,因为图画形象直观,能让学生很容易地掌握教学内容,经常取得比较好的教学效果。
不过图画只能用于一部分英语语法知识的教学,比如方位介词、副词的教学,时态的教学等。
6、利用现代化的多媒体技术
图片与视频是人类学习过程中更容易接受的一种信息,这里同样可以应用于我们的英语学习过程中,在一些计算机辅助教学软件中经常使用计算机动画进行语法教学。计算机动画具有很强的动感,而且动画本身也很受学生欢迎,同时动画能够很明确地表现动作,并配有讲解,因此这种形式很有生命力。
随着计算机辅助英语教学的广泛开展,计算机动画形式的语法教学也会被广泛使用。由于目前的大多数计算机教学软件不是网络化的,致使计算机动画的语法教学还难以在学生之间进行教学对比,从而在一定程度上影响计算机动画的教学效果的发挥。
7、及时交流巩固
无论采取什么样的教学原则,语法知识都是必须要讲授给学生的,只是讲授的方法不同而已。现在的新教材都强调对学生运用英语进行交际的能力的培养,对语法采取了暗线的教授方式,这对于每周只有在几节英语课上才能进入英语环境的中国学生来说,难度比较大。其实,必要的语法知识讲解是不可避免的,关键是怎样在语法教授中贯彻能力教育原则。
第三篇:TCL学习心得 语法整理笔记
TCL 一行有多个语句的时候要使用“;”隔开。TCL的注释是“#”,一行中#之后内容全是注释内容。在交互模式中用source 命令,可以执行TCL脚本文件。
Ps: Source 1.tcl #1.tcl 是脚本文件 cd命令类似DOS中的用法,可以改变当前目录。
dir命令类似DOS中的用法,可以显示当前目录里的文件。
Ps: dir 1.tcl #查看1.tcl文件的详细信息
Set是定义变量,也可以给变量赋值,变量没有数据类型,也是显示变量内容的命令。
Ps: Set a “hello world”
#给a赋值hello world,因为字符串含有空格所以要用””
Ps: Set a “hello world”
Set a
#程序结果是显示a的值
使用变量的值的时候要在变量前加$(可以理解为,取值符号),$不能嵌套。
Ps: set a 546
set b $a
#把a的值付给b puts是输出命令。
PS: puts “hello world”
#含有空格的字符串要用””或者{}
Ps: set a 1
Puts “$a” #程序输出a的值
Puts {$a} #程序输出字符串$a Unset是删除变量的命令。
Ps: set a 56464
Puts “$a” #输出a的值
Unset a #释放变量a
Puts “$a” #系统提示a 没有定义 “can't read “a”: no such variable”
方括号“[]”完成命令替换,用“[]”将一条命令括起来,命令执行完成后,返回结果。
Ps: set b [set a 5]
#set a 5命令输出的结果赋给b puts $b
set c [expr 5 * 10] #将乘式结果赋给c “”中可以进行替换操作,比如:取值,计算等等。
Ps: set a 4564
Set b 454
Puts “[expr $a + $b]”
#程序输出a+b的计算结果
{}中不能进行替换操作,{}内全部是字符串,在控制语句中{}用来界定条件。
Ps: set a 4564
Set b 454
Puts {[expr $a + $b]}
#程序输出[expr $a + $b],{}阻止了计算 是引用特殊字符、续行的命令。
Ps: puts “我是”中国”人”
#程序输出:我是“中国”人
Ps: set a 343
Set b 433 set c [expr
$a + $b] #用作代码换行,注意后不能有任何字符包括空格 计算字符串有几个字符组成的函数string length Ps: puts “[string length “a a”]” #程序输出3 Ps: set a 5454a
#程序输出5 puts “[string length $5]”
TCL的运算符
TCL的数学函数
Expr是计算结果的命令,类似于等号,可以运用到各种数学函数中。
Ps: set a 465
Set b 4545
Set c [expr $a + $b] Ps: set a 5 Set b 3 Set c [expr $a / $b]
#把变量a和变量b的值相加后付给c
#系统给C赋值为1,因为a和b都是整形算出的结果也是整形
Ps: set a 5.0
Set b 3
Set c [expr $a / $b] #系统给c赋值为1.66666666667 Incr命令可以令根据指定的步长来增加或减少参数的值。当步长为负时,减少参数值;当步长为正时,增加参数值。默认步长为+1。
Ps: set a 5
Incr a
#系统给a的值+1,改变a的值为6 Ps: set a 5
Incr a-5 TCL的字符串命令 #系统给a的值-5,改变a的值为0
第四篇:雅思阅读和语法学习心得分享
牛学教育 雅思SAT 托福www.xiexiebang.com
雅思阅读和语法学习心得分享
大家好,我叫王奕丹,是师大附中高二的一名学生。我是5月份来到牛学教育的,我报的是精品班B+C阶段的课程。
出国学习是临时的决定,面对学习英语的未来,我一开始非常迷茫。通过朋友介绍来到了牛学教育,在牛学教育学习的第一天,我的课程顾问老师就为我的雅思学习制定了适合自己的完美方案,让我对雅思学习有了极其清楚的规划。阅读:Jason老师
早就听闻各位大神的名气,并且有幸成为了陈金辉Jason老师的学生,在没有上课之前,传言中的Jason老师很凶,不记单词会骂你,但是终归传言是传言,并不可信。Jason老师是一位超级负责任的老师,并且和蔼可亲。每堂课都干货满满,他会很认真的讲解每个类型题的解题步骤,方法,中间还贯穿着一些解题的技巧。纷繁的阅读题目通过他的分类和技巧就变成了一道道简单易懂的问题,在正确率提高的过程中,我对雅思阅读越来越自信,想要征服阅读的决心也越来越坚定。在课后,他会要求学生将错题进行分析,制成错题集反馈给他,等到第二次上课的时候,他会帮助你解决问题,每次上完课之后,都感觉自己收获多多,并且每次都在进步,并且他告诉我不管怎么样,每天都必须坚持记单词背同义替换,这不仅仅可以提高阅读成绩,而且有利于出国后的学习,So,我给我们的Jason老师打个满分吧!Jason老师在课后变身为我们的好朋友,平时学习雅思的压力在一次次的交流中逐渐缓解,时而鼓励的话语更是让我们对自己的未来充满自信,愿意跟随他的步伐一起走下去。感谢陈金辉Jason老师对我的悉心教导,也感谢牛学教育其他老师及工作人员为我们所提供的学习服务,希望牛学教育越办越好,让更多的烤鸭完成出国梦想。
语法:Vin老师
作为一位刚刚踏入出国圈的学生,对于雅思的学习我感到十分迷茫。通过朋友的介绍我接触到牛学教育,Vin是我在牛学的第一位老师,起初我很怀疑年纪轻轻的他能否为我引导一个正确的雅思学习方向,而且对于零认知的我来说,能否打下一个坚实的学习基础更是至关
地址:陕西西安小寨领秀城12层 牛学教育 雅思SAT 托福www.xiexiebang.com
重要的。第一节课后,我就被Vin的教学风格征服了,因为他极其注重对学生思维的培养,在Vin的课堂上,书本上的知识似乎并不是我们之间沟通的唯一要素,他鼓励我多去阐述自己的想法,并且通过自己在英国留学的亲身体验为我拓宽思路,这让原本枯燥乏味的英语课变得生动许多。
课下,Vin是牛学公认的颜值担当,不论是身材还是性格,他都以自己独特的人格魅力感染着每一个人。我们的相处,更多的是一种幽默的聊天方式,他很爱笑(而且特别大声!),总是和学生打成一片,并且在许多问题的处理上,他都以极其乐观的态度面对。Vin还很喜欢跟我们聊他经历的趣事,尤其是各个国家的风景和人情,他真的是全能男神!对于我而言,Vin不再仅仅是英语的授课老师,更是成长中的人生导师。我给Vin打一百零一分,剩下一分让他骄傲。
地址:陕西西安小寨领秀城12层
第五篇:verilog语法学习心得(写写帮推荐)
这是我在查verilog的有符号数和无符号数时看到的,觉得很好,转载于此,共同学习
-----------------------------verilog语法学习心得
1.数字电路基础知识: 布尔代数、门级电路的内部晶体管结构、组合逻辑电路分析与设计、触发器、时序逻辑电路分析与设计
2.数字系统的构成: 传感器
AD 数字处理器
DA 执行部件
3.程序通在硬件上的执行过程:
C语言(经过编译)-->该处理器的机器语言(放入存储器)-->按时钟的节拍,逐条取出指令、分析指令、执行指令
4.DSP处理是个广泛概念,统指在数字系统中做的变换(DFT)、滤波、编码解码、加密解密、压缩解压等处理
5.数字处理器包括两部分:高速数据通道接口逻辑、高速算法电路逻辑
6.当前,IC产业包括IC制造和IC设计两部分,IC设计技术发展速度高于IC设计
7.FPGA设计的前续课程:数值分析、DSP、C语言、算法与数据结构、数字电路、HDL语言 计算机微体系结构
8.数字处理器处理性能的提高:软件算法的优化、微体系结构的优化
9.数字系统的实现方式:
编写C程序,然后用编译工具得到通用微处理器的机器指令代码,在通用微处理器上运行(如8051/ARM/PENTUIM)
专用DSP硬件处理器
用FPGA硬件逻辑实现算法,但性能不如ASIC
用ASIC实现,经费充足、大批量的情况下使用,因为投片成本高、周期长
10.FPGA设计方法: IP核重用、并行设计、层次化模块化设计、top-down思想
FPGA设计分工:前端逻辑设计、后端电路实现、仿真验证
11.matlab的应用:
matlab中有许多现成的数学函数可以利用,节省了复杂函数的编写时间
matlab可以与C程序接口
做算法仿真和验证时能很快生成有用的数据文件和表格
DSP builder可以直接将simulink模型转换成HDL代码,跳过了中间的C语言改写步骤 12.常规从算法到硬件电路的开发过程:
算法的开发
C语言的功能描述
并行结构的C语言改写
verilog的改写
仿真、验证、修正
综合、布局布线、投入实用
13.C语言改写成verilog代码的困难点:
并行C语言的改写,因为C本身是顺序执行,而不是并行执行
不使用C语言中的复杂数据结构,如指针
目前有将C语言转换成verilog的工具?
14.HDL
HDL描述方法是从电路图描述方法演化来的,相比来说更容易修改
符合IEEE标准的有verilog HDL和VHDL
VHDL由美国国防部开发,有1987和1993两个版本
verilog由cadence持有,有1995、2001、2005三个版本
verilog较VHDL更有前景:具有模拟电路描述能力、不仅可以开发电路还可以验证电路、门级以下描述比VHDL强
RTL级和门级的综合已经成熟,主要是注意行为级的综合结果,使用可综合的编程风格
SYSTEM VERILOG是VERILOG的一种延伸
15.IP核的应用:
软核soft core: 功能经过验证的、可综合的、实现后门数在5K以上的HDL代码
固核firm core: 功能经过验证的、可综合的、实现后门数在5K以上的电路结构编码文件,如edif,不可更改
硬核hard core: 功能经过验证的、可综合的、实现后门数在5K以上的电路结构版图,已带工艺参数,不可更改
16.HDL语言综合后得到EDIF,这是一种标准电路网表
EDIF经过具体工艺库匹配、布局布线、延时计算后得到网表
EDIF不可更改,作为固核存在
17.verilog特点:
区分大小写,所有关键字都要求小写
不是强类型语言,不同类型数据之间可以赋值和运算
//是单行注释
可以跨行注释
描述风格有系统级描述、行为级描述、RTL级描述、门级描述,其中RTL级和门级别与具体电路结构有关,行为级描述要遵守可综合原则
门级描述使用门级模型或者用户自定义模型UDP来代替具体基本元件,在IDE中针对不同FPGA器件已经有对应的基本元件原语
18.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语句不能同时使用;