日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog功能模块——符号位扩展

發布時間:2025/3/13 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Verilog功能模块——符号位扩展 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 模塊功能與應用場景

模塊功能:符號位擴展

應用場景:DDR等存儲器通常是32/64位的,數據需要轉為合適的位數再存入。

二. 模塊框圖與使用說明

輸入和輸出都是二進制補碼,補碼的符號位擴展就是補最高位即符號位即可

三. 模塊代碼

/** @Author : Xu Dakang* @Email : XudaKang_up@qq.com* @Date : 2021-05-14 09:50:48* @LastEditors : Xu Dakang* @LastEditTime : 2021-05-14 22:59:16* @Filename : signExtension.v* @Description : 符號位擴展模塊 *//* * 思路: 輸入數據為二進制補碼,判斷輸入數據的最高位,為1則高位補1,為0則高位補0; */module signExtension #(parameter INPUT_WIDTH = 24,parameter OUTPUT_WIDTH = 32 )(input wire signed [INPUT_WIDTH-1 : 0] input_number,output wire signed [OUTPUT_WIDTH-1 : 0] output_number );assign output_number = {{(OUTPUT_WIDTH - INPUT_WIDTH){input_number[INPUT_WIDTH-1]}}, input_number};endmodule

四. testbench

/** @Author : Xu Dakang* @Email : XudaKang_up@qq.com* @Date : 2021-05-14 19:40:46* @LastEditors : Xu Dakang* @LastEditTime : 2021-05-14 22:58:24* @Filename : signExtension_tb.sv* @Description : testbench of signExtension */module signExtension_tb();timeunit 1ns; timeprecision 10ps;parameter INPUT_WIDTH = 24; parameter OUTPUT_WIDTH = 32;logic signed [INPUT_WIDTH-1 : 0] input_number; logic signed [OUTPUT_WIDTH-1 : 0] output_number;signExtension signExtension_inst(.*);// 生成時鐘 localparam CLKT = 2; logic clk; initial beginclk = 0;forever #(CLKT / 2) clk = ~clk; endinitial begininput_number = 12;#CLKT;input_number = 88;#CLKT;input_number = -18;#CLKT;input_number = -300;#CLKT;input_number = 24'hXX8CX2;#CLKT;$stop; endendmodule

五. 仿真驗證

仿真工具:Vivado 2020.2 Simulator。

16進制顯示:

有符號10進制顯示:

六. 工程分享

signExtension 符號位擴展模塊 vivado 2020.2工程.7z

鏈接:https://pan.baidu.com/s/1kRQo_K1q3GQ8d0V2j1WG1w
提取碼:2xiz

總結

以上是生活随笔為你收集整理的Verilog功能模块——符号位扩展的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。