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); ...

很简单啊,大括号内是一个拼接数据,数据位数是括号内数据位数之和,从左到右,依次从高位到低位排列; 下面的式子表示数据的高八位和低八位相加赋给其他信号

reg [15:0] a; reg [15:0] b; reg [31:0] c; ..... always@ (....) if(....) c

第一: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

看你的代码只能是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...

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