iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Software Development

超簡單的 Verilog 入門講解系列 第 27

[Day 27] Verilog E-1 難度丁 P2海域的斬殺2 - Rs232訊號協議 TB設計2(計算輸入資料的 clk數量)

  • 分享至 

  • xImage
  •  

回到昨天的程式碼

module tb1();

reg Data_tb1;
reg clk_tb1;
reg reset_tb1;


Wire[7:0] Out_tb1;
Wire En_out_tb1;


Rs232_test1 Rs232_test_tb1(
    .Data1(Data_tb1),.clk(clk_tb1),.reset1(reset_tb1),
    .Out1(Out_tb1),.En_out(En_out_tb1)
    );
    

initial begin

Data_tb1<=0; clk_tb1<=0; reset_tb1<=0;

end

always #5 clk<=~clk;
   
endmodule

要輸入的測試數字

首先我們要先寫一下一個測試的訊號,大小晚一點再加

reg[???] Data_Test_input

要輸入的測試數字

然後還有一個就是在數 Data 的大小,就是之前概念

之前的概念:

 if(Count_clk >= 287 ) begin
            Count_clk<=0;
        end
        else begin
             Count_clk<=Count_clk+1;
        end
end

之前數時間中的 Count_clk 的概念
那我們設定一個 reg 為 Count_Test

reg Count_Test

老樣子列一下要寫甚麼

  1. 觸發的clk 條件
  2. 數到 288
  3. 傳送資料

1. 觸發的clk 條件

Clk當成為 High 時就觸發

always@(posedge clk) begin
    
end

**2. 數到 288 **

照抄之前的概念,數到 288

if( Count_Test >= 287 ) begin
     Count_Test<=0;   
end
else begin
     Count_Test <= Count_Test + 1 ;
end

**3. 傳送資料 **

數到 288 的傳送資料, 明天再寫怎麼傳送,先用?????來代替


if( Count_Test == 0 ) begin

       ?????????? 
       
end


把這兩個合起來吧

我們合起來看,clk 觸發並且 開始數數字


// Clk當成為 High 時就觸發
// 數開始數數字 
always@(posedge clk) begin
    
    // 開始數數字
    if( Count_Test >= 287 ) begin
         Count_Test<=0;
    end
    else begin
         Count_Test <= Count_Test + 1 ;
    end
    
    
end

將輸入的 reg 加入進去吧

我們來加入進去看看

module tb1();

reg Data_tb1;
reg clk_tb1;
reg reset_tb1;


// 輸入的 reg             
reg[???] Data_Test_input

Wire[7:0] Out_tb1;
Wire En_out_tb1;

Rs232_test1 Rs232_test_tb1(
    .Data1(Data_tb1),.clk(clk_tb1),.reset1(reset_tb1),
    .Out1(Out_tb1),.En_out(En_out_tb1)
    );
    
    
    
initial begin

Data_tb1<=0; clk_tb1<=0; reset_tb1<=0;

end


always #5 clk<=~clk;


// Clk當成為 High 時就觸發
// 數開始數數字 
always@(posedge clk) begin
    
    // 開始數數字
    if( Count_Test >= 287 ) begin
         Count_Test<=0;
    end
    else begin
         Count_Test <= Count_Test + 1 ;
    end
    
    if( Count_Test == 0 ) begin

       ?????????? 
       
    end
    
end

endmodule

明天再寫要傳送的資料寫法


上一篇
[Day 26] Verilog E-1 難度丁 P2海域的斬殺1 - Rs232訊號協議 TB設計(TB的初始框架)
下一篇
[Day 28] Verilog E-1 難度丁 P2海域的斬殺3 - Rs232訊號協議 TB設計3(初始化輸入數據)
系列文
超簡單的 Verilog 入門講解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言