FPGA之旅---例化


一、信號端口采用名稱關聯

語法結構:

.PortName(port_expr)

//PortName是頂層的名稱,port_expr是底層端口

//port_expr可以是一下任何類型

1.標識符

2.位選擇,如.C(d[0]),C端口連接到d信號的第0位

3.部分選擇,例.bus(din[5:4])

 

例:

module yumen(C,A,B)

.C(T3)//

二、各分層模塊之編寫

底層編寫:正常書寫后,最后用assign語句將輸出定義

    例:

      output [3:0] key_value;

      原來的按鍵輸出按鍵值的次數,那么次數是reg型,

always @(posedge clk or negedge rst)

  if(!rst)

    ci<=5'b0;

  else if(dawn_flagr!=4'b0)
    ci<=ci+1'b1;

  //此時ci是按鍵輸出值,是reg型,此時需要換一下輸出值,重新定義輸出數組,用assign賦值語句將ci賦值給輸出

  //即

  assign key_value=ci;

 三、頂層模塊的編寫

1.所有中間變量必須重新聲明,否則會默認為一位的 

2.注意在對在同一條線上的變量命名的時候使用同一名字

3.模塊例化后在連線語法:

module_name1 U1//模塊名字空格 加U?

(  

  .clk(clk),//注意,用逗號,外邊是頂層外部信號,括號內是底層模塊信號名字

  .rst(rst),

  .top_in_signal(U1_in_signal),//頂層輸入信號進入U1模塊

    ....

  .U1_signal_output(U2_in),//U1輸出連到U2輸入,此信號需要聲明一下,否則會默認是一位的

    ....

);//括號內用逗號隔開,最后一個不加逗號,

module_name2 U2//

(

  .clk(clk),//注意,用逗號,外邊是層外部信號,括號內是層模塊信號名字

  .rst(rst),

  .U2_in(U1_output),

    ...

  .Top_out_signal(U1_out_signal),//不是很確定,有待驗證

    ...

);//用分號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM