mshd.net
当前位置:首页 >> vErilog 移位求助 >>

vErilog 移位求助

首先,你的那个第二个移位代码最好加个括号,增加可视性。当第二个clk来的时候,data_out赋的是没有移位前data的data[7],data也同时变成移位后的数。你可以随便写个数字,仿真一下,就明白了.仅仅个人意见。

比如你定义一个寄存器型变量a reg [3:0]a; a

>>是算数右移 根据数据是有符号或无符号类型判断补符号位或零

module yiweijicun(in,out,clk,rst); input [7:0] in; input clk,rst; output [7:0] out; reg [7:0] out; reg [7:0] temp; always @(posedge clk) begin if (!rst) out=0; else begin if(load) temp=in; else begin out=(out

恩 移位寄存器的话这里有两个例子,楼主你参考一下 第一个是用位拼接符来做的,在百度上输入“Verilog 串并转换”很容易就查到了,这个是别人的函数,我把名字换成你的,可以直接用到自己的应用中。 module Serial_to_Para(clk,reset,en,in,out); ...

module barrel_org(s,a_p,b_p); input [2:0] s; input [7:0] a_p; input [7:] b_p; reg [7:0] b_p; always@(a_p or s) begin case(s) 3'b000: begin b_p

看你的代码只能是1bit。如果要扩展到8位 加一个+8‘b0,或者你用concat来做: valueb2, c3>b2, b3>b2, a3>b2, a2>b2, a1>b2, b1>b2, c1>b2}; 建议你看看verilog标准关于bit padding和self determined部分的讲解。 其中对于位移运算符的self deter...

第一:a,b应该定义为reg而非wire; 第二:x,y是输入,好像不用定义类型吧; 第二:你的a,b是24位,而你的 {cout,sum}仅为20位,那这个{cout,sum}=a+b+cin有问题;

//这个程序串行输入,并行8位输出 module yiwei(in,clk,en,clr,set,out); input en,set,clk,clr; input in; output [7:0] out; reg [7:0] out; always@(posedge clk or negedge clr) begin if(!clr)//异步清零 begin out

x

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com