1654|2

3243

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

夏宇闻老师书第12章仿真测试模块的问题 [复制链接]

代码:

module fsm(Clock,Reset,A,K2,K1);

input Clock,Reset,A;
output K2,K1;

reg K2,K1;
reg [1:0] state,nextstate;
reg A1;	//键值锁存寄存器,每20ms检测一次键值 

parameter
		Idle=3'b000,
		Start=3'b001,
		Stop=3'b010,
		Ccb=3'b011,
		Clear=3'b100;
		
reg[19:0] cnt_20ms;	//20ms计数寄存器

always @ (posedge Clock or negedge Reset)
	if(!Reset) cnt_20ms <= 20'd0;
	else cnt_20ms <= cnt_20ms+1'b1;	//不断计数

always @ (posedge Clock or negedge Reset)
	if(!Reset) begin
			A1 <= 1'b1;	//键值寄存器复位,没有键盘按下时键值都为1
			
		end
	else if(cnt_20ms == 20'hfffff) begin
			A1 <= A;	//按键1值锁存
			
		end
		
always @(posedge Clock)
	if(!Reset)
		state<=Idle;
	else
		state<=nextstate;
		
always @(state or A1)
	case(state)
		Idle:
			if(!A1)
				nextstate=Start;
			else
				nextstate=Idle;
		Start:
			if(A1)
				nextstate=Stop;
			else
				nextstate=Start;
		Stop:
			if(!A1)
				nextstate=Ccb;
			else
				nextstate=Stop;
		Ccb:
			if(A1)
				nextstate=Clear;
			else
				nextstate=Ccb;
		Clear:
			if(!A1)
				nextstate=Idle;
			else
				nextstate=Clear;
		default:
			nextstate=3'bxxx;
	endcase
	
always @(state or Reset or A1)
	if(!Reset)
		K1=0;
	else
		if(state == Clear && !A1)
			K1=1;
		else
			K1=0;

always @(state or Reset or A1)
	if(!Reset)
		K2=0;
	else
		if(state == Stop && A1)
			K2=1;
		else
			K2=0;
			
			
endmodule

现象是按下按键,一个灯反转,再按一次按键,另一个灯翻转,循环往复。

夏老师给了一个仿真测试模块:

`timescale 1 ns/ 1 ps
module t;
// constants                                           
// general purpose registers
//reg eachvec;
// test vector input registers
reg A;
reg Clock;
reg Reset;
// wires                                               
wire K1;
wire K2;

			 
// assign statements (if any)                          

initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
    A=0;
		Reset=1;
		Clock=0;
		#22  Reset=0;
		#100033 Reset=1;
		
// --> end                                             
                     
end                                                    
always #50 Clock=~Clock;
always @(posedge Clock)
	begin
	
	#30 A={$random}%2;
	#(3*50+12);
	end
	

			
initial
	begin #100000 $stop; end
fsm i1 (
// port map - connection between master ports and signals/registers   
	
	.Clock(Clock),
	.Reset(Reset),
	.A(A),
	.K2(K2),
	.K1(K1)
	
	
	
);																
endmodule

我仿真了一下,代表按键的那个曲线有变化,可是代表灯的两个曲线一直是低电平。

请问高手,哪里有错?谢谢!

此帖出自FPGA/CPLD论坛

最新回复

代表按键的那个曲线有变化,软件上的仿真?   详情 回复 发表于 2023-3-31 07:48
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

6856

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

代表按键的那个曲线有变化,软件上的仿真?

此帖出自FPGA/CPLD论坛

点评

是的  详情 回复 发表于 2023-3-31 09:13
 
 

回复

3243

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
Jacktang 发表于 2023-3-31 07:48 代表按键的那个曲线有变化,软件上的仿真?

是的

此帖出自FPGA/CPLD论坛
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表