集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1248|回复: 1

请教一个关于reg寄存器的问题

[复制链接]
UML2011 发表于 2012-3-23 15:38:13 | 显示全部楼层 |阅读模式
本帖最后由 UML2011 于 2012-3-23 15:49 编辑

代码如下:
module test(sdram1,sdram2,sdram3,clk,Reset,Gx,Gy,Gxy);
//-------------------------------------------------------------//
input  [11:0] sdram1,sdram2,sdram3;
input  clk, Reset;
output [13:0] Gxy;
output [12:0] Gx,Gy;
reg [3:0] state_reg,next_state;
parameter s0=4'b0001,s1=4'b0010,s2=4'b0100,s3=4'b1000;
reg [11:0] z1,z2,z3,z4,z5,z6,z7,z8,z9;
reg [12:0] sec1,sec2,sec3,sec4;
reg [12:0] x,y;
reg [13:0] xy;
assign Gx=x;
assign Gy=y;
assign Gxy=xy;
//-------------------------------------------------------------
always@(posedge clk or negedge Reset)
begin
if(!Reset)
  state_reg<=s0;
else
  state_reg<=next_state;
end
//-------------------------------------------------------------
always@(posedge clk)
begin
case(state_reg)
s0:begin
z3<=z2;z2<=z1;z1<=sdram1;  //sdram1->z1->z2->z3
z6<=z5;z5<=z4;z4<=sdram2;  //sdram2->z4->z5->z6
z9<=z8;z8<=z7;z7<=sdram3;  //sdram3->z7->z8->z9
next_state=s1;                        
   end      
s1:begin
sec1=z7+z8+z8+z9;                    //(z7+2z8+z9)  S
sec2=z1+z2+z2+z3;                    //(z1+2z2+z3)  N
sec3=z3+z6+z6+z9;                    //(z3+2z6+z9)  E
sec4=z1+z4+z4+z7;                    //(z1+2z4+z7)  W
next_state=s2;                        
   end
s2:begin
if(sec1>sec2)
  x=sec1-sec2;                 //|Gx|
else
  x=sec2-sec1;
if(sec3>sec4)
  y=sec3-sec4;                 //|Gy|
else
  y=sec4-sec3;               
next_state=s3;                        
   end
s3:begin
xy=x+y;   
   end
default: next_state=s0;
endcase
end
endmodule  
向各位请教一下,为什么sec1、sec2、sec3、sec4的值输出的不正确?正确的值应该是21、8、19、16。而且z1、z2、z3、z4、z5、z6、z7、z8、z9的输出是对的。功能仿真图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
ChenDongKui 发表于 2012-3-28 13:21:00 | 显示全部楼层
因为sec1、sec2、sec3、sec4只在状态机为next_state=s1才改变它们的值;
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2025-6-25 10:42 , Processed in 0.077083 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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