Verilog HDL 訓練】第 12 天(數據通路)

      網友投稿 929 2025-04-03

      數據通路。


      y = func(a,b)

      func可以是加法,減法,乘法,比較,移位,舍入,飽和等。

      分別針對有符號數,無符號數的情況。

      提示:可以參考synopsys的一篇文檔 https://t.zsxq.com/QF6QNju

      加法:

      對于無符號數而言:

      module arithmetic(

      input [3:0] a,

      input [3:0] b,

      output [4:0] res_sum, //加

      output [3:0] res_sub, //減

      output [7:0] res_pro, //乘

      //output [3:0] res_comp, //比較

      output [3:0] right_shift //右移

      );

      assign res_sum = a + b;

      assign res_sub = a - b;

      assign res_pro = a * b;

      //assign res_com =

      assign right_shift = a>>3; //邏輯右移

      wire [3:0] right_shift_a; //算術右移結果

      assign right_shift_a = a>>>3;

      endmodule

      測試文件:

      【Verilog HDL 訓練】第 12 天(數據通路)

      module arithmetic_tb(

      );

      reg clk;

      reg [3:0] a;

      reg [3:0] b;

      wire [4:0] res_sum; //加

      wire [3:0] res_sub; //減

      wire [7:0] res_pro; //乘

      //wire [3:0] res_comp, //比較

      wire [3:0] right_shift; //右移

      initial begin

      clk = 0;

      forever

      # 2 clk = ~clk;

      end

      initial begin

      a = 4'b1011;

      b = 4'b1001;

      #10

      a = 4'b1001;

      b = 4'b0111;

      end

      arithmetic u0(

      .a(a),

      .b(b),

      .res_sum(res_sum),

      .res_sub(res_sub),

      .res_pro(res_pro),

      .right_shift(right_shift)

      );

      endmodule

      行為仿真時序圖:

      對于無符號數,邏輯右移和算術右移是一樣的,都是高位補零。

      對于有符號數而言:

      module arithmetic(

      input signed [3:0] a,

      input signed [3:0] b,

      output signed [4:0] res_sum, //加

      output signed [3:0] res_sub, //減

      output signed [7:0] res_pro, //乘

      output signed [3:0] right_shift //右移

      );

      assign res_sum = a + b;

      assign res_sub = a - b;

      assign res_pro = a * b;

      //assign res_com =

      assign right_shift = a>>3; //邏輯右移

      wire [3:0] right_shift_a; //算術右移結果

      assign right_shift_a = a>>>3;

      endmodule

      測試文件同上!

      仿真波形:

      可以看出,對于有符號數,邏輯右移和算術右移結果不一樣,邏輯右移依然是補零,算術右移則補符號位。

      但對于有符號數的加法規則如何?

      例如上述仿真:1001 + 0111 為什么等于 00000?

      也就是-1 + 7 = 0?

      得到了答案:

      1001是補碼的形式,原碼是1111,也就是-7,這樣的話就是-7+7=0,也符合道理了。

      機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel2007Shift快捷鍵:快速定位單元格
      下一篇:如何快速替換表格中的數字
      相關文章
      老汉色老汉首页a亚洲| 亚洲国产精品精华液| 亚洲中文字幕无码一去台湾 | 成人婷婷网色偷偷亚洲男人的天堂| 老汉色老汉首页a亚洲| 国产精品亚洲美女久久久 | 91在线精品亚洲一区二区| 亚洲成色www久久网站夜月| 国产精品亚洲玖玖玖在线观看| 亚洲欧洲日本在线| 亚洲国产一级在线观看 | 亚洲国产欧美国产综合一区| 亚洲欧洲日本在线观看| 亚洲一区二区三区免费观看| 亚洲成人网在线播放| 亚洲午夜精品在线| 亚洲精品二三区伊人久久| 亚洲校园春色小说| 亚洲永久在线观看| 亚洲欧美日韩国产成人| 亚洲成av人在线观看网站| 成人伊人亚洲人综合网站222| 亚洲 综合 国产 欧洲 丝袜| www.亚洲精品| 不卡一卡二卡三亚洲| 亚洲香蕉网久久综合影视| 亚洲精品乱码久久久久久按摩 | 亚洲国产综合精品中文第一区| 亚洲精品高清视频| 亚洲欧洲自拍拍偷综合| 亚洲三级在线视频| 亚洲欧美国产欧美色欲| 亚洲精品亚洲人成在线| 日本中文一区二区三区亚洲| 亚洲无码高清在线观看| 国产AV无码专区亚洲A∨毛片| 亚洲网址在线观看你懂的| 亚洲性猛交xx乱| 亚洲自偷自偷在线成人网站传媒| 国产精品无码亚洲精品2021| 亚洲精品无码久久久|