时序逻辑电路实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电子技术实验报告
实验名称:时序逻辑电路
班级姓名学号
实验日期年月日交报告日期年月日
时序逻辑电路
一、设计要求
1.设计一个秒脉冲发生器,用LED指示秒脉冲的发送。
2.设计一个带有异步清零和同步置数信号的4位寄存器,并在开发板上验证。
二、实验内容
任务1:秒脉冲发生器
(1)源文件——ge.v
module ge(
input clr,
input clk,
output LED
);
parameter T1s = 26'b10_1111_1010_1111_0000_1000_0000;
reg [26:0] Count1;
always @ (posedge clk or posedge clr)
begin
if(clr==1)
Count1<=0;
else if(Count1==T1s)
Count1<=0;
else
Count1<=Count1 + 1;
end
reg rled;
always @ (posedge clk or posedge clr)
begin
if(clr==1)
rled<=0;
else if(Count1==T1s)
rled<=~rled;
end
assign LED=rled;
endmodule
(2)约束文件——ge.ucf
NET"clk"LOC="B8"; //时钟
NET"clr"LOC="N3"; //SW7
NET"LED"LOC="G1"; //LED7
(3)开发板验证
当将开关SW7拨到1,LED7每隔1s闪烁一次。
任务2:四位寄存器(异步清零,同步置数)
(1)源文件——ge1.v
module ge1(clr,clk,d,load,q);
input clr,clk,load;
input[3:0] d;
output[3:0] q;
reg[3:0] q;
always@(posedge clk or posedge clr)
if(clr)
q<=0; //异步清零
else
if(!clr && load) //同步置数
begin
q[0]<=1;q[1]<=1;q[2]<=1;q[3]<=1;
end
else
q<=d;
endmodule
(2)约束文件——ge1.ucf
NET"clk"LOC="B8"; //MCLK
NET"clr"LOC="P11"; //SW0
NET"load"LOC="L3"; //SW1
NET"d[3]"LOC="G3"; //SW4
NET"d[2]"LOC="F3"; //SW5
NET"d[1]"LOC="E2"; //SW6
NET"d[0]"LOC="N3"; //SW7
NET"q[3]"LOC="N5"; //LD4
NET"q[2]"LOC="N4"; //LD5
NET"q[1]"LOC="P4"; //LD6
NET"q[0]"LOC="G1"; //LD7
(3)仿真文件——test_ge1.v
#100;
clr=1;
#200;
clr=0;clk=1;d=0100;
#200;
clk=0;d=1100;
#200;
clk=1;d=1001;
#200;
clk=0;d=0011;
#200;
clk=1;d=0000;
#200;
clk=0;d=0010;
#200;
clk=1;load=1;
(4)仿真波形:
分析:当clr=0,清零,q无输出;
当clr0,且load=1时,当时钟信号的上升沿到来时,q=1111,下降沿时q 值不变;
当clr0,且load1时,当时钟信号的上升沿到来后,q=d,下降沿时q值不变;
LED灯就对应的改变亮灭,可能需要等最多1秒钟。