可重用設計 使用符號常量和parameter

2021-06-04 01:12:52 字數 2072 閱讀 9486

可重用設計--使用符號常量和parameter

好的設計習慣會在hdl**中避免使用「魔鬼數字」,而是盡量採用符號常量。verilog hdl中,使用關鍵字localparam宣告符號常量

4位全加器的verilog hdl描述

module adder_carry_hard_lit

(input wire [3:0] a, b,

output wire [3:0] sum,

output wire cout //進製輸出

);// signal declaration

wire [4:0] sum_ext;

//body

assign sum_ext = + ;

assign sum = sum_ext[3:0];

assign cout= sum_ext[4];

endmodule

引數化的全加器描述

module adder_carry_local_par

(input wire [3:0] a, b,

output wire [3:0] sum,

output wire cout // carry-out

);// constant declaration

localparam n = 4, //定義匯流排位寬為n

n1 = n-1;

//內部訊號宣告

wire [n:0] sum_ext;

//程式主體

assign sum_ext = + ;

assign sum = sum_ext[n1:0];

assign cout= sum_ext[n];

endmodule

verilog hdl提供了一種叫做parameter的機制,可以在模組例項時傳遞資訊給模組。這種機制可以提高模組的通用性和可重用性。通過parameter模組內部引數值可以被修改,大大簡化設計過程。通過使用引數,設計者可以設計出通用性更高的模組,提高設計的可重用性。

verilog 2001,引數宣告語法如下

module module_name

#(parameter parameter_name1 = parameter_value1,//引數宣告使用關鍵字parameter,

… //多個引數宣告使用逗號(,)分隔

parameter_namen = parameter_valuen;)(

//埠宣告

);引數化的全加器電路

module adder_carry_para

#(parameter n=4)

(input wire [n-1:0] a, b,

output wire [n-1:0] sum,

output wire cout // carry-out

);// constant declaration

localparam n1 = n-1;

// signal declaration

wire [n:0] sum_ext;

//body

assign sum_ext = + ;

assign sum = sum_ext[n1:0];

assign cout= sum_ext[n];

endmodule

帶引數模組的例項

module adder_insta

(input wire [3:0] a4, b4,

output wire [3:0] sum4,

output wire c4,

input wire [7:0] a8, b8,

output wire [7:0] sum8,

output wire c8

);//例項乙個8位寬的加法器

adder_carry_para #(.n(8)) unit1

(.a(a8), .b(b8), .sum(sum8), .cout(c8));

//例項乙個4位寬的加法器

adder_carry_para unit2

(.a(a4), .b(b4), .sum(sum4), .cout(c4));

endmodule

Python GUI類設計 可重用時鐘

設計乙個gui類來顯示乙個時鐘,假設要在乙個畫布內顯示它而且能夠在其他程式中。需要定義乙個時鐘類來實現時鐘的重用。進一步說,為了在圖形上顯示這個時鐘,需要將它定義為乙個widget小構件。因此最好的選擇是定義時鐘類擴充套件canvas類,使時鐘物件能夠像canvas物件一樣使用。定義時鐘類still...

將menu設計為可重用的子系統

這篇部落格對應線上課程第七次實驗。網易雲課堂 實驗樓 庫 需要新增兩個函式menuconfig,executemenu用於新增命令和執行menu程式 另外需要handleargv處理命令字串集,再傳給執行命令的具體函式。編寫makefile可以實現自動化編譯,編寫完成後,使用make命令,gcc可以...

小心使用可修改的常量。

procedure tfdbform editform md.enabledatasetevent aenalbed boolean const cdetailbeforeeditevent tdatasetnotifyevent nil cdetailbeforedeleteevent tdata...