Chapter 5 Verilog硬體描述語言

Slides:



Advertisements
Similar presentations
完美殺人筆記簿 【爸!我受夠了!】 第七組組員: 林正敏 陳筱涵 李蓓宇 許純宜 羅玉芬 謝文軒.
Advertisements

99 級鄭郁立 教甄分享 桃園縣霄裡國小資源班教師. 我想當老師 !!!  從小的志願  教會別人的成就感  穩定的工作 ~ 金飯碗 ( 以現在的景氣來說 …)  早下班有很多自己的時間 (3:40 或 4:00)  寒暑假 ( 偶爾要到學校 )  待遇不錯  有很多優惠 ?!( 我目前並沒有感受到.
時間:2015/11/07 會議地點:中興大學化學系館107 比賽時間:2015/11/28-11/29
學生書寫現況 1、寫不出來。 2、火星文(注音ㄚ、ㄛ、ㄏ. 、圖像 文字…) 3、口語化。
教育概論 幼一甲 第四小組 1.林瑞敏 2.許曉文 20.張舒婷 21.陳香如.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容
彰化縣教師會 導護問題知多少? 理事長:許麗芳老師 報告人:廖銘潭老師   .
跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾. 跳楼价 亏本大甩卖 清仓处理 买一送一 5折酬宾.
TQC+ 物件導向程式認證-JAVA.
D、結構化技術 主要的結構化技術 結構化程式設計 (Structured Programming)
电话联系.
迎宾员礼仪 包头机电工业职业学校管理系 白琳 1.
第4章 VHDL设计初步.
Chapter 5 Sequential Logic Circuit
五-4 台灣的生活禮俗 組員:603 15號 黃醴萬 6號 吳家熙 5號 楊証傑 11號 李偉新.
Chapter 4 流程控制.
第八組 組員:07黃佩瑄 13吳姿毅 14葉芷芸 26黃欣蓮 34林思妤 48潘婷蓉
财 务 会 计 第四篇:供应链会计实务 制作人:谌君、熊瑜.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
水煮FPGA 传统FPGA设计流程简介.
第10章 Verilog操作符 学习内容: 熟悉Verilog语言的操作符.
VHDL數位電路實習與專題設計 文魁資訊-UE301
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 30, 2017 ZDMC.
VHDL數位電路實習與專題設計 文魁資訊-UE301
Chapter 5 Verilog 硬體描述語言
邏輯設計.
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
第17章 Verilog中的高级结构 学习内容: 任务和函数的定义和调用 怎样使用命名块 怎样禁止命名块和任务 有限状态机(FSM)及建模.
EDA技术 廖义奎.
版权所有,禁止未经授权的商业使用行为 何宾 Tel: 北京中教仪装备技术有限公司.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
EDA原理及应用 何宾
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
数字系统设计复习 Digital System Design Summary
Verilog硬件描述语言基础.
EDA 原理及应用 何宾
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
Programmable Logic Architecture Verilog HDL FPGA Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
语法进阶.
时序电路设计 刘鹏 浙江大学信息与电子工程系 Apr. 24, 2011 EE141
数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系.
精简指令集(RISC)CPU的构造原理和设计方法
程式設計 老師:戴自強 助教:楊斯竣.
暴力、草莽、土野、情色、權慾 —華西街的成人童話
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 29, 2016 ZDMC.
第五章 VHDL主要描述语句.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
刑事訴訟法 不受理.
软件工程 第四章 软件设计 软件过程设计技术与工具.
程式結構&語法.
4 條件選擇 4.1 程式基本結構 循序式結構 選擇式結構 重複式結構 4-3
第14章 对验证的支持 学习内容 理解Verilog文本输出 理解不同的读取仿真时间的系统函数 理解 Verilog文件I/O功能.
计算机学院 数字逻辑实验的要求.
计算机EDA设计 教 程 北航计算机学院 艾明晶.
设计示例一 用门级结构描述D触发器:.
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
數位邏輯設計 VHDL.
马克思思考题 来自可爱又迷人的26班第3个女生寝室
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
第七章 软件测试 Software Testing
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
按键处理部分 王安然.
Programmable Logic System Design
第七章 基本逻辑电路设计.
Programmable Logic System Design
Presentation transcript:

Chapter 5 Verilog硬體描述語言

Chapter 5 Verilog硬體描述語言

Chapter 5 Verilog硬體描述語言

Always Always是屬於並行迴圈,其事件一旦被觸發,其區塊中的敘述將會被執行,觸發一次執行一次行程無窮迴圈 always@(事件1 or 事件2 or … or 事件n) begin <敘述區> end

「 Begin … end 」 主要是將不同敘述同時集中,做法與C語言的“{”與“}”一樣,當敘述址為一行時,則Begin … end可以拿掉 begin:<方塊名稱> <資料型態宣告>; . end 各種敘述

「 If 」「 else if 」「 else 」 If 跟 else if 為條件判斷式,只要達成If 或是 else if 的判斷條件,則執行內部的敘述區塊,否則執行else內部的敘述區塊 If (判斷條件1) begin <敘述區塊> end else if (判斷條件2) else if (判斷條件3) . else

「 If 」「 else if 」「 else 」 cont’ 通常if else if else會出現在Always迴圈底下,因為Always屬於並行迴圈,若再搭配條件判斷便可以進行串列(下面程式藍色部分) 與並列(下面程式綠色部分)處理。 Always@(判斷條件1 or 判斷條件2 or … or 判斷條件n) begin if (判斷條件1) <敘述區塊> end else if (判斷條件2) else Always@(判斷條件1 or 判斷條件2 or … or 判斷條件n) begin if (判斷條件1) <敘述區塊> end if (判斷條件2) else 二個if會同時判斷

EX. Always @(posedge CLK or negedge CLR) //如果CLK在正緣觸發或是CLR在負緣觸發時便執行 //下面的敘述 begin //如同C語法的{ if (!CLR) //如果觸發的是CLR且為0則執行以下敘述 q=1’b0; //如果觸發的是CLR且為0則q清除為0,一行故if敘述式可加可不加begin end else //否則,如果不是CLR的觸發(也就是CLK時) begin //因為else裡面敘述事不只一個,故要加begin end q=d; //若不是CLR則q輸出d(輸入端)的資料 cont = cont +1; end //因為else裡面敘述事不只一個,故要加begin end end //如同C語法的}

「 Case … endcase 」 Case 類似if else的寫法,依照case後面的條件狀況判斷式,來判斷要進入哪一個狀況執行裡面的敘述式,否則執行default(類似else)裡面的敘述式。 case (條件狀況判斷式) 狀況1: begin <敘述式1> end 狀況2: <敘述式2> . default: <敘述式n> endcase

EX. Case (s) //若S的狀態改變時便進入case敘述式 2’b00: //若S的狀態式2bit 00的話便進入以下敘述式 begin //敘述式開始 y = i[0]; cont = cont+1; end //敘述式結束 2’b01: //若S的狀態式2bit 01的話便進入以下敘述式 begin //敘述式開始 y = i[1]; 2’b10: //若S的狀態式2bit 10的話便進入以下敘述式 y = i[2]; end //敘述式結束 default: //否則進入以下敘述式 y = i[3]; endcase //本case敘述式結束

「 While 」 在While語法中,後面所接的條件判斷式如果為“真”則一直執行While內部的敘述式,直到該判斷式為“假”才停止執行。 begin <敘述式> end

EX. Parameter i=10; //設定 i = 10 while (i>0) //如果i >0的話就執行內部敘述式,一直到i <0結束 begin //敘述式開始 $display(“i=%d”,i); //把i的值用十進制的方式顯示出來 i= i-1; //目的是要把i減到停止執行while迴圈(即i<0) end //敘述式結束

Chapter 5 Verilog硬體描述語言

Testbench架構 Testbench module endmodule Call Design Circuit Module `timescale 1ns / 1ps//前面的1ns代表程式中最小的時間單位後面的1ps代表運算的精準度 module totaltestt; // testbench命名 // Inputs //將Input設為 reg reg [3:0] mesg; //將Input設為 reg reg clk; //將Input設為 reg reg rst; //將Input設為 reg // Outputs //Output設為wire wire [6:0] omesg; //Output設為wire // Instantiate the Unit Under Test (UUT) testmodule uut //將要測試的HDL名字寫進來,uut只是一個隨便的命名 ( //將HDL的port和testbench的port做連接   .mesg(mesg),   .clk(clk),   .rst(rst),   .omesg(omesg) ); initial begin //initial為只執行一次的訊號 // Initialize Inputs mesg = 0; //初始資料一開始為0 clk = 0; //clock一開始為0 rst = 0; //reset一開始為0 #1000 $finish; // 執行1000ns後結束 end // Add stimulus here // 觸發訊號設定 Initial //initial為只執行一次的訊號 begin #5 rst = 1; // 5ns後reset設定為1,重置結束 always#10 clk=~clk; //always為重複性迴圈,只要達成條件就執行,本條件是每10ns就把clk訊號反向 always#20 mesg = mesg+1; //每20ns就把輸入訊號+1 endmodule Testbench module Switch-level Gate - level Dataflow-level Behavioral-level Call Design Circuit Module endmodule

Testbench語法 All of the Verilog language can be used. Usual Syntax #number:number=time unit of delay. initial:just execution at a time. always:still execution until break. $random[(seed)]: a 32-bit random number of signed integer. $finish:finish the simulation

Testbench語法(cont.) A Example of Testbench. input output module four_bit_adder_tb; reg [3:0] x; reg [3:0] y; reg c_in; wire [3:0] sum; wire c_out; fout_bit_adder uut (.x(x), .y(y), .c_in(c_in), .sum(sum), .c_out(c_out)); initial begin x = 0; y = 0; c_in = 0; end always begin #100 //delay 100 unit x = $random % 16; //generate 4-bit random number(0~15) y = $random % 16; //generate 4-bit random number(0~15) c_in = $random % 2; //generate 1-bit random number(0~1) initial #2000 $finish; endmodule input output Instantiate the Unit Under Test (UUT) set initial value generate input by each delay time Set total time of simulation

Ex. Design Circuit Module (1/3) Gate – level module tech1(X,Y,Z,F); input X; input Y; input Z; output F; wire F; wire F1; wire F2; wire Y1; not (Y1,Y); and (F1,X,Y1); or (F2,Y,Z); or (F,F1,F2); endmodule Design Circuit module Switch-level Gate - level Dataflow-level Behavioral-level endmodule

Ex. Design Circuit Module (2/3) Dataflow-level module tech1(X,Y,Z,F); input X; input Y; input Z; output F; wire F; assign F=(X&~Y)|(Y|Z); endmodule Design Circuit module Switch-level Gate - level Dataflow-level Behavioral-level endmodule

Ex. Design Circuit Module (3/3) Behavioral-level module tech1(X,Y,Z,F); input X; input Y; input Z; output F; reg F; always @(X or Y or Z) begin F=(X&~Y)|(Y|Z); end endmodule Design Circuit module Switch-level Gate - level Dataflow-level Behavioral-level endmodule

EX .Design Testbench (1/3) 注意顏色的對應,代表模組與模組的對應 module testtech1; // Inputs reg X; reg Y; reg Z; // Outputs wire F; // Instantiate the Unit Under Test (UUT) tech1 uut ( .X(X), .Y(Y), .Z(Z), .F(F) ); initial begin // Initialize Inputs X = 0; Y = 0; Z = 0; // Wait 1000 ns for global reset to finish #1000 $finish; end always #5 X=X+1; always #10 Y=Y+1; always #15 Z=Z+1; endmodule Design Circuit Testbench module tech1(X,Y,Z,F); . endmodule module Switch-level Gate - level Dataflow-level Behavioral-level Call Design Circuit Module endmodule 輸入觸發(up counter)

EX . Design Testbench (2/3) always #5 X=X+1; always #10 Y=Y+1; always #15 Z=Z+1; 輸入觸發(up counter) initial begin // Initialize Inputs X = 1; Y = 1; Z = 1; // Wait 1000 ns for global reset to finish #1000 $finish; end always #5 X=X-1; always #10 Y=Y-1; always #15 Z=Z-1; 輸入觸發(down counter)

EX . Design Testbench (3/3) initial begin #5 X=0;Y=0;Z=0; #5 X=0;Y=0;Z=1; #5 X=0;Y=1;Z=0; #5 X=0;Y=1;Z=1; #5 X=1;Y=0;Z=0; #5 X=1;Y=0;Z=1; #5 X=1;Y=1;Z=0; #5 X=1;Y=1;Z=1; end 輸入觸發(user define) always #5 X= $random; \\沒有限制,隨機產生數據輸出 always #5 Y= $random%60; \\有限制,隨機在-59~59間產生數據輸出 always #5 Z= {$random}%40; \\有限制,隨機在0~39間產生數據輸出 輸入觸發(random)

Question & Answer