第一篇:教學大綱-FPGA及硬件描述語言
《FPGA與硬件描述語言》教學大綱
課程名稱:FPGA與硬件描述語言
英文名稱: FPGA and hardware description language 課程類別:實踐教學課 課程編號: 學
分: 4
學
時:68 課程簡介:
FPGA與硬件描述語言該課程主要講授數字邏輯電路的基本知識、基本理論和基本分析、設計方法,并利用現代EDA技術的verilog和Multisim進行數字邏輯電路分析與設計,它起到由專業基礎課向專業課過渡的承上啟下的作用。本課程的教學任務是通過本課程的理論學習,使學生掌握有關數字邏輯的基本理論,熟悉數字邏輯電路基本器件的電路結構、功能和使用方法,掌握數字邏輯電路的分析方法和設計方法。通過課堂教學演示環節及課程設計,使學生掌握利用Verilog和EDA工具進行數字邏輯電路設計的方法.課程內容:
1.概論:EDA設計方法以及FPGA/CPLD特點 2.層次建模的概念 3.基本概念 4.模塊和端口 5.門級建模 6.數據流建模 7.行為級建模 8.任務與函數 9.實用建模技術 10.時序和延遲 11.開關級建模 12.用戶自定義原語 先修課程:《C語言程序設計》、《數字邏輯電路》 適用專業:電子信息技術
教材(暫定):《Verilog HDL 數字設計與綜合》 作者:(美)Sanir Palnitkar,譯者: 夏宇聞 胡燕祥 刁嵐松
電子工業出版社
參考教材:
1、《Verilog HDL數字設計與綜合(第二版)》,電子工業出版社
夏宇聞
2、《電子工程師創新設計必備寶典系列之FPGA開發全攻略》,張國斌
3、《Verilong數字系統設計教程 》,北航出版社
夏宇聞
開課學院:信息技術學院
具體課程內容與安排
第一章 概述
第一節 課程介紹
第二節 學習重點及學習方法
第三節 EDA技術及發展與實現目標 第四節 硬件描述語言及IEEE標準 第五節 EDA設計流程及優點 第六節 常用EDA工具
第七節 電子設計自動化系統軟件與器件
第八節 數字系統設計方法
第九節 九節 FPGA/CPLD的特點及發展
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求 主要內容: 【重點掌握】:FPGA/CPLD的優缺點,采用硬件描述語言(Verilog HDL)的設計流程。【掌握】:EDA設計流程方法及數字系統設計方法的比較和優點,自頂向下的設計方法; 【了解】:EDA工具的發展以及特點,【一般了解】:EDA技術及發展
第二章 層次建模的概念
第一節 自底向上和自頂向下設計方法 第二節 模塊的基本概念 第三節 四種不同的描述方式 第四節 邏輯仿真的構成
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求 主要內容: 【重點掌握】:數字電路自頂向下設計方法以及模塊相關內容的學習; 【難點】:自頂向下以及自底向上的設計思路;
第三章 verilog基本概念
第一節 模塊的結構 第二節 數據類型及其常量和變量 第三節 運算符及表達式
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求
主要內容:verilog基本語法和結構 【重點掌握】:基本語法和概念以及詞法約定 【掌握】:各種數據類型 【了解】:系統任務和編譯指令 【一般了解】: 【難點】:各類寄存器數據類型
第四章 模塊和端口
第四節
模塊 第五節
端口列表 第六節
端口聲明
第四節 端口連接規則 第七節
端口與外部信號的連接 第八節
層次命名
(一)采用多媒體,講解與實驗相結合
(二)內容及基本要求
主要內容:verilog的模塊定義、組成部分以及端口列表以及聲明和端口連接。
【了解】:verilog標示符的層次引用 【重點掌握】:模塊各部分的定義和應用 【難點】:端口連接的命名規則
第五章 門級建模
第一節
門的類型 第二節 門延遲
(一)采用多媒體,講解與實驗相結合
(二)內容及基本要求
主要內容:verilog如何用門級對實際電路做硬件電路建模 【重點掌握】:門的類型與延遲,門級建模的具體設計電路 【掌握】: 上升、下降和關斷延遲 以及最小/典型/最大延遲 【難點】:門級建模的具體電路實現
第六章 數據流建模
第一節 連續賦值語句assign 第二節 延遲
第三節 表達式、操作符和操作數 第四節 操作符類型
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求
主要內容:連續賦值語句以及使用數據流結構對實際電路的數字電路建模。【重點掌握】:連續賦值的定義及應用;操作符的類型 【掌握】: 延遲的概念和應用 【難點】:用數據流語句設計電路,掌握門級建模與數據流建模的區別
第七章 行為級建模
第一節 結構化過程語句 第二節 過程賦值語句 第三節 條件語句 第四節 多路分支語句
第五節 循環語句
第六節 順序塊和并行塊 第七節 生成塊
(一)采用多媒體,講解與實驗相結合
(二)內容及基本要求
主要內容:行為級建模的語法以及結構 【重點掌握】: 在實際電路中進行行為級建模以及時序控制機制 【掌握】:行為級建模的語法和語句,always、initial,阻塞和非阻塞以及 4 過程性賦值語句。
【難點】:行為級建模的具體實現
第八章 結構語句、系統任務、函數語句和顯示系統任務
第一節 結構說明語句 第二節 任務和函數語句 第三節 其他任務和函數語句
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求
主要內容:任務與函數的定義 區別以及應用 【重點掌握】:任務和函數語句的使用 【掌握】: 模塊、任務、函數和命名塊定義和聯系,任務與函數所需要的條件。
【難點】:任務和函數語句的使用
第九章 實用建模技術
第一節 過程連續賦值 第二節 改寫(覆蓋)參數
第三節 條件編譯和執行 第四節 時間尺度
第五節 常用的系統任務
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求 主要內容: 【重點掌握】:assign deassign force 和release的定義和使用 【掌握】:在模塊調用時用defparam語句重新定義參數值 【了解】:認識和理解系統任務,如文件輸出、顯示層次、選通顯示、隨機數生成、存儲器初始化和值變轉儲等系統任務 【一般了解】: 【難點】: 條件編譯和verilog描述部件的執行。
第十章 時序和延遲
第一節 延遲模型 第二節 路徑延遲建模 第三節 時序檢查
第四節 延遲反標注
(一)采用多媒體,講解與演示相結合
(二)內容及基本要求 主要內容: 【重點掌握】:如何在仿真過程中用specify塊設置路徑延遲 【掌握】:延遲模型的類型和定義 【了解】:時序檢查定義系統任務 【一般了解】: 延遲反標注 【難點】: 路徑延遲建模的連接
第十一章 開關級建模
第一節:開關級建模元件
主要內容:開關級建模的基本知識 【一般了解】:僅作大概了解 【難點】:
第十二章 用戶自定義原語
第一節:UDP的基本知識 第二節:表示組合邏輯的UDP 第三節:表示時序邏輯的UDP 第四節:UDP表中的縮寫符號 第五節:UDP設計指南 主要內容:
【重點掌握】編寫時序和組合邏輯UDP: 【難點】:UDP設計的原則以及與門級建模的區別
第十三章 編程語言接口 第一節:PLI的使用
第二節:PLI任務的連接和調用 第三節:內部數據表示 第四節:PLI庫子程序 主要內容: 【重點掌握】:如何在仿真中使用任務和函數 【難點】:用戶如何創建自定義系統任務和函數,6 第十四章 使用vrilog進行邏輯綜合
第一節:什么是邏輯綜合
第二節:邏輯綜合對數字設計行業的影響 第三節:verilogHDL綜合 第四節:邏輯綜合流程 第五節:門級網表的驗證 第六節:邏輯綜合建模技巧 第七節:時序電路綜合舉例
主要內容:了解邏輯綜合的方法和問題。【了解】:邏輯綜合編寫RTL的技巧 【一般了解】: 邏輯綜合的概念和優點 【重點掌握】:可綜合的結構和操作符以及邏輯綜合的最佳門級網表分隔技術 【難點】:使用邏輯綜合進行組合電路和時序電路的設計
三、課程考核
(一)基本要求及比例:考試是對學生掌握知識水平的檢驗,重點掌握內容占考試內容的70%、掌握內容占20%、了解及一般了解內容占10%。
(二)成績構成與說明: 總評成績 =平時學習表現(10%)+上機實驗(20%)+實訓項目(20%)+期末考試成績(50%)
期末考試:
考試形式:上機閉卷考試 時間長度(120分鐘)
制定人:賈政亞
審定人:
批準人:
日
期: 2014年10月1日
第二篇:FPGA教學大綱
四 川 大 學 錦 城 學 院
本科課程《現場可編程邏輯門陣列FPGA》
電子類專業教學大綱
一、課程基本信息
課程名稱(中、英文):《現場可編程邏輯門陣列FPGA》, Field Programmable Gate Array 課程類別:必修專業課
學時:
學分:2
二、預前知識
數字電子技術基礎
三、課程目的及要求
1.了解FPGA的應用場合、發展歷程、主要廠家。2.熟悉典型FPGA的基本結構。
3.掌握FPGA設計流程及其中涉及到的重要概念與工具軟件。4.熟練掌握可綜合的Verilog語法語句。
5.掌握常用的基本電路結構,并能用Verilog語言進行描述。
四、教學內容及進度
第1章 課程簡介(本章2課時)
掌握FPGA的概念、用途及生產廠家,掌握FPGA的學習方法。重點:FPGA的學習方法 難點:芯片可編程的理解 1.什么是FPGA 2.FPGA有何用途 3.為什么要學習FPGA 4.如何學習FPGA 第二章 可編程邏輯器件基礎(本章2課時)
掌握與或陣列及查找表用于實現邏輯函數的方法,了解基于與或陣列結構可編程邏輯器件的發展歷程,掌握典型FPGA的基本結構及使用上的特點,了解FPGA的發展趨勢。
重點:與或陣列及查找表用于實現邏輯函數 難點:典型FPGA的基本結構 1.知識準備:與或陣列、查找表 2.可編程邏輯器件結構發展歷程 3.FPGA結構介紹
第3章 硬件描述語言基礎(本章2課時)
掌握硬件描述的思想,了解常用的硬件描述語言及Verilog的歷史,掌握可綜合的概念及對應的設計思路,掌握數字芯片系統結構及自頂向下分層設計的方法,掌握Verilog描述程序的基本結構及Verilog基本語法。
重點:數字芯片系統結構及Verilog基本語法 難點:可綜合的理解
1.硬件描述語言及Verilog簡介 2.可綜合簡介
3.自頂向下分層設計的思路 4.Verilog基本語法
第4章 Verilog基本描述語句(本章4課時)
掌握常用的可綜合Verilog描述語句:always過程語句;串行塊begin-end;連續賦值 assign;過程賦值 =、<=;條件語句if-else、case;循環語句for 重點:常用的可綜合Verilog描述語句
難點:阻塞賦值與非阻塞賦值的區別,順序執行與并發執行的區分 1.always過程語句 2.串行塊begin-end 3.連續賦值 assign 4.過程賦值 =、<= 5.條件語句if-else、case 6.循環語句for 第5章 運算符及表達式(本章4課時)
掌握Verilog中注釋的格式;掌握Verilog中整數常量的表示法;掌握Verilog中常用的可綜合運算符的使用:邏輯運算符、關系運算符、相等與全等運算符、位運算符、歸約(縮減)運算符、移位運算符、條件運算符、連接(位拼接)運算符、算術運算符 重點:常用的可綜合運算符的使用
難點:各運算符的優先級別及對有符號數和無符號數處理的差別 1.注釋的格式 2.整數常量表示法 3.邏輯運算符 4.關系運算符 5.相等與全等運算符 6.位運算符
7.歸約(縮減)運算符 8.移位運算符 9.條件運算符
10.連接(位拼接)運算符 11.算術運算符
第6章 基本電路設計(本章2課時)
掌握電路描述方法,掌握按端口位置對應及按端口名稱對應的模塊例 化方式,掌握常用基本電路的結構及描述方法 重點:常用基本電路的結構及描述方法
難點:按端口位置對應及按端口名稱對應的模塊例化方式
1.電路描述方法,按端口位置對應及按端口名稱對應的模塊例化方式 2.2選1多路選擇器 3.優先編碼器 4.多路選擇器 5.譯碼器 6.D觸發器 7.移位寄存器 8.上升沿檢測 9.下降沿檢測 10.計數器
11.兩級單時鐘使能計數器結構
第7章 有限狀態機設計(本章2課時)
掌握狀態機設計及描述方法,掌握起始狀態、剩余狀態的處理,掌握各狀態編碼方式之間的差別及各自的優缺點。重點:狀態機設計及描述方法
難點:格雷碼及“one-hot”狀態值編碼 1.有限狀態機介紹及其優點 2.狀態機設計思路 3.起始狀態處理 4.狀態編碼方式 5.剩余狀態與容錯技術
第8章 雙向端口及存儲器(本章2課時)
掌握雙向端口的定義及使用,掌握使用D觸發器組及調用庫單元實現 存儲器的描述方式。重點:存儲器的描述 難點:雙向端口的使用 1.雙向端口的定義及使用 2.存儲器描述方式
第9章 設計方法與技巧(本章4課時)
掌握可編程邏輯設計的基本原則,掌握可編程邏輯設計常用設計思想和技巧,掌握良好的編碼風格。重點:時鐘的最小周期定義 難點:流水線、寄存器配平1.可編程邏輯設計的基本原則 2.可編程邏輯設計常用設計思想和技巧 3.Altera公司推薦的編碼風格 4.面積優化 5.速度優化
五、教材
《CPLD/FPGA與ASIC設計實踐教程》 主編:陳 賾
編著:朱如琪、羅 杰、王建明、魯 放 出版社:科學出版社 出版日期:2005-8 書號:ISBN-978-7-03-016036-2/TP.332.1
六、主要參考資料
[1] 陳云洽,CPLD應用技術與數字系統設計,北京:電子工業出版社,2003 [2] 黃智偉,FPGA系統設計與實踐,北京:電子工業出版社,2005 [3] 李國麗,EDA與數字系統設計,北京:機械工業出版社,2004 [4] 王金明,數字系統設計與Verilog HDL,北京:電子工業出版社,2002
七、成績評定
學科成績總分100分:
期末閉卷考試,考查學生對基本理論、能力的掌握程度,100分,占70%
平時成績100分(包括考勤,課堂提問,作業)占
30%
第三篇:《硬件課程設計》教學大綱(范文)
《硬件課程設計》教學大綱
一、課程名稱(中、英文):
中文名稱:硬件課程設計
英文名稱:Course Exercise of Hardware Design
二、課程編碼:
三、課程性質:
必修
四、學時學分
培養計劃學時:2W 總學分:2 開課學期:本科第六學期
五、適用專業
電子信息工程、通信工程專業。
六、本實驗課的配套教材、講義與指導書
七、課程任務與目的
硬件課程設計是學生必修的實踐性教學環節。硬件課程設計應使學生較系統地完成電子系統設計從選題、方案論證、電路設計、電路實現、裝配調試、系統測試、總結報告等基本過程,加深對模擬電路、數字邏輯電路、通信電子電路、微機原理等相關課程理論知識的分析理解。通過實踐引導學生由原理分析向工程設計過渡,掌握硬件系統設計的基本方法和一般規則,提高綜合應用能力。同時培養學生的創新思維和實踐能力,發揮自我能動性和創造力,為后續專業課程的學習打下堅固的基礎。
八、先修課程
《模擬電路》、《數字電路與邏輯設計》、《通信電子電路》、《微機原理》、《微機原理實驗》、、《電子線路設計?測試?實驗》。
九、開課方式與基本要求
1.開課單位:全系各研究中心及實驗室,實驗中心。
2.課程實施形式:集中講座與開放實驗相結合。集中講座4~8學時,內容包括硬件設計方法、規范、工具、報告文檔整理等。開放實驗時間段為一學期,學生自由安排時間,完成自已選定的硬件課程設計題目。開放實驗可在各中心科研實驗室進行,也可在實驗中心預約時間。
3.選題原則:面向全系教師征集選題。選題應達到本課程的教學基本要求,與科研、教學、實驗室建設等實際任務相結合,特別注意培養學生綜合應用所學硬件方面知識。課題難度和份量要適當,使學生在規定的時間內工作量飽滿,經努力能完成任務。
4.該課程在實施中可配合校內外各類設計競賽:如全國大學生電子設計競賽、嵌入式系統競賽和挑戰杯等一并進行。
十、考核方式與評分方式
學生必須在規定的時間內完成其設計內容,并以報告和實物運行參加課程考核,考核按完成質量以及創新性表現綜合給分。評分為優、良、中、通過、不通過五個等級。
第四篇:硬件描述語言范例
硬件描述語言語言設計實例 1、8-3編碼器
module encode_verilog(a ,b);input [7:0] a;//編碼器輸入 wire [7:0] a;output [2:0] b;//編碼器輸出 reg [2:0] b;always @(a)
begin
case(a)//編碼器某一輸入端口為高電平輸出相應的3位二進制數
8'b0000_0001 : b<=3'b000;//0
8'b0000_0010 : b<=3'b001;//1
8'b0000_0100 : b<=3'b010;//2
8'b0000_1000 : b<=3'b011;//3
8'b0001_0000 : b<=3'b100;//4
8'b0010_0000 : b<=3'b101;//5
8'b0100_0000 : b<=3'b110;//6
8'b1000_0000 : b<=3'b111;//7
default : b<= 3'b000;//其他情況編碼器輸出3’b000
endcase
end endmodule 2、8-3優先編碼器
module p_encode_verilog(A ,I ,GS ,EO ,EI);//編碼器以低為有效 input [7:0] I;//編碼器輸入 wire [7:0] I;input EI;//輸入使能,EI=0時,編碼器正常工作 wire EI;
output [2:0] A;//編碼器輸出 reg [2:0] A;
output GS;//優先編碼器工作狀態標志,編碼器的八個輸入端有信號輸入時,GS=0 reg GS;
output EO;//輸出使能,reg EO;
always @(I or EI)if(EI)//使用if、else if表明條件的優先級順序
begin
A <= 3'b111;
GS <= 1;
EO <= 1;
end else if(I[7] == 0)
begin
A <= 3'b000;
GS <= 0;
EO <= 1;
end else if(I[6] == 0)
begin
A <= 3'b001;
GS <= 0;
EO <= 1;
end
else if(I[5] == 0)
begin
A <= 3'b010;
GS <= 0;
EO <= 1;
end
else if(I[4] == 0)
begin
A <= 3'b011;
GS <= 0;
EO <= 1;
end
else if(I[3] == 0)
begin
A <= 3'b100;
GS <= 0;
EO <= 1;
end
else if(I[2] == 0)
begin
A <= 3'b101;
GS <= 0;
EO <= 1;
end
else if(I[1] == 0)
begin
A <= 3'b110;
GS <= 0;
EO <= 1;
end
else if(I[0] == 0)
begin
A <= 3'b111;
GS <= 0;
EO <= 1;
end
else if(I == 8'b11111111)
begin
A <= 3'b111;
GS <= 1;
EO <= 0;
end endmodule 3、3-8譯碼器
module decoder_verilog(G1 ,Y ,G2 ,A ,G3);input G1;//使能輸入,高有效 wire G1;input G2;//使能輸入,低有效 wire G2;input [2:0] A;//3位譯碼器輸入,為高有效 wire [2:0] A;
input G3;//使能輸入
wire G3;//使能輸入,低有效
output [7:0] Y;//8位譯碼器輸出,為低有效 reg [7:0] Y;reg s;always @(A ,G1, G2, G3)
begin
s <= G2 | G3;if(G1 == 0)//G1為低有效
Y <= 8'b1111_1111;else if(s)
Y <= 8'b1111_1111;
else
case(A)3'b000 : Y<= 8'b1111_1110;
3'b001 : Y<= 8'b1111_1101;
3'b010 : Y<= 8'b1111_1011;
3'b011 : Y<= 8'b1111_0111;
3'b100 : Y<= 8'b1110_1111;
3'b101 : Y<= 8'b1101_1111;
3'b110 : Y<= 8'b1011_1111;
3'b111 : Y<= 8'b0111_1111;
endcase end endmodule
4、數據選擇器
module mux8_1_verilog(Y ,A ,D0, D1,D2, D3, D4, D5, D6, D7 ,G);input [2:0] A;//地址輸入端 wire [2:0] A;input D0;//數據輸入端 input D1;//數據輸入端 input D2;//數據輸入端 input D3;//數據輸入端 input D4;//數據輸入端 input D5;//數據輸入端 input D6;//數據輸入端 input D7;//數據輸入端
input G;//使能端,當G=1時Y=0,當G=0時數據選擇器正常工作 wire G;output Y;//數據輸出端 reg Y;always @(G or A or D0 or D1 or D2 or D3 or D4 or D5 or D6 or D7)begin
if(G == 1)//使能端的優先級高
Y <= 0;
else
case(A)//根據輸入的地址A確定數據選擇器輸出哪路輸入數據
3'b000 : Y = D0;
3'b001 : Y = D1;
3'b010 : Y = D2;
3'b011 : Y = D3;
3'b100 : Y = D4;
3'b101 : Y = D5;
3'b110 : Y = D6;
3'b111 : Y = D7;
default : Y = 0;
endcase end endmodule
5、多位數值比較器
module compare_verilog(Y ,A ,B);input [3:0] A;//4位二進制數A wire [3:0] A;input [3:0] B;//4位二進制數B wire [3:0] B;output [2:0] Y;//A與B大小的比較結果 reg [2:0] Y;always @(A or B)begin
if(A > B)
Y <= 3'b001;//A > B時Y輸出3'b001
else if(A == B)
Y <= 3'b010;//A = B時Y輸出3'b010
else
Y <= 3'b100;//A < B時Y輸出3'b100
end endmodule
6、全加器
module sum_verilog(A ,Co ,B ,S ,Ci);input A;//輸入加數A wire A;input B;//輸入加數B wire B;input Ci;//相鄰低位的進位輸入信號 wire Ci;output Co;//向相鄰高位的進位輸出信號 reg Co;output S;//相加和數輸出 reg S;always @(A or B or Ci)begin
if(A== 0 && B == 0 && Ci == 0)
begin
S <= 0;
Co <= 0;
end else if(A== 1 && B == 0 && Ci == 0)
begin
S <= 1;
Co <= 0;
end else if(A== 0 && B == 1 && Ci == 0)
begin
S <= 1;
Co <= 0;
end else if(A==1 && B == 1 && Ci == 0)
begin
S <= 0;
Co <= 1;
end else if(A== 0 && B == 0 && Ci == 1)
begin
S <= 1;
Co <= 0;
end else if(A== 1 && B == 0 && Ci == 1)
begin
S <= 0;
Co <= 1;
end else if(A== 0 && B == 1 && Ci == 1)
begin
S <= 0;
Co <= 1;
end
else
begin
S <= 1;
Co <= 1;
end end endmodule
7、D觸發器
module Dflipflop(Q ,CLK , RESET ,SET ,D ,Qn);input CLK;//D觸發器輸入時鐘 wire CLK;input RESET;//D觸發器清零輸入 wire RESET;input SET;//D觸發器預置數輸入 wire SET;input D;//D觸發器輸入 wire D;output Q;//D觸發器輸出 reg Q;output Qn;wire Qn;assign Qn = ~Q;//將D觸發器輸出取反
always @(posedge CLK or negedge SET or negedge RESET)begin
if(!RESET)//RESET下降沿將D觸發器輸出清零
Q <= 0;
else if(!SET)//SER下降沿將D觸發器輸出置1
Q <= 1;
else Q <= D;//CLK上升沿D觸發器輸出等于輸入 end endmodule
8、寄存器
module reg8(clr ,clk ,DOUT ,D);input clr;//異步清零信號,高有效 wire clr;input clk;//時鐘輸入 wire clk;input [7:0] D;//寄存器數據輸入 wire [7:0] D;output [7:0] DOUT;//寄存器數據輸出 reg [7:0] DOUT;always @(posedge clk or posedge clr)begin
if(clr == 1'b1)
DOUT <= 0;
else DOUT <= D;
end endmodule
9、雙向移位寄存器
module shiftdata(left_right ,load ,clr ,clk ,DIN ,DOUT);input left_right;// 左移右移控制信號 wire left_right;input load;//異步置數信號,有效時將DIN輸入 wire load;input clr;//異步清零信號,高有效 wire clr;input clk;//時鐘輸入 wire clk;input [3:0] DIN;//并行輸入 wire [3:0] DIN;output [3:0] DOUT;//并行輸出
wire [3:0] DOUT;// DOUT是一個wire型變量,不能在always塊中被賦值
reg [3:0] data_r;//所以定義一個寄存器型變量data_r作為中間變量 assign
DOUT = data_r;always @(posedge clk or posedge clr
or posedge load)begin
if(clr == 1)//異步清零
data_r <= 0;else if(load)//異步置數
data_r <= DIN;else begin
if(left_right)//left_right=1,信號左移
begin
data_r <=(data_r<<1);
data_r[0] <= 0;//移出位補0
end
else begin //left_right=0,信號右移
data_r <=(data_r>>1);
data_r[3] <= 0;//移出位補0
end
end
end endmodule 10、4位二進制加減法計數器
module counter4(load ,clr ,c ,DOUT , clk, up_down ,DIN);input load;//異步預置數 input clk;//輸入時鐘 wire load;input clr;//異步清零 wire clr;input up_down;//加減計數,up_dpwn=1加計數,up_down=0減計數 wire up_down;input [3:0] DIN;//預置數輸入 wire [3:0] DIN;output c;//進位/借位輸出,可以用于計數器的級聯 reg c;output [3:0] DOUT;//計數輸出 wire [3:0] DOUT;reg
[3:0] data_r;assign DOUT = data_r;always @(posedge clk or posedge clr
or posedge load)begin
if(clr == 1)
//異步清零
data_r <= 0;else if(load == 1)
//異步預置
data_r <= DIN;
else begin if(up_down ==1)//加計數
begin
if(data_r == 4'b1111)begin
data_r <= 4'b0000;
c = 1;
end
else begin
data_r <= data_r +1;
c = 0;
end
end
else //減計數
begin
if(data_r == 4'b0000)begin
data_r <= 4'b1111;
c = 1;
end else begin
data_r <= data_r-1;
c = 0;
end
end
end end
endmodule
11、十進制加減法計數器
module counter10(load ,clr ,c ,DOUT ,clk,up_down ,DIN ,seven_seg);input load;//異步預置數 input clk;//輸入時鐘 wire load;input clr;//異步清零 wire clr;input up_down;//加減計數,up_dpwn=1加計數,up_down=0減計數 wire up_down;input [3:0] DIN;//預置數輸入 wire [3:0] DIN;output c;//進位/借位輸出,可以用于計數器的級聯 reg c;output [3:0] DOUT;//計數輸出 output [7:0] seven_seg;//7段數碼管 wire [3:0] DOUT;reg
[3:0] data_r;assign DOUT = data_r;always @(posedge clk or posedge clr
or posedge load)begin
if(clr == 1)
//異步清零
data_r <= 0;else if(load == 1)//異步預置
data_r <= DIN;
else if(up_down ==1 & data_r == 9)//加進位
begin
c = 1;
data_r <= 4'b0000;
end else if(up_down ==0 & data_r == 0)//減借位
begin
c = 1;
data_r <= 9;
end else
begin
if(up_down ==1)begin //加計數
data_r <= data_r +1;
c = 0;
end
else begin
//減計數
data_r <= data_r-1;
c = 0;
end
end end
/************數碼管***************/ assign seven_seg =Y_r;reg [7:0] Y_r;always @(data_r)//用7段數碼管顯示計數輸出 begin Y_r =8'b11111111;case(data_r)
4'b0000: Y_r = 8'b00000011;//顯示0 4'b0001: Y_r = 8'b10011111;//顯示1 4'b0010: Y_r = 8'b00100101;//顯示2 4'b0011: Y_r = 8'b00001101;//顯示3 4'b0100: Y_r = 8'b10011001;//顯示4 4'b0101: Y_r = 8'b01001001;//顯示5 4'b0110: Y_r = 8'b01000001;//顯示6 4'b0111: Y_r = 8'b00011111;//顯示7 4'b1000: Y_r = 8'b00000001;//顯示8 4'b1001: Y_r = 8'b00001001;//顯示9 default: Y_r = 8'b11111111;//默認數碼管不發光
endcase end
endmodule
12、順序脈沖發生器
module pulsegen(Q ,clr ,clk);input clr;//異步預置數 wire clr;input clk;//時鐘輸入 wire clk;output [7:0] Q;//順序脈沖輸出 wire [7:0] Q;reg [7:0] temp;reg x;assign Q =temp;always @(posedge clk or posedge clr)begin
if(clr==1)
begin
temp <= 8'b00000001;//temp寄存預定的序列
x= 0;
end else
begin
x<= temp[7]
;//序列最高位輸出
temp <= temp<<1;//temp左移一位
temp[0] <=x;//將輸出的結果賦給序列最低位,實現序列的循環輸出
end
end endmodule
13、序列信號發生器
module xlgen(Q ,clk ,res);input clk;//時鐘輸入 wire clk;input res;//異步預置數 wire res;output Q;//序列信號輸出 reg Q;reg [7:0] Q_r;always @(posedge clk or posedge res)begin
if(res ==1)begin
Q <= 1'b0;
Q_r <= 8'b11100100;//Q_r寄存預定的序列
end
else
begin
Q <= Q_r[7];//序列最高位輸出
Q_r <= Q_r<<1;//Q_r左移一位
Q_r[0] <=Q;//將輸出的結果賦給序列最低位,實現序列的循環輸出
end
end endmodule
14、分頻器
module clockdiv(Q ,rst ,sysclk ,sel);input rst;//系統復位 wire rst;input sysclk;//系統時鐘輸入 wire sysclk;input [1:0] sel;//分頻倍數選擇 wire [1:0] sel;output Q;//分頻器輸出 wire Q;reg [2:0] q;reg [31:0] cnt;reg clk;
//時鐘分頻模塊
always @(posedge sysclk or negedge rst)begin if(!rst)begin
cnt <= 0;clk <= 1'b1;end else begin
cnt <= cnt + 1'b1;
if(cnt >= 32'd2500000)begin /clk時鐘周期是系統時鐘周期的5000000倍
clk <= ~clk;
cnt <= 0;
end end end
//分頻器模塊
always @(posedge clk or negedge rst)if(!rst)q[0] <= 0;else
q[0] <= ~q[0];// q[0]是clk的2分頻
always @(posedge q[0] or negedge rst)if(!rst)q[1] <= 0;else
q[1] <= ~q[1];// q[1]是clk的4分頻
always @(posedge q[1] or negedge rst)if(!rst)q[2] <= 0;else
q[2] <= ~q[2];// q[2]是clk的8分頻
assign Q =(sel== 2'd0)? clk : //分頻器輸出clk
(sel== 2'd1)? q[0] : //分頻器輸出clk的二分頻
(sel== 2'd2)? q[1] : //分頻器輸出clk的四分頻
(sel== 2'd3)? q[2] : 0;//分頻器輸出clk的八分頻 endmodule
第五篇:硬件技術教學大綱
硬件技術教學大綱
第一部分 綜述
?
培訓與教學目的
(1)熟悉PC機主機內部各種配件的常見類型、基本結構、工作原理、技術參數和產品介紹;
(2)了解PC機各種外設的常見類型、基本結構、工作原理、技術參數和產品介紹;
(3)了解便攜式計算機和數碼產品的常見類型、工作原理、技術參數和產品介紹;
(4)理解PC網絡的常見設備類型、拓撲結構、網絡協議、OSI參考模型、產品介紹及互聯網的接入技術;
(5)掌握PC機的配件選購、組裝、調試及系統安裝; ?
教學重點
(1)計算機各配件組成原理、工作原理、及主要技術參數指標(包括主板、中央處理器CPU、顯卡、內部存儲器、外部存儲器、電源系統)。
(2)常用輸入輸出設備
(3)數碼產品的組成、工作原理及技術參數指標(包括掌上電腦、數碼相機、攝像頭)
(4)PC機的組裝技巧。?
教學難點
各配件的工作原理 ?
建議學時數
~ 100學時
?
培養目標
各類職業教育在校生、高校的DIY愛好者、電腦“發燒”友、電腦廠商人員、電腦維修維護人員、電腦商場銷售人員。?
培訓對象
各類職業教育在校生、高校的DIY愛好者、電腦“發燒”友、電腦廠商人員、電腦維修維護人員、電腦商場銷售人員。? 實驗要求與技能
(1)熟悉主機板卡、存儲器、顯示器組成和安裝;(2)學會系統參數設置及操作系統的安裝;(3)熟悉計算機的外設和操作;(4)掌握計算機整機的拆裝與調試。
第二部分 課程內容及要求
第1章 計算機的組成
本章主要講述計算機的硬件系統的組成,介紹了各硬件設備的外形和功能。第2章 主板
本章主要講述了主板的結構、各種部件的技術規范以及新產品、新技術等實用內容,另外,我們還安排了PC機總線和接口的理論知識。
2.1主板的構成和結構類型 2.2微型計算機的體系結構 2.3主板上的常見部件 2.4主板芯片組 第3章 中央處理器CPU
本章主要介紹了市場上主流CPU的發展史和它們的技術參數,并且對各種CPU所采用的新技術進行了詳細講解。通過本章的學習,要求對目前常見的各種CPU的技術參數有一個全面的了解,并且知道如何辨別真偽CPU產品。3.1 CPU的工作原理 3.2 CPU的主要技術參數 3.3 CPU的生產 3.4 CPU的新技術 3.5 CPU的散熱系統 3.6 CPU的發展歷程 第4章 內部存儲器
本章主要介紹了RAM的各種主流技術和性能參數。通過對本章的學習,要求熟悉常見的內存條及其技術規范,并要求能夠熟練地辨認常見內存芯片。4.1 內部存儲器的作用及分類 4.2 內存的基本工作原理和主流技術 4.3 內存的主要技術指標 第5章 外部存儲器
本章主要介紹了PC機的外部存儲器的基本結構和工作原理,同時包括了主流產品的介紹內容。通過對本章的學習,我們要求學員對外部存儲器的工作原理有一個清晰的認識;此外,還要求學員能夠對市場上的主流產品有一個全面的認識,能夠根據客戶的需要選擇產品。5.1 硬盤系統 5.2 軟驅系統 5.3 光存儲系統 5.4 移動存儲系統 第6章 PC的顯示子系統
本章主要介紹了主流的顯示卡和顯示器的工作原理,基本結構和技術規范。學員在經過本章的學習后,應該能夠對顯示卡和顯示器的工作原理和技術規范有一個清晰的認識,并能夠根據需要選擇合適的產品。6.1 顯示卡 6.2 顯示器 第7章 PC的音頻子系統
本章介紹了PC機的聲卡和音箱這兩部分配件,內容主要有聲卡的工作原理、技術規范和音箱的工作原理,通過本章的學習,要求對聲卡和音箱的工作原理有較為深入的認識。7.1 聲卡 7.2 多媒體音箱 第8章 網絡設備
本章對網絡設備的介紹集中在硬件規范和工作原理方面。要求對各種廣域網和局域網設備的工作原理和技術規范都有一個清晰的認識。8.1 局域網絡硬件設備 8.2 廣域網Internet接入設備 第9章 電源系統
本章重點介紹了PC機主機電源的結構和工作原理,同時包含了不間斷電源系統的只是。通過本章的學習,要求熟悉PC機ATX電源的結構、工作原理和電氣規范,并能夠根據負載情況選擇合適的產品。9.1 主機箱 9.2 主機電源系統 第10章 常用輸入設備
本章介紹了常見的PC機輸入設備的結構和工作原理及掃描儀的主流成像技術。通過本章的學習,要求熟悉輸入設備的結構和工作原理,并且能夠根據需求選擇合適的掃描儀產品。10.1 鼠標和鍵盤 10.2 掃描儀 第11章 常用輸出設備
本章介紹常見的輸出設備。通過本章的學習,要求學員對各種類型打印機和投影儀的結構和工作原理都有一個清晰的認識。11.1 打印機 11.2 多功能一體機 第12章 常見的其它類型計算機
本章介紹的產品包括便攜式計算機和小型專用計算機。通過本章的學習,要求對便攜式計算機的結構和性能有較為深入的了解,能夠根據客戶的需求選擇合適的便攜機型。12.1 便攜式計算機 12.2 服務器和工作站 第13章 數碼產品
通過本章的學習,要求熟悉這些設備的基本結構和工作原理,并理解各種參數的意義。13.1掌上電腦 13.2數碼影像設備 13.3 其他數碼產品 第14章 PC機的組裝技巧
本章主要內容為PC的組裝技巧。另外還介紹了開機故障信號的季度和常用的系統軟件。通過本章的學習,要求掌握PC機組裝的操作規程和基本技巧,熟悉各種故障代碼,并能夠根據客戶工作內容為其選擇安裝正確的系統軟件。14.1 PC機的組裝 14.2 PC機的調試 14.3安裝系統軟件 實訓內容
1.主機中板卡的識別
(1)教學內容
· 各種架構主板的認識
· 真假CPU、內存條的的認識
· 顯示卡、聲卡、MODEM卡的認識
· 主板、CPU、內存的匹配方案
· 主機部分的組裝
(2)教學目的
· 認識各種板卡以及質量要求
· 學會判斷真假板卡的方法
· 能夠根據用戶的要求寫出主機部分的配置方案
(3)重點難點
· 板卡中元器件的名稱
· 主板、CPU、內存的匹配方案
(4)教學設計分三個小段進行教學。
1)每個組發一套板卡,包括:主板、CPU、內存、顯示卡、機箱電源 2)教學按照教學內容前4項分段進行,首先教師講解本段的教學內容,每組選派一名代 表進行實例講解,教師總結。
3)按照講師的操作及要求一步一步進行電腦主機部分的安裝,強調安裝的步驟和操作注 意事項,力爭作到操作標準化規范化。
(5)建議學時數 6小時
2.顯示器的認識
(1)教學內容
· CRT顯示器的認識
· 液晶顯示器的認識
· 顯示器的安裝
(2)教學目的
· 認識各種板卡以及質量要求
· 學會判斷真假板卡的方法
· 能夠根據用戶的要求寫出主機部分的配置方案
(3)教學設計分三個小段進行教學。
1)每個組發一套CRT顯示器一臺,液晶顯示器講師做樣機。2)教師講解本段的教學內容,教師總結。
3)按照講師的操作及要求一步一步進行電腦主機部分的安裝,強調安裝的步驟和操作注意 事項,力爭作到操作標準化規范化。
(4)建議學時數 2小時
3.存儲設備的認識
(1)教學內容
· IDE接口、SCSI接口的硬盤的認識
· CD-R、CD-RW、DVD光存儲設備以及光盤的認識
· U盤、MO盤的認識
· 硬盤、光驅的安裝和參數設置
(2)教學目的
· 認識各種接口的存儲設備
· 熟練安裝硬盤、光驅,多個存儲設備的安裝
(3)重點難點
· 多個存儲設備的安裝
· PC機存儲方案的設置
(4)教學設計分四個小段進行教學。1)每個組發一個硬盤、一個光驅以及連線
2)教學按照教學內容前3項分段進行,首先教師講解本段的教學內容,每組選派一名代表進行實例講解,教師總結。
3)按照講師的操作及要求一步一步進行硬盤、光驅部分的安裝,強調安裝的步驟和操作注意事項,力爭作到操作標準化規范化。
4)硬盤的參數設置及分區,PC機的存儲方案
(5)建議學時數 4小時
4.系統參數設置及操作系統的安裝
(1)教學內容
· BIOS的設置
· 操作系統的安裝和設置 · 工具軟件的使用
(2)教學目的
· 熟練安裝一種操作系統
· 熟悉BIOS常用參數的設置
(3)重點難點
· BIOS參數高級設置
(4)教學設計
1)每個組發一張安裝系統和軟件的光盤 2)按照講師的安裝步驟進行安裝和操作
(5)建議學時數 6小時
5.PC外設的認識和操作
(1)教學內容
· 激光打印機、噴墨打印機、針式打印機的安裝、設置和使用,常用備件的更換
· MODEM卡或外置MODEM的安裝、設置和使用
· ADSL的安裝、設置和使用
· 掃描儀的安裝、設置和使用
· 數碼相機的安裝、設置和使用
(2)教學目的
· 熟練安裝、設置和使用各種外部設備
(3)重點難點
· 外設設置沖突問題的解決
· 高端設備的正確使用
(4)教學設計
1)每個組負責一個設備
2)分組由講師講解的安裝的注意事項和安裝步驟,由學員上講臺進行操作,其他學員觀看投影和實際操作
3)各組交換實物進行操作。
(5)建議學時數 6小時
6.筆記本電腦的認識和操作
(1)教學內容
· 筆記本電腦的認識
· 筆記本電腦的拆裝
(2)教學目的
· 熟練安裝、設置和使用筆記本電腦
(3)重點難點
· 筆記本電腦的拆裝
(4)教學設計
1)每個組負責一臺筆記本設備
2)分組由講師講解的安裝的注意事項和安裝步驟,由學員上講臺進行操作,其他學員觀看投影和實際操作
3)各組交換實物進行操作。
(5)建議學時數 6小時