1樓:匿名使用者
module mac(out,opa,opb,clk,clr);
input clk,clr;
input [7:0] opa,opb;
output [15:0] out;
reg [15:0] out;
wire [15:0] result;
function [15:0] mult;
input [7:0] opa,opb;
reg [15:0] result;
integer i;
begin
result = opa[0]?opb : 0;
for(i=1;i<=7;i=i+1)
begin if(opa[i] == 1) result = result + (opb << 1); end
mult = result;
endendfunction
assign result = mult(opa,opb);
always @(posedge clk or posedge clr)
begin
if(clr) out <= 0;
else out <= result;
endendmodule
測試**:
`timescale 1ns/1ns
`include "mac.v"
module mac_tp;
reg [7:0] opa,opb;
reg clr,clk;
wire [15:0] out;
parameter dely = 100;
mac m1(out,opa,opb,clk,clr);
always #(dely) clk = ~clk;
initial begin
clr = 1;clk = 0;opa = 8'd0;opb = 8'd0;
#dely clr = 0;opa = 8'd1;opb = 8'd10;
#dely opa =8'd2;opb = 8'd10;
#dely opa =8'd3;opb = 8'd10;
#dely opa =8'd4;opb = 8'd10;
#dely opa =8'd5;opb = 8'd10;
#dely opa =8'd6;opb = 8'd10;
#dely opa =8'd7;opb = 8'd10;
#dely opa =8'd8;opb = 8'd10;
#dely opa =8'd9;opb = 8'd10;
#dely opa =8'd10;opb = 8'd10;
#dely $finish;
endinitial $monitor($time,,,"clr = %b opa = %d opb = %d",clr,opa,opb,out);
endmodule
2樓:佘影
module question(a,b,out);
parameter bitsize=32;
input[bitsize-1:0] a,b;
output[2*bitsize-1:0] out;
assign out= a*b;
endmodule
你要並行的乘法器,以上的程式簡單,而且運算速度快,但是佔用資源多,尤其是你的位數有32位
測試程式
`timescale 1ns/1ns
module question_test;
reg[31:0] a,b;
wire[63:0] out;
parameter step = 20;
question question(a,b,out);
initial
begin
a=0;b=0;
#step a=245;b=132;
#step a=4294967295;b=4294967295;
#step $finish;
endendmodule
3樓:
ls的明顯不符合要求...
要是畢業設計這麼簡單還叫畢業設計?
起碼應該加個時鐘訊號吧?
用verilog hdl語言編寫一個8—3譯碼器程式
4樓:棠棠球
首先要糾正一下,相對多的輸入轉化成為相對少的輸出,一般叫編碼器;相對少的輸入轉化成為相對多的輸出,一般叫譯碼器。所以,確切地說你要做的應該是8-3編碼器(還是3-8譯碼器)。
//8-3編碼器verilog**
module enc_83(datain, dataout, en);
input [7:0] datain;
input en;
output [2:0] dataout;
reg [2:0] dataout;
always @*
if (~en)
dataout = 3'b0;
else case(datain)
8'b0000_0001: dataout = 3'b000;
8'b0000_0010: dataout = 3'b001;
8'b0000_0100: dataout = 3'b010;
8'b0000_1000: dataout = 3'b011;
8'b0001_0000: dataout = 3'b100;
8'b0010_0000: dataout = 3'b101;
8'b0100_0000: dataout = 3'b110;
8'b1000_0000: dataout = 3'b111;
default: dataout = 3'b000;
endcase
endmodule
//關於上述**的說明
1) 上述實現的是8-3普通編碼器,即同一時刻輸入保證只有一位有效;
2) 上述**沒有輸出編碼有效的標識位,如果需要的話可自行新增。
急!!求VF程式編寫
假設st1表欄位有 考號 姓名 院系 是否通過 st2表結構有 考號 姓名 筆試 上機 程式如下 clear sele 2 use st2 index on 考號 tag 考號 sele 1 use st1 set relation to 考號 into b replace all 是否通過 wit...
用c語言編寫程式,求s
staticvoidmain stringargs console.writeline 結果回 是答 sum console.readkey 用c語言編寫程式,計算s 1 1 2 1 2 3 1 2 3 n include usingnamespacestd intmain cout 結果2為 re...
cmd用編寫的語言,cmd用txt編寫的語言
執行cmd命令一般來說有兩種方式,一是點 開始 執行 按徽標鍵 r 然後輸入cmd。然後在黑框裡輸入。二是開啟txt,在裡面事先寫好命令,然後將檔案儲存為.bat的檔案,也就是人們通常說的 批處理檔案 當你想執行某些功能的時候,直接雙擊一下就可以了。第二種方法要省事些。兩種方法是殊途同歸,最終執行的...