#FPGA(同步时序电路与异步时序电路)

1.IDE:Quartus II


2.设备:Cyclone II  EP2C8Q208C8N  


3.实验:同步时序电路与异步时序电路


4.时序图:

同步时序电路:

异步时序电路:


5.步骤


6.代码:

同步时序电路代码:

/*
 *同步时序电路代码
 */
module tb_yb(
input      wire        sys_clk,
input      wire        sys_rst_n,
input      wire        key_in,

output     reg         led_out
);

/*
 *同步时序电路
 */
always @ (posedge sys_clk) begin
       if(sys_rst_n == 1'b0)
		      led_out <= 1'b0;
		 else  
		      led_out <= key_in;
end

endmodule

 异步时序电路代码:

/*
 *异步时序电路代码
 */
module tb_yb(
input      wire        sys_clk,
input      wire        sys_rst_n,
input      wire        key_in,

output     reg         led_out
);

/*
 *异步时序电路
 */
always @ (posedge sys_clk or negedge sys_rst_n) begin
       if(sys_rst_n == 1'b0)
		      led_out <= 1'b0;
		 else  
		      led_out <= key_in;
end

endmodule

时序电路仿真代码:

/*
 *时序电路仿真代码
 */
`timescale  1ns/1ns
module tp_tb_yb();

reg  sys_clk;
reg  sys_rst_n;
reg  key_in;

wire led_out;

initial
     begin
	      sys_clk =1'b1;
			sys_rst_n <=1'b0;
			key_in <= 1'b0;
			#20             //延时20ns
			sys_rst_n <=1'b1;
			#210
			sys_rst_n <=1'b0;
			#40
			sys_rst_n <=1'b1;
	  end
	  
always  #10  sys_clk  = ~ sys_clk;     //模拟时钟
always  #20  key_in  <= {$random}%2;    //随机赋值

/*
 *监视窗
 */
initial
     begin
	     $timeformat(-9,0,"ns",6);      //ns单位,无小数位,位宽6位
		  $monitor("@time %t:key_in=%b,led_out=%b",$time,key_in,led_out);
	  end
	  
/*
 *实例化
 */ 
 tb_yb tb_yb_inst(
    .sys_clk      (sys_clk)       ,
    .sys_rst_n    (sys_rst_n)     ,
    .key_in       (key_in)        ,

    .led_out      (led_out)
);

endmodule


  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值