<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      wire和reg型變量的組合使用

      Posted on 2024-03-27 21:50  綠葉落秋風  閱讀(290)  評論(0)    收藏  舉報

      模型功能

      • 實現寄存器之間的連線
      • 實現寄存器的聲明
      • 建構時鐘的時序系統

      模型框圖

      `timescale 1ns / 1ps
      /*

      */
      // *******************************************************************************
      // Company: Fpga Publish
      // Engineer: FP 
      // 
      // Create Date: 2024/03/24 12:39:43
      // Design Name: 
      // Module Name: verilog_demo
      // Project Name: 
      // Target Devices: ZYNQ7010 | XCZU2CG | Kintex7
      // Tool Versions: 2021.1 || 2022.2
      // Description: 
      //         * 
      // Dependencies: 
      //         * 
      // Revision: 0.01 
      // Revision 0.01 - File Created
      // Additional Comments:
      // 
      // *******************************************************************************
      module verilog_demo #(
          //mode
          parameter MD_SIM_ABLE = 0,
          //number
          parameter NB_DELAY_CLK = 100,
          //width
          parameter WD_ERR_INFO = 4
         )(
          //! system signals
          input           i_sys_clk   ,  
          input           i_sys_resetn,  
          //! @virtualbus uart_interface @dir out
          output          m_uart_0_mtx, //! uart master tx
          input           m_uart_0_mrx, //! uart master rx
          //! @end 
          //! error info feedback
          output   [WD_ERR_INFO-1:0]  m_err_verilog_info1
      );
      //========================================================
      //function to math and logic
      
      //========================================================
      //localparam to converation and calculate
      
      //========================================================
      //register and wire to time sequence and combine
      // ----------------------------------------------------------
      // demo variable
      reg        [1:0] r_dat0 = 0;
      reg signed [1:0] r_dat1 = 0;
      wire       [1:0] w_dat2;
      reg        [1:0] r_fifo [0:1]
      wire       [1:0] w_array [0:1];
      
      //========================================================
      //always and assign to drive logic and connect
      
      //========================================================
      //module and task to build part of system
      
      //========================================================
      //expand and plug-in part with version 
      
      //========================================================
      //ila and vio to debug and monitor
      
      endmodule
                    
      /* end verilog
      

      */

      實現步驟

      1. 聲明寄存器
      • reg類型變量實際上是對FF(除法器)的快速聲明方法
      • 使用FDCE的原語可以實現寄存器的準確描述,但是比較少用
         FDCE #(
            .INIT(1'b0),            // Initial value of register, 1'b0, 1'b1
            // Programmable Inversion Attributes: Specifies the use of the built-in programmable inversion
            .IS_CLR_INVERTED(1'b0), // Optional inversion for CLR
            .IS_C_INVERTED(1'b0),   // Optional inversion for C
            .IS_D_INVERTED(1'b0)    // Optional inversion for D
         )
         FDCE_inst (
            .Q(Q),     // 1-bit output: Data
            .C(C),     // 1-bit input: Clock
            .CE(CE),   // 1-bit input: Clock enable
            .CLR(CLR), // 1-bit input: Asynchronous clear
            .D(D)      // 1-bit input: Data
         );
      
      • 其中位寬的作用是聲明多個FDCE組合成寄存器組,實現多bit數據的處理
      • 默認值的就是快速輸入原語中的INIT值
      • 原語中的其他描述則會在always邏輯中體現,本章不展開
      1. wire線的連接
      • 從硬件上理解,wire就是各個器件之間的走線
      • 從高級語言的角度理解,wire就是等式的右邊部分的縮寫
      • 也就是說,wire并不是C語言中的變量,而是等式的右邊,用于描述某些中間過程
      1. 二維reg變量的使用
      • 如模型描述中的r_fifo,可以允許輸入地址去訪問類數組結構
      • 該二維reg變量實際上依靠DRAM實現,地址由查找表實現,受限于查找表的大小一般為64bit,所以二維變量地址不能太大
      • 一般器件將地址深度控制在256以內,這個和器件底層LUT級聯單元有關(當然也和時序有關,時序要求越低,支持數目越多)
      • 需要注意的是,嚴禁使用三維reg變量
        • 三維reg變量是指地址受到兩個reg變量的訪問
        • 從其映射關系可以知道,三維reg變量形成的是兩個reg變量位寬相乘的查找表數量
        • 除非兩個變量的位寬都很小,且時序要求很低,否則極有可能出現計算異常(本人已經多次驗證過,仿真沒有問題,但是實際運行異常)
        • 而且,可以通過簡單地提前一個周期計算地址的方法完成維度的降低,完全沒有必要使用這種延時大、條件嚴格的結構
      1. 二維陣列的使用
      • 如模型描述的w_array,可以允許輸入地址去訪問數據的特定位寬
      • 是的,和二維變量的區別是,w_array是走線集合,而不是硬件結構
      • wire [8-1:0] x [0:2-1] 和 wire [8*2-1:0]屬于一個性質,只不過對應關系有所差異
      • 一般二維陣列就是配合二維變量,在級聯結果中形成同步的信號緩存
      1. 級聯一維變量的使用
      • 并不是所有類似r_fifo的變量都是二維reg變量
      • 這個取決于該變量的地址控制方式
      • 當使用常數控制地址訪問時,其更多是作為級聯變量使用
      • 但是從使用效果來說,和二維變量無區別,所以可以全部用fifo進行標記
      • 在本集合的第三篇時就使用過級聯變量,本質上也是一種縮寫,而非特殊的硬件結構
      1. 寄存器之間的傳遞
      • 理論上,可以使用reg完成所有的寄存器的描述
      • 但是為了靈活,還是需要用wire緩存一些中間結果,以免出現大量的重復代碼
      • 也就是存在下列傳遞關系:
        • reg --> wire (assign)
        • wire --> reg (always)
        • wire --> wire (assign)
        • reg --> reg (always)
      • 端口列表在傳遞時均為wire,可以直接連接,通過input和output進行方向區分

      最終效果

      module adder_cascade#(
          parameter NB_CASCADE = 4,
          parameter WD_DAT = 4 
          )(
          input i_clk,
          input  [WD_DAT-1:0] a,
          output [WD_DAT-1:0] s,
          output [WD_DAT*NB_CASCADE-1:0] o_dat
          );
      wire [WD_DAT-1:0] a_array [0:NB_CASCADE]; //add 1 bit for input
      reg [WD_DAT-1:0] r_fifo [0:NB_CASCADE-1]; //add 1 bit for input
      assign a_array[0] = a;
      assign s = a_array[NB_CASCADE];
      generate genvar i;
      for(i = 0; i < NB_CASCADE; i = i + 1)
          begin: FOR_NB_CASCADE
              adder #(
                  .WD_DAT(WD_DAT)
              )u_adder(
                  .a(a_array[i]),
                  .s(a_array[i+1])
              );
              always@(posedge i_clk)
              begin
                  r_fifo[i] <= a_array[i];
              end 
              assign o_dat[WD_DAT*(i+1)-1:WD_DAT*i] = r_fifo[i];
          end 
      endgenerate 
      endmodule
      
      

      調用接口

      • 非封裝模型,無調用接口
      主站蜘蛛池模板: 精品无码国产一区二区三区AV| 国产精品人妻熟女男人的天堂| 国产中文字幕在线精品| 黑人大战欲求不满人妻| 国产乱妇无乱码大黄aa片| 午夜精品福利亚洲国产| 77777亚洲午夜久久多人| 亚洲区成人综合一区二区| 午夜精品福利一区二区三| 亚洲日韩国产精品第一页一区| 久章草这里只有精品| 日韩精品中文字幕国产一| 久久天堂无码av网站| 午夜国产小视频| 免费日韩av网在线观看| 越南女子杂交内射bbwxz| 亚洲欧美日韩综合一区在线 | 国产喷水1区2区3区咪咪爱AV| 国产小受被做到哭咬床单GV| 久久成人 久久鬼色| 国产精品自拍一二三四区| 日韩有码精品中文字幕| 无码 人妻 在线 视频| 成年女人黄小视频| 人妻少妇偷人无码视频| 男女性杂交内射女bbwxz| 亚洲码和欧洲码一二三四| 人妻系列中文字幕精品| 亚洲香蕉av一区二区蜜桃| 国产福利永久在线视频无毒不卡 | 日韩av在线一卡二卡三卡| 妺妺窝人体色www看美女| 狠狠色噜噜狠狠狠狠2021| 国产成人久久精品二区三| 国产精品无码mv在线观看| 欧洲精品色在线观看| 午夜大尺度福利视频一区| 日韩大片一区二区三区| 精品国产中文字幕av| 中文字幕色av一区二区三区| 国产精品成人高潮av|