advertisement

顯示具有 FPGA 標籤的文章。 顯示所有文章
顯示具有 FPGA 標籤的文章。 顯示所有文章

2014年1月1日

FPGA 重點

四位元漣波進位加法器

module  ha(a,b,s,c);
        input   a,b;
        output  s,c;

2013年12月9日

FPGA 考試重點

前瞻進位加法器公式:
Pi=(ai | bi)
gi=(ai&bi)
ci=gi | (pi&(c(i-1)))

連波進位加法器與前瞻進位加法器之差異

a[大:小]

Moore、Mealy狀態機


2013年11月18日

FPGA


module ha(a,b,s,c);
        input a,b;
        output s,c;

        assign s=a^b;
        assign c=a&b;

endmodule

2013年11月11日

FPGA

$dumpvars:指定要儲存之變數
$dumpvars("變數名稱1,變數名稱2,....");

$dumpvars;=$dumpvars("");//儲存全部變數

assign #1 {cout,s} = a+b;//a+b之結果高bit放到a,低bit放到b

2013年10月29日

FPGA 筆記

Behavior 行為式
常用之區塊有
initial區塊  => 用於模擬,模擬時間 再有時機或有事件時才會執行
always區塊   => 可用於合成及模擬 持續一直執行

ex
always@(clk)
        q=d;

always@(posedge clk or negedge rst_)
        if(~rst_) q=0;
        else q=d;

always@(posedge clk or posedge rst_)
        if(rst_) q=0;
        else q=d;

negedge配合~rst_     posedge配合rst_

FPGA重點整理

  1. 使用參數:大寫表示常數,小寫表示信號變數
  2. [大:小]
  3. Verilog語法中忽略 空格 tab 換行
  4. 大小寫代表不同的識別字
  5. $monitor連續監視變數
  6. $display僅被呼叫一次
  7. $finish結束模擬
  8. integer 整數 parameter 參數
  9. always內之輸出變數必用reg宣告
  10. 不可交=將任意值直接指定給暫存器 reg
  11. 運算式等號右邊較位元數大於左邊位元數,則右邊較高之位元捨去,而左邊位元大於右邊位元數,則右邊位元補0至與左邊位元數相同
  12. y=s?a:b s=1時y=a  s=0時y=b
  13. a={4{2'b01}};  a=8'b01010101;
  14. a={a,2{a,b,c}}; a={a,a,b,c,a,b,c};
  15. 要記得實體化模組
  16. module XXX ();  後面要加分號
  17. endmodule          後面不加分號
  18. 依順序與依名稱之差異
  19. <資料型態><位元><變數名稱><陣列長度>;   reg [3:0] data [7:0];//8個4位元之暫存器data
  20. initial  內之程式碼僅執行一次,多個initial區塊時,則會並行執行
  21. always 內之程式碼將重複執行  碰到$finish、$stop停止
  22. 測試模組reg對input  wire對output
  23. 測試平台之模組宣告不加 ,輸出入變數
  24. 測試磨阻止需要宣告設計本體input output為reg wire其餘的不用宣告
  25. 測試平台模組內的輸出入宣告變數(reg wire),要與實體或模組()內的變數一致
  26. out [3:0] a,b;  表a,b皆為4位元output
  27. 變數名稱第一個字元不不可以是數字
  28. if、case必在always內
  29. always@(posedge clk or posedge rst) 非同步rest

FPGA 3對8解碼器

3對8解碼器

增值表:

d2
d1
d0
y7
y6
y5
y4
y3
y2
y1
y0
0
0
0
1
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
1
0
1
0
1
0
1
1
1
1
1
0
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1

卡諾圖:










2013年10月21日

FPGA 上課筆記

程序指定(procedural assignment)
    變數名 = 延遲 運算式;

ex   wire [2:0] a,b;
      wire [2:0] sum;
      wire c;
     {c,sum}= a+b;
使用"="號指定方式為阻斷式(blocking)

2013年10月7日

Verilog FPGA 2013/10/7

連續指定語法

assign 強度 延遲 運算式;
連續無時間或時機之限制
一旦 assign後其邏輯閘關係,就不能再改變

2013年9月23日

FPGA Verilog 執行、編譯、撰寫 多工器

撰寫與執行程式步驟

增值表=>卡諾圖畫簡=>邏輯運算式(閘級寫法)=>行為描述(高階寫法)
增值表=>撰寫程式碼

---------------- 範例 2對4解碼器 --------------------

增值表:


a
b
I3
I2
I1
I0
0
0
0
0
0
1
0
1
0
0
1
0
1
0
0
1
0
0
1
1
1
0
0
0

卡諾圖畫簡:




y1 y2 y3 省略

 


2013年9月20日

Verilog FPGA Homework 多工器

Verilog FPGA Homework 多工器 4A037052_蘇偉諺


請使用verilog語法寫出21多工器,並測試出波形結果。

()


設計一計數器計數0~999

設計一計數器計數0~999_4A037052_蘇偉諺

硬體描述語言 作業

102-1學期  硬體描述語言 作業(3) 4A037052_蘇偉諺

2.     請寫出Verilog模組(module)之架構。

    module 模組名(輸出入變數名);
    <輸出入宣告;>
    <節點宣告;>
    <模組內部結構>
    endmodule

硬體描述語言 作業

101-1學期 硬體描述語言 作業(4) 4A037052_蘇偉諺

1.     (A) 請問一位元半加器與一位元全加器之差別為何?

全加器:要考慮進位輸出位元與進位輸入位元
        =>被加數+加數+進位輸入
半家器:不考慮進位輸出位元與進位輸入位元
        =>被加數+加數

Verilog incrementer mult4 mult8 PRcalc8


1.      若一AND(gate) 之輸出延遲為1nsOR閘之輸出延遲為1nsINVERTER閘之輸出延遲為0ns,請計算下列加法器之輸出延遲。
(A)以全加器與半加器設計之4位元漣波加法器(ripple carry adder)
假設a,b為被加數與加數,cout為相加後的進位,sum為相加後的總和,cin為進位輸入。
1位元半加器之運算式為下列:
          sum=a ^ b 延遲2ns
                  a ^ b= (a & ~b) | (~a &b)
                  a,b同時輸入,故(a & ~b)(~a & b)同時運算完成同時延遲1ns
                  延遲1ns後待計算完&後在計算| 故在延遲1ns
                  ^總延遲為2ns,故sum得出結果後延遲2ns
          cout=a & b 由題目假設得知延遲1ns
                 

Verilog Moore狀態機 Mealy狀態機 det010_1001 sipo8 piso8 uart


1.      欲偵測位元串流輸入是否為010”1001”,請寫出下列((A)~(C))方法之verilog程式。
(A)   不使用狀態機。