作者nopicnic (nopicnic)
看板Electronics
標題[問題] verilog語法問題
時間Thu Mar 18 14:38:37 2010
各位先進好,我是剛學VERILOG的初學者。
在做4bit加法器時有一點硬體的觀念不懂。
先附上我的code
`timescale 1ns /10ps
`include "one_bit_fulladder.v"
module four_bit_ripplecarryadder (sum, cout, A, B);
output [3:0] sum;
output cout;
input [3:0] A, B;
wire cout0, cout1, cout2;
one_bit_fulladder f0(sum[0],cout0,A[0],B[0],0);
one_bit_fulladder f1(sum[1],cout1,A[1],B[1],cout0);
one_bit_fulladder f2(sum[2],cout2,A[2],B[2],cout1);
one_bit_fulladder f3(sum[3],Cout,A[3],B[3],cout2);
endmodule
==========================下面是testbench檔=======================
`timescale 1ns / 10ps
`include "four_bit_adder.v"
module four_bit_adder_tb;
reg A,B;
wire S ,C
four_bit_ripplecarryadder f0 (S,C,A,B)
initial begin
////////////////問題如下///////////////////////
A=3 B=2
#10 A=4 B=1
///////////////////我的問題在這邊//////////////
initial begin
$monitor($time,"A=%d,B=%d,c4=%d,S=%d",S,C,A,B);
end
initial begin
$dumpfile("fullader_4bit_test.vcd");
%dumpvars;
#500 $finish;
end
endmodule
我的問題是在設定A跟B的值的時候,當我打A=3 B=2時
電腦是將3跟2直接轉成0011 跟0010然候放在A向量跟B向量內
情況一:A[3]=0 A[2]=0 A[1]=1 A[0]=1
B[3]=0 B[2]=0 B[1]=1 B[0]=0
還是說電腦會直接將視為
情況二:
A[3]=0 A[2]=0 A[1]=0 A[0]=3
B[3]=0 B[2]=0 B[1]=0 B[0]=2
對加法器而言這樣的A跟B就如同A=0001 B=0001 也就是A跟B都只有1
不好意思耽誤大家時間,只是這個基本的問題卡住,害我一整天腦袋都在想
也沒有實驗室的電腦可以讓我進去測試看看,所以麻煩板上的高手大大替我解答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.179.20
※ 編輯: nopicnic 來自: 114.39.179.20 (03/18 14:38)
※ 編輯: nopicnic 來自: 114.39.179.20 (03/18 14:40)
1F:→ horsehead:當然是第一種 A[0]只有一個位元不是0就是1怎麼表示2或3 03/18 16:10
2F:推 sasako:大哥...數位只有0和1.. 03/22 01:53
3F:→ nopicnic:謝謝你們~~~@@我搞懂了XD 03/22 16:52