第一篇:語法學習心得
語法學習心得
語法,是語言中的詞、短語、句子的構造規律。西方傳統語言學認為,語法包括兩個大的方面:詞法和句法。也正由于漢語的詞的分類定性
都必須依靠特定的句法環境來實現,所以,漢語語法有關詞類問題的討論總是要放到句法當中去進行。
研究語法的學科叫做語法學,語法學分很多類,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.tmdps.cn
雅思閱讀和語法學習心得分享
大家好,我叫王奕丹,是師大附中高二的一名學生。我是5月份來到牛學教育的,我報的是精品班B+C階段的課程。
出國學習是臨時的決定,面對學習英語的未來,我一開始非常迷茫。通過朋友介紹來到了牛學教育,在牛學教育學習的第一天,我的課程顧問老師就為我的雅思學習制定了適合自己的完美方案,讓我對雅思學習有了極其清楚的規劃。閱讀:Jason老師
早就聽聞各位大神的名氣,并且有幸成為了陳金輝Jason老師的學生,在沒有上課之前,傳言中的Jason老師很兇,不記單詞會罵你,但是終歸傳言是傳言,并不可信。Jason老師是一位超級負責任的老師,并且和藹可親。每堂課都干貨滿滿,他會很認真的講解每個類型題的解題步驟,方法,中間還貫穿著一些解題的技巧。紛繁的閱讀題目通過他的分類和技巧就變成了一道道簡單易懂的問題,在正確率提高的過程中,我對雅思閱讀越來越自信,想要征服閱讀的決心也越來越堅定。在課后,他會要求學生將錯題進行分析,制成錯題集反饋給他,等到第二次上課的時候,他會幫助你解決問題,每次上完課之后,都感覺自己收獲多多,并且每次都在進步,并且他告訴我不管怎么樣,每天都必須堅持記單詞背同義替換,這不僅僅可以提高閱讀成績,而且有利于出國后的學習,So,我給我們的Jason老師打個滿分吧!Jason老師在課后變身為我們的好朋友,平時學習雅思的壓力在一次次的交流中逐漸緩解,時而鼓勵的話語更是讓我們對自己的未來充滿自信,愿意跟隨他的步伐一起走下去。感謝陳金輝Jason老師對我的悉心教導,也感謝牛學教育其他老師及工作人員為我們所提供的學習服務,希望牛學教育越辦越好,讓更多的烤鴨完成出國夢想。
語法:Vin老師
作為一位剛剛踏入出國圈的學生,對于雅思的學習我感到十分迷茫。通過朋友的介紹我接觸到牛學教育,Vin是我在牛學的第一位老師,起初我很懷疑年紀輕輕的他能否為我引導一個正確的雅思學習方向,而且對于零認知的我來說,能否打下一個堅實的學習基礎更是至關
地址:陜西西安小寨領秀城12層 牛學教育 雅思SAT 托福www.tmdps.cn
重要的。第一節課后,我就被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語句不能同時使用;