24小时热门版块排行榜    

查看: 309  |  回复: 0

hkumjnsz

银虫 (小有名气)

[求助] 刚学verilog,请帮解释一个小程序。

module fullAS4(A,B, S, Co, C,V,M);   
input [3:0] A,B;   
output [3:0] S;   
input Co;   
output C,V;  
input M;
reg [3:0]S,S2;  这个S2是什么?
reg C,V;   
reg [1:0]R;  这个R是什么意思?
always @(A,B,Co,M)  
if(M)              
begin        
{C,S}=A+B+Co;      
{R,S2[3],S[2],S[1]}={A[3],A[3],A[2],A[1],A[0]}+{B[3],B[3],B[2],B[1],B[0]}+Co;   这句是什么意思?   
V=(R[1])^(R[0]);    还有这句话。
end  
else              
begin      
B2=~B+1;      
{C,S}=A+B2-Co;   
{R,S2}={A[3],A}+{B2[3],B2}-Co;  
V=(R[1])^(R[0]);  这句话的意思。
end  
endmodule
1.刚得到一个全加减器的code,不是很明白,所以找知道的大神问下。
对于程序不理解的地方,我写在句子后边了。
2.还有一个问题就是,全加减器按照我的印象来说,只需要4个输入(3个输入和一个控制全加或全减的M),两个输出,总共6个就够了,怎么这个程序里7个?(A,B, S, Co, C,V,M )
3.还有就是,如果编test beach的话,怎么编呢?
4.还有最后一个问题,上面这个应该是dataflow level方法编的吧?如果用gate level编,应该怎么编呢?
以上就是这些了。各位看着顺手的回答吧,金币实在不多,问题确实不少,很不好意思。

[ Last edited by hkumjnsz on 2013-6-29 at 15:52 ]
回复此楼

» 猜你喜欢

努力吧,骚年
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hkumjnsz 的主题更新
信息提示
请填处理意见