集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2564|回复: 6

【求助】Verilog问题

[复制链接]
lcy1991 发表于 2012-2-19 12:15:56 | 显示全部楼层 |阅读模式
声明输出端口后可以把输出端口定义为reg类型吗?
如何把寄存器类型引出到输出端口?
我是个菜鸟,还请各位大神们帮助解答疑惑,谢谢
至芯兴洪 发表于 2012-2-19 12:27:54 | 显示全部楼层
module reg_m(clk,rst,reg_o);
input clk;
input rst;
output [4:0] reg_o;

reg [4:0]reg_o;
always @(posedge clk or negedge rst)
begin
   if(!rst)
    reg_o<=4'd0;
else
   reg_o<=reg_o+1'b1;
end

endmodule
 楼主| lcy1991 发表于 2012-2-19 12:53:54 | 显示全部楼层
回复 2# 至芯兴洪
多谢多谢
 楼主| lcy1991 发表于 2012-2-19 14:50:32 | 显示全部楼层
回复 2# 至芯兴洪
想再问你一个问题啊,一个8位乘法器


module multiplier_8bit(opa,opb, result );
         input [8:1]  opa;
         input [8:1]  opb;
         output [16:1] result;
   
         reg [8:1] a,b;
         integer i;
         reg [16:1] result;
       
        always@(opa or opb)
                 begin
                 a=opa;
                 b=opb;
                 result=0;
                for(i=0;i<8;i=i+1)
                         begin
                            if(a[1]) result=result+b;
                            a=a>>1;
                            b=b<<1;
                         end
                 
                 end

    endmodule
测试的时候积的高8位与结果不符,能帮我检查一下错误吗
至芯兴洪 发表于 2012-2-21 19:03:43 | 显示全部楼层
你这样写不对吧
 楼主| lcy1991 发表于 2012-2-22 20:56:50 | 显示全部楼层
回复 5# 至芯兴洪


    那该如何写呢?就是想用移位相加实现乘法器
w0394 发表于 2012-2-29 11:55:01 | 显示全部楼层
回复 4# lcy1991

   b=b<<1;
时 位数变了而你写的b的位数为8位,改一下就可以了
module mult(out,a,b);
parameter size=8;
input[size:1] a,b;//二个操作数
output[2*size:1] out;//结果
reg[2*size:1] out,temp_a;
reg[size:1] temp_b;
integer i;
always @(a,b)

begin
  out=0;
  temp_a=a;
  temp_b=b;
  for(i=0;i<size;i=i+1) //for语句,size为循环次数
  begin
    if(temp_b[1])
    out=out+temp_a;
    temp_a=temp_a<<1;
    temp_b=temp_b>>1;
  end
end
endmodule
我试过可以的
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-25 03:56 , Processed in 0.075905 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表