module MyProject(A,B,k,right,F);
input [31:0]A;
input [31:0]B;
input [4:0]k;
input right;
output reg [31:0]F;
reg [31:0]F1;
integer i,j;
initial
begin
assign F1=(A&~B)+(~A&B);
for(j=0;j<k;j=j+1)
begin
if(right==1)
begin
for(i=0;i<32;i=i+1)
begin
F1[i]=F1[i+1];
if(i==31)
F1[i]=0;
end
end
else if(right==0)
begin
for(i=31;i>-1;i=i-1)
begin
F1[i]=F1[i-1];
if(i==0)
F1[i]=0;
end
end
end
for(i=0;i<32;i=i+1)
F[i]=F1[i];
//F=F1;
end
endmodule
-5
A
回答
1
你的代码得到了在这个问题有点混乱 - 这里是一个与输入的原代码的问题在这里与新线更换线路:
module MyProject(A,B,k,right,F);
input [31:0]A;
input [31:0]B;
input [4:0]k;
input right;
output reg [31:0]F;
reg [31:0]F1;
integer i,j;
initial
begin
assign F1=(A&~B)+(~A&B);
for(j=0;j
begin
if(right==1)
begin
for(i=0;i<32;i=i+1)
begin
F1[i]=F1[i+1];
if(i==31)
F1[i]=0;
end
end
else if(right==0)
begin
for(i=31;i>-1;i=i-1)
begin
F1[i]=F1[i-1];
if(i==0)
F1[i]=0;
end
end
end
for(i=0;i<32;i=i+1)
F[i]=F1[i];
//F=F1;
end
endmodule
我猜测的目的是对输入A和B执行逻辑运算,然后生成一个移位输出。我想你接近,但也有一些需要纠正的几件事情:
功能只是有一个初始块,所以当模拟器启动时,它总是会自动运行一次,它永远不会再次运行。你没有提到赋值是否要创建一个连续生成输出F的函数(即一堆没有寄存器的门)或者一个函数在时钟边沿评估“A/B/k/right”,然后生成输出。如果要创建组合函数,那么当需要用“always @ *”替换“initial”时,每次输入值更改时都会重新运行该函数,并且还需要将reg的值更改为电线。如果你正在创建一个注册块,你将需要添加一个时钟。对于钟控移位寄存器的一个很好的例子,您可能会使用look at this code。
在初始块内有一个assign语句。赋值语句表示Verilog中始终为真的表达式,因此它们超出了程序块。分配语句为寄存器赋值 - 分配语句应该与电线配对。
程序代码使用F1寄存器作为输入和输出,但F1已被赋值。我建议将其分成两步,主要计算(A & B)+(A A & B)并将其分配给F1。然后写一个程序块来执行F1输入到输出,这可能是一个电线或寄存器取决于#1的回答
希望有所帮助。
+0
非常感谢你肯:D它真的帮助我感谢。 :) @肯Boorom –
相关问题
- 1. 长型,左移,右移位操作
- 2. 移位寄存器Verilog
- 3. 我试图做一个动态范围偏移,但我得到
- 4. 我试图做三个骰子滚动,并显示他们的输出,但我试图找出它的麻烦。
- 5. GLSL - 左,右移位操作问题
- 6. 试着抓住C#我该怎么做?
- 7. 我试着用VB
- 8. 出界外的输出,但跑了我想要它做的
- 9. 从右向左移动文本,但启动从左开始位置
- 10. 即使用户输入如“xXXxX”,我如何更改“Xxxxx”格式的值? Java的
- 11. 左右移动UIButton
- 12. 我pygame的精灵可我左右移动,但我不能让它停在屏幕的结束
- 13. 我的KML层出,但其在左面
- 14. 你能帮我做这个算法“将字符串向右或向左移动”
- 15. 我试着使用Node.js的
- 16. 如何使用右移器实现左移器?
- 17. 当我使用左转盘时,右转盘移动了吗?
- 18. ActionScript MovieClip移动到左侧,但不是右侧
- 19. 在C位移位是我的位?
- 20. 我试着去地图上显示我的当前位置,但是当我在模拟器中运行我的代码,这是行不通的
- 21. 用Jasmine-jQuery我试着用夹具HTML但是测试不通过
- 22. 如何让我的文本从右到左在PHP中移动?
- 23. 为什么我的多路复用器不能在Verilog中产生输出?
- 24. 随着键盘(左侧和右侧)在闪存中移动
- 25. CSS - 如何使一个相对元素跟着我上下,但不是左和右?
- 26. 我试着使用PHP
- 27. 做线性反馈移位寄存器的不对模块的Verilog
- 28. 我的php函数做我想要的,但输出将字符转换为ASCII
- 29. verilog红外输出
- 30. 如何将Oracle Apex 4.2表格左右移动(移位)?
这是很多修复的方法,不,用户不会愿意为您修复并通过电子邮件发回给您。我已经将第一行作为示例进行了修正,您应该可以通过这种方式工作:)代码采用缩进格式,您必须正确缩进并删除所有“在此输入代码”文本。 – jotadepicas