关于verilog的几个小问题

anglesccs   2010-2-21 19:07 楼主
各位兄弟姐妹大家好,小弟这两天正在苦心学习verilog,书中看到一段话不太明白:
简单的十进制数格式的整数代表一个有符号的数,负数可使用两种补码形式表示。因此32在5位的二进制形式中为10000,在6位二进制形式中为110001;-15在5位的二进制形式中为10001,在6位二进制形式中为110001。
请问第一个110001是不是错了?如果错了,那应该是什么?
第二个110001是直接在10001之前补1得来的么?



另外还有一个问题,书中有这么一例:
//带6个隐含寄存器的电路
module count(clock,reset,and_bits,or_bits,xor_bits);
        input clock,reset;
        output and_bits,or_bits,xor_bits;
        reg and_bits,or_bits,xor_bits;
        reg [2:0] count;
                always @(posedge clock)begin
                if(reset)
                        count=0;
                else
                        count=count+1;
                        and_bits=&count;
                        or_bits=|count;
                        xor_bits=^count;
                end
endmodule
书上说在这个例子里共用了6个触发器,其中3个保存count的值,其他的分别保存and_bits,or_bits和xor_bits的值。
小弟不才,不知触发器是什么,请大哥大姐们指点指点。谢谢。

回复评论 (6)

关注中    sdfvg
点赞  2010-2-22 04:45
关于触发器,建议先好好学学数字电路,这个一两句话很难说清的
点赞  2010-2-22 11:40
reg and_bits,or_bits,xor_bits;
reg [2:0] count; //reg定义寄存器变量,Verilog看起来依旧那么亲切
点赞  2010-2-22 13:25
Verilog编程时脑子里一定要有时钟跳变的概念
点赞  2010-2-22 13:26
个人认为:32在5位二进制中表示为00000,无法表示,因为除去符号位,剩下4位,表示不了32这么大的数。只能最多表示15。
-15在5位二进制中可以表示, 补码就是符号位为1,其他各位 "逐位求反,末位加1",所以是正确的

11111→10000→10001
101111→110000→110001
后面俩是正确的
点赞  2010-2-25 01:12
楼上正确,-15的补码 就是 10001
最高位是符号位,负数的符号位是1
原码:11111 -》 反码 10000 -》 补码 10001
点赞  2010-2-25 04:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复