您现在的位置:首页 > >

基于Libero的数字逻辑设计仿真及验证实验实验报告(实验4到8)

发布时间:

___计算机__学院______________专业_____班________组、学号______ 姓名______________协作者______________ 教师评定_________________ 实验题目_________基于 Libero 的数字逻辑设计仿真及验证实验_________

1、 2、 3、 4、 5、

熟悉 EDA 工具的使用;仿真基本门电路。 仿真组合逻辑电路。 仿真时序逻辑电路。 基本门电路、组合电路和时序电路的程序烧录及验证。 数字逻辑综合设计仿真及验证。

实验报告
1、基本门电路
一、实验目的
1、了解基于 Verilog 的基本门电路的设计及其验证。 2、熟悉利用 EDA 工具进行设计及仿真的流程。 3、 学*针对实际门电路芯片 74HC00、 74HC02、 74HC04、 74HC08、 74HC32、 74HC86 进行 VerilogHDL 设计的方法。

二、实验环境
Libero 仿真软件。

三、实验内容
1、掌握 Libero 软件的使用方法。 2、进行针对 74 系列基本门电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试*台代码(可自行编程) ,完成 74HC00、 74HC02、74HC04、74HC08、74HC32、74HC86 相应的设计、综合及仿真。 4、提交针对 74HC00、74HC02、74HC04、74HC08、74HC32、74HC86(任选一个) .... 的综合结果,以及相应的仿真结果。

四、实验结果和数据处理
1、所有模块及测试*台代码清单 ..
//74HC00 代码-与非 //74HC00 测试*台代码

//74HC02 代码-或非 //74HC02 测试*台代码

1

//74HC04 代码-非 //74HC04 测试*台代码

//74HC08 代码-与 //74HC08 测试*台代码

//74HC32 代码-或 //74HC32 测试*台代码

//74HC86 代码-异或 //74HC86 测试*台代码

2、第一次仿真结果(任选一个门,请注明,插入截图,下同)(将波形窗口背景 ................. 。 设为白色,调整窗口至合适大小,使波形能完整显示,对窗口截图。后面实验中的仿真 .. .. 使用相同方法处理)

3、综合结果(截图)(将相关窗口调至合适大小,使 RTL 图能完整显示,对窗口 .. 。 截图,后面实验中的综合使用相同方法处理) 4、第二次仿真结果(综合后) .. 。回答输出信号是否有延迟,延迟时间约为 (截图) 多少? 5、第三次仿真结果(布局布线后) .. 。回答输出信号是否有延迟,延迟时间 (截图) 约为多少?分析是否有出现竞争冒险。

2

2、组合逻辑电路 一、实验目的
1、了解基于 Verilog 的组合逻辑电路的设计及其验证。 2、熟悉利用 EDA 工具进行设计及仿真的流程。 3、学*针对实际组合逻辑电路芯片 74HC148、74HC138、74HC153、74HC85、 74HC283、74HC4511 进行 VerilogHDL 设计的方法。

二、实验环境
Libero 仿真软件。

三、实验内容
1、掌握 Libero 软件的使用方法。 2、进行针对 74 系列基本组合逻辑电路的设计,并完成相应的仿真实验。 3、 参考教材中相应章节的设计代码、 测试*台代码 (可自行编程) 完成 74HC148、 , 74HC138、74HC153、74HC85、74HC283、74HC4511 相应的设计、综合及仿真。 4、74HC85 测试*台的测试数据要求:进行比较的 A、B 两数,分别为本人学号的 末两位,如“89” ,则 A 数为“1000” 数为“1001” ,B 。若两数相等,需考虑级联输入 (级联输入的各种取值情况均需包括) ;若两数不等,则需增加一对取值情况,验证 A、 B 相等时的比较结果。 5、74HC4511 设计成扩展型的,即能显示数字 0~9、字母 a~f。 6、提交针对 74HC148、74HC138、74HC153、74HC85、74HC283、74HC4511(任 . 选一个)的综合结果,以及相应的仿真结果。 ...

四、实验结果和数据处理
1、所有模块及测试*台代码清单 //74HC148 代码
// 74HC148.v module encoder8_3_1(DataIn ,EO,Dataout); input [7:0]DataIn; output EO; output [2:0]Dataout; reg [2:0]Dataout; reg EO; integer I; always@(DataIn)

3

begin Dataout=0; EO=1; for(I=0;I<8;I=I+1) begin if(DataIn [I]) begin Dataout =I; EO=0; end end end endmodule //74HC148 测试*台代码 // testbench.v `timescale 1ns/10ps module testbench_8_3encoder; reg [7:0] in; wire[2:0] out; wire EO; initial begin in='b00000001; repeat(9) #20 in=in<<1; end encoder8_3_1 testbench_8_3encoder(in,EO,out); endmodule //74HC138 代码 //74HC138.v module decoder3_8_1(DataIn,Enable,Eq); input[2:0]DataIn; input Enable; output[7:0]Eq; reg[7:0]Eq; wire[2:0]DataIn; integer I; always @(DataIn or Enable) begin if(Enable) Eq=0; //当输入或使能端发生变化时,开始进行译码 //Enable 为 1 时,输出为 0

4

else for(I=0;I<=7;I=I+1) if(DataIn==I) //语句组 1(4 行) Eq[I]=1; else Eq[I]=0; end endmodule //74HC138 测试*台代码 //testbench.v `timescale 1ns/10ps module testbench; reg[2:0] in; reg enable; wire[7:0] eq; decoder3_8_1 decoder_tb( //按端口名称连接,可不按照端口顺序写出 .DataIn (in), .Enable (enable), .Eq(eq)); initial begin in=0; repeat(20) #20 in=$random; //采用随机函数生成 3 位的输入数据 end initial begin enable=1; #40 enable=0; end endmodule //74HC153 代码 //74HC153.v module mux4_1_a(D0,D1,D2,D3,Sel0,Sel1,Result); input D0,D1,D2,D3; input Sel0,Sel1; output Result; reg Result; always @(D0 or D1 or D2 or D3 or Sel1 or Sel0) 行 begin

//任一输入或选择项发生变化时执

5

case({Sel1,Sel0}) 0:Result=D0; 1:Result=D1; 2:Result=D2; 3:Result=D3; default:Result=1'bx; endcase end endmodule

//根据选择项进行分支控制 //语句 1

//其他情况下输出 x

//74HC153 测试*台代码 //testbench.v `timescale 1ns/1ps module testbench_mux4_1; reg D0,D1,D2,D3,Sel1,Sel0; wire Result; mux4_1_a DUT(D0,D1,D2,D3,Sel0,Sel1,Result); initial begin D0=0;D1=0;D2=0;D3=0;Sel1=0;Sel0=0; #100 D0=1;D1=0;D2=0;D3=1; #100 Sel1=0;Sel0=1; #100 Sel1=1;Sel0=0; #100 Sel1=1;Sel0=1; #100; //加入一些延迟,以便波形显示效果更好 end endmodule //74HC85 代码 // 74HC85.v module comparator_4_a(DataA,DataB,AGEB); input[3:0]DataA,DataB; output AGEB; reg AGEB; always @ (DataA or DataB) begin if(DataA>=DataB) AGEB=1; else AGEB=0; end endmodule

6

//74HC85 测试*台代码 //testbench.v `timescale 1ns/10ps module testbench; reg[3:0] ina,inb; wire AGEB; comparator_4_a comparator_testbench(ina,inb,AGEB); initial begin ina=0; repeat(20) #20 ina=$random; #20 $finish; end initial begin inb=0; repeat(10) #40 end endmodule

inb=$random;

//74HC283 代码 //74HC283.v module halfadder_1(DataA,DataB,Sum,Cout); input DataA,DataB; output Sum,Cout; assign {Cout,Sum}=DataA+DataB; endmodule //74HC283 测试*台代码 // testbench.v `timescale 1ns/10ps module testbench; reg a,b; wire sum,cout; halfadder_1 adder_te(a,b,sum,cout); initial begin a=0;b=0;

7

#20 b=1; #20 a=1; #20 b=0; #20; end endmodule //74HC4511 代码 //74HC4511.v module HC4511(A,Seg,LT_N,BI_N,LE); input LT_N,BI_N,LE; input[3:0]A; output[7:0]Seg; reg [7:0]SM_8S; assign Seg=SM_8S; always @(A or LT_N or BI_N or LE) begin if(!LT_N)SM_8S=8'b11111111; //根据 4511 真值表写出 else if(!BI_N)SM_8S=8'b00000000; else if(LE)SM_8S=SM_8S; else case(A) 4'd0:SM_8S=8'b00111111; //3f(00111111 对应的十六进制数),方便结果查看 //数字按 gfedcba 顺序,最高位 0 表示小数点不 显示 4'd1:SM_8S=8'b00000110; 4'd2:SM_8S=8'b01011011; 4'd3:SM_8S=8'b01001111; 4'd4:SM_8S=8'b01100110; 4'd5:SM_8S=8'b01101101; 4'd6:SM_8S=8'b01111101; 4'd7:SM_8S=8'b00000111; 4'd8:SM_8S=8'b01111111; 4'd9:SM_8S=8'b01101111; 4'd10:SM_8S=8'b01110111; 4'd11:SM_8S=8'b01111100; 4'd12:SM_8S=8'b00111001; 4'd13:SM_8S=8'b01011110; 4'd14:SM_8S=8'b01111001; 4'd15:SM_8S=8'b01110001; default:; endcase end //06 //5b //4f //66 //6d //7d //07 //7f //6f,用 1100111 表示 9 也是可以的 //77 //7c //39 //5e //79 //71

8

endmodule //74HC4511 测试*台代码 `timescale 1ns/10ps module testbench; reg a,b,c; reg [3:0]in; reg [7:0]out; HC4511 decoder(LT_N,BI_N,LE, A,Seg); initial begin in=0; repeat(14) #20 in=$random; end initial begin a=0;b=0;c=0; #40 c=1; #40 b=1; #40 c=0; #40 a=1; #40 b=0; #40 c=1; #40 b=1; end endmodule

2、第一次仿真结果(任选一个模块,请注明) 74HC148

3、综合结果

9

4、第二次仿真结果(综合后) 。回答输出信号是否有延迟,延迟时间约为多少?

输出信号有延迟,延迟时间约为 6、 第三次仿真结果(布局布线后) 。回答输出信号是否有延迟,延迟时间约为多少?分 析是否有出现竞争冒险。

输出信号有延迟,延迟时间约为

,有出现竞争冒险。

10

3、时序逻辑电路
一、实验目的
1、了解基于 Verilog 的时序逻辑电路的设计及其验证。 2、熟悉利用 EDA 工具进行设计及仿真的流程。 3、学*针对实际时序逻辑电路芯片 74HC74、74HC112、74HC194、74HC161 进行 VerilogHDL 设计的方法。

二、实验环境
Libero 仿真软件。

三、实验内容
1、熟练掌握 Libero 软件的使用方法。 2、进行针对 74 系列时序逻辑电路的设计,并完成相应的仿真实验。 3、参考教材中相应章节的设计代码、测试*台代码(可自行编程) ,完成 74HC74、 74HC112、74HC161、74HC194 相应的设计、综合及仿真。 4、提交针对 74HC74、74HC112、74HC161、74HC194(任选一个)的综合结果, .... 以及相应的仿真结果。

四、实验结果和数据处理
1、所有模块及测试*台代码清单
//74HC74 代码 module HC74(D1, Cp1, Rd1n, Sd1n, Q1, Q1n); input D1, Cp1, Rd1n, Sd1n; output Q1, Q1n; reg Q1; assign Q1n = ~Q1; always @ (posedge Cp1) begin case ({Sd1n, Rd1n}) 2'b01: Q1 <= 1; 2'b10: Q1 <= 0; 2'b00: Q1 <= 'bx; 2'b11: Q1 <= D1; endcase end endmodule

11

//74HC74 测试*台代码 `timescale 1ns / 1ps module testbench_HC74; reg d1, cp1, rd1n, sd1n; wire q1, q1n; parameter clock = 10; HC74 test_HC74(d1, cp1, rd1n, sd1n, q1, q1n); initial begin cp1 = 1; end always #(clock/2) cp1 = ~cp1; initial begin {sd1n, rd1n} = 2'b00; d1 = 0; #9; d1 = 1; #10; {sd1n, rd1n} = 2'b01; d1 = 0; #10; d1 = 1; #10; {sd1n, rd1n} = 2'b10; d1 = 0; #10; d1 = 1; #10; {sd1n, rd1n} = 2'b11; d1 = 0; #10; d1 = 1; #10; $finish; end endmodule

//74HC112 代码 module HC112(J, K , Cp, Sdn, Rdn, Q, Qn); input J, K, Cp, Sdn, Rdn; output Q, Qn; reg Q; assign Qn = ~Q;

12

always @ ({Sdn, Rdn}) begin case ({Sdn, Rdn}) 2'b01: Q <= 1; 2'b10: Q <= 0; 2'b00: Q <= 'bx; endcase end always @ (posedge Cp) begin if ({Sdn, Rdn} == 2'b11) begin case ({J, K}) 2'b00: Q <= Q; 2'b01: Q <= 0; 2'b10: Q <= 1; 2'b11: Q <= ~Q; endcase end end endmodule //74HC112 测试*台代码 `timescale 1ns / 1ps module testbench_HC112; reg j, k, cp, sdn, rdn; wire q, qn; parameter clock = 10; HC112 test_HC112(j, k, cp, sdn, rdn, q, qn); initial cp = 1; always #(clock/2) cp = ~cp; initial begin {sdn, rdn} = 2'b00; {j, k} = 2'b10; #9; {j, k} = 2'b01; #10; {sdn, rdn} = 2'b01; {j, k} = 2'b10; #10; {j, k} = 2'b01; #10; {sdn, rdn} = 2'b10; {j, k} = 2'b10; #10; {j, k} = 2'b01;

13

#10; {sdn, rdn} = 2'b11; {j, k} = 2'b00; #10; {j, k} = 2'b01; #10; {j, k} = 2'b10; #10; {j, k} = 2'b11; #10; $finish; end endmodule //74HC161 代码 module HC161(D1, D2, D3, D4, CP, MRn, CEP, CET, PEn, Q1, Q2, Q3, Q4, TC); input D1, D2, D3, D4, CP, MRn, CEP, CET, PEn; output Q1, Q2, Q3, Q4, TC; reg Q1, Q2, Q3, Q4, TC; always @ (MRn or CEP or CET or PEn or posedge CP) begin if (MRn == 0) {TC, Q4, Q3, Q2, Q1} <= 0; else begin if (PEn == 1) begin if (CET == 0) begin {Q4, Q3, Q2, Q1} <= {Q4, Q3, Q2, Q1}; TC <= 0; end else begin if (CEP == 0) begin {TC, Q4, Q3, Q2, Q1} <= {TC, Q4, Q3, Q2, Q1}; end else begin {TC, Q4, Q3, Q2, Q1} <= {TC, Q4, Q3, Q2, Q1} + 1; end end end else begin {Q4, Q3, Q2, Q1} <= {D4, D3, D2, D1}; TC <= 0; end end end endmodule

14

//74HC161 测试*台代码 `timescale 1ns / 1ps module testbench_HC161; reg d1, d2, d3, d4, cp, mrn, cep, cet, pen; wire q1, q2, q3, q4, tc; parameter clock = 10; HC161 test_HC161(d1, d2, d3, d4, cp, mrn, cep, cet, pen, q1, q2, q3, q4, tc); initial cp = 1; always #(clock/2) cp = ~cp; initial begin {d4, d3, d2, d1} = $random; // 异步清零 mrn = 0; #10; //同步清零 mrn = 1; pen = 0; {d4, d3, d2, d1} = 4'b0000; #10; //并行输入 repeat(4) begin {d4, d3, d2, d1} = $random; #10; end //计数 {d4, d3, d2, d1} = 4'b1100; pen = 1; cep = 1; cet = 1; repeat (5) #10; //进位保持 cep = 0; repeat (4) begin {d4, d3, d2, d1} = $random; #10; end //不进位保持 cet = 0; repeat (4) begin {d4, d3, d2, d1} = $random; #10; end $finish;

15

end endmodule //74HC194 代码 module HC194(MRn, S1, S0, Dsr, Dsl, CP, D0, D1, D2, D3, Q0, Q1, Q2, Q3); input MRn, S1, S0, Dsr, Dsl, CP, D0, D1, D2, D3; output Q0, Q1, Q2, Q3; reg Q0, Q1, Q2, Q3; always @ (MRn) begin if (MRn == 0) {Q3, Q2, Q1, Q0} <= 0; end always @ (posedge CP) begin if (MRn == 1) begin case ({S1, S0}) 2'b11: {Q3, Q2, Q1, Q0} <= {D3, D2, D1, D0}; 2'b00: {Q3, Q2, Q1, Q0} <= {Q3, Q2, Q1, Q0}; 2'b01: begin if (Dsr == 0) begin {Q3, Q2, Q1, Q0} <= {Q3, Q2, Q1, Q0} >> 1; Q3 <= 0; end else if (Dsr == 1) begin {Q3, Q2, Q1, Q0} <= {Q3, Q2, Q1, Q0} >> 1; Q3 <= 1; end end 2'b10: begin if (Dsl == 0) begin {Q3, Q2, Q1, Q0} <= {Q3, Q2, Q1, Q0} << 1; Q1 <= 0; end else if (Dsl == 1) begin {Q3, Q2, Q1, Q0} <= {Q3, Q2, Q1, Q0} << 1; Q1 <= 1; end end endcase end end endmodule

16

//74HC194 测试*台代码 `timescale 1ns / 1ps module testbench_HC194; reg mrn, s1, s0, dsr, dsl, cp, d0, d1, d2, d3; wire q0, q1, q2, q3; parameter clock = 10; HC194 test_HC194(mrn, s1, s0, dsr, dsl, cp, d0, d1, d2, d3, q0, q1, q2, q3); initial cp = 1; always #(clock/2) cp = ~cp; initial begin {d3, d2, d1, d0} = $random; //异步清零 mrn = 0; #10; //并行输入 mrn = 1; {s1, s0} = 2'b11; #10; //保持 {s1, s0} = 2'b00; repeat (4) begin {d3, d2, d1, d0} = $random; #10; end //右移补 0 {s1, s0, dsr, dsl} = 4'b0101; repeat (4) #10; //右移补 1 {s1, s0, dsr, dsl} = 4'b0111; repeat (4) #10; //左移补 0 {s1, s0, dsr, dsl} = 4'b1010; repeat (4) #10; //左移补 1 {s1, s0, dsr, dsl} = 4'b1001; repeat (4) #10; $finish; end endmodule

17

2、第一次仿真结果(任选一个模块,请注明)

3、综合结果

4、第二次仿真结果(综合后)

输出信号有延迟,延迟时间约为 300ps. 5、第三次仿真结果(布局布线后)

输出信号有延迟,延迟时间约为 4700ps.

18

4、基本门电路、组合电路和时序电路的程序烧录及验证
一、实验目的
1、熟悉利用 EDA 工具进行设计及仿真的流程。 2、熟悉实验箱的使用和程序下载(烧录)及测试的方法。

二、实验环境及仪器
1、Libero 仿真软件。 2、DIGILOGIC-2011 数字逻辑及系统实验箱。 3、Actel Proasic3 A3P030 FPGA 核心板及 Flash Pro4 烧录器。

三、实验内容
1、 新建一个工程文件, 将前面已经设计好的 74HC00、74HC02、74HC04、 74HC08、 74HC32、74HC86 实例文件导入,在 SmartDesign 窗口分别添加这 6 个模块,完成相应 连线。按实验指导书 P175 的附录 B.3 中所列引脚对应表来分配引脚,最后通过烧录器 烧录至 FPGA 核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参 考教材及实验指导书的相关内容。 2、 新建一个工程文件, 将前面已经设计好的 74HC148、 74HC138、 74HC153、 74HC85、 74HC283 实例文件导入,在 SmartDesign 窗口分别添加这 5 个模块,完成相应连线。按 实验指导书 P176 的附录 B.4 中所列引脚对应表来分配引脚,最后通过烧录器烧录至 FPGA 核心板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材 及实验指导书的相关内容。 3 、 新建 一个 工程 文件, 将前 面已 经设 计 好的 74HC4511 实例 文件 导入 ,在 SmartDesign 窗口添加这 1 个模块,完成相应连线。按实验指导书 P173 的附录 B.2 中所 列引脚对应表来分配引脚, 最后通过烧录器烧录至 FPGA 核心板上。 按分配的引脚连线, 实测相应功能并记录结果。详细步骤请参考教材及实验指导书的相关内容。 4、 新建一个工程文件, 将前面已经设计好的 74HC74、 74HC112、 74HC194、 74HC161 实例文件导入,在 SmartDesign 窗口分别添加这 4 个模块,完成相应连线。按实验指导 书 P178 的附录 B.5 中所列引脚对应表来分配引脚,最后通过烧录器烧录至 FPGA 核心 板上。按分配的引脚连线,实测相应功能并记录结果。详细步骤请参考教材及实验指导 书的相关内容。

四、实验结果和数据处理
表 4-1 74HC00 输入输出状态 输入端 A 0 B 0 LED 输出端 Y 逻辑状态

19

输入端 A 0 1 1 B 1 0 1 LED

输出端 Y 逻辑状态

表 4-2 74HC02 输入输出状态 输入端 A 0 0 1 1 B 0 1 0 1 LED 输出端 Y 逻辑状态

表 4-3 74HC04 输入输出状态 输入端 A 0 1 LED 输出端 Y 逻辑状态

表 4-4 74HC08 输入输出状态 输入端 A 0 0 1 1 B 0 1 0 1 LED 输出端 Y 逻辑状态

表 4-5 74HC32 输入输出状态 输入端 A 0 0 1 1 B 0 1 0 1 LED 输出端 Y 逻辑状态

表 4-6 74HC86 输入输出状态 输入端 A B LED 输出端 Y 逻辑状态

20

输入端 A 0 0 1 1 B 0 1 0 1 LED

输出端 Y 逻辑状态

表 4-7 74LS148 输入输出状态 控制 十进制数字信号输入 I0 X 1 X X X X X X X 0 I1 X 1 X X X X X X 0 1 I2 X 1 X X X X X 0 1 1 I3 X 1 X X X X 0 1 1 1 I4 X 1 X X X 0 1 1 1 1 I5 X 1 X X 0 1 1 1 1 1 I6 X 1 X 0 1 1 1 1 1 1 I7 X 1 0 1 1 1 1 1 1 1 二进制数码输出 A2 A1 A0 状态输出 GS EO

E1
1 0 0 0 0 0 0 0 0 0

注:X 为任意状态 表 4-8 74HC138 输入输出状态 使能输入 数据输入 E3 X X 0 1 1 1 1 1 1 1 1 A2 X X X 0 0 0 0 1 1 1 1 A1 X X X 0 0 1 1 0 0 1 1 A0 X X X 0 1 0 1 0 1 0 1 译码输出

E1
1 X X 0 0 0 0 0 0 0 0

E2
X 1 X 0 0 0 0 0 0 0 0

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

注:X 为任意状态

21

表 4-9 74HC153 输入输出状态 选择输入 S1 X 0 0 1 1 0 0 1 1 S0 X 0 0 0 0 1 1 1 1 1I0 X 0 1 X X X X X X 数据输入 1I1 X X X 0 1 X X X X 1I2 X X X X X 0 1 X X 1I3 X X X X X X X 0 1 输出使能输入 输出 1Y

1E
1 0 0 0 0 0 0 0 0

注:X 为任意状态 表 4-10 比较输入 A3 1 0 1 0 1 0 1 0 1 0 1 0 1 注:X 为任意状态 表 4-11 进位 输入 Cin 0 1 0 A4 0 1 0 4 位加数输入 A3 0 1 1 A2 0 1 1 A1 0 1 1 B4 0 1 0 74HC283 输入输出状态 4 位被加数输入 B3 1 1 0 B2 1 1 1 B1 0 1 0 Cout 输出加法结果和进位 S4 S3 S2 S1 A2 X X 1 0 0 0 1 0 1 1 1 0 1 A1 X X X X 1 0 0 1 0 0 0 0 1 A0 X X X X X X 1 0 1 0 1 0 1 B3 0 1 1 0 1 0 1 0 1 0 1 0 1 B2 X X 0 1 0 0 1 0 1 1 1 0 1 B0 X X X X 0 1 0 1 0 0 0 0 1 B1 X X X X X X 0 1 1 0 1 0 1 IA>B X X X X X X X X 0 0 1 1 0 74HC85 输入输出状态 级联输入 IA=B X X X X X X X X 0 0 0 0 0 IA<B X X X X X X X X 0 1 0 1 1 A>B 输出 A=B A<B

22

进位 输入 Cin 1 1 1 0 A4 0 0 1 1

4 位加数输入 A3 1 1 0 0 A2 0 0 0 0 A1 0 1 0 1 B4 0 0 0 1

4 位被加数输入 B3 1 1 1 0 B2 1 1 1 0 B1 0 1 1 1 Cout

输出加法结果和进位 S4 S3 S2 S1

表 4-12 使能输入 数据输入 LE X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D X X 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 C X X 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B X X 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

74HC4511 输入输出状态 译码输出 A X X 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a b c d e f g

LT
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

BI
X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

注:X 为任意状态 表 4-13 74HC74 输入输出状态 输出 CP X X ↑ ↑ D X X 0 1 1Q

输入 置位输入 1SD 0 1 1 1 复位输入 1R D 1 0 1 1

1Q

23

输入 置位输入 1SD 0 注:X 为任意状态 表 4-14 输入 置位输入 1SD 0 1 1 1 1 0 注:X 为任意状态 表 4-15 输入 模式 串行 DSR X X X 0 1 X X DSL X X X X X 0 1 CP X ↑ ↑ ↑ ↑ ↑ ↑ D0 X D0 X X X X X 并行 D1 X D1 X X X X X D2 X D2 X X X X X D3 X D3 X X X X X Q0n+1 74HC194 输入输出状态 复位输入 1R D 1 0 1 1 1 0 1 CP X X ↓ ↓ ↓ X 1J X X 1 0 1 X 1K X X 1 1 0 X 74HC112 输入输出状态 复位输入 1R D 0 CP X D X 1Q

输出

1Q

输出 1Q

1Q

输出 Q1n+1 Q2n+1 Q3n+1

MR
0 1 1 1 1 1 1

S1 X 1 0 0 0 1 1

S0 X 1 0 1 1 0 0

注:X 为任意状态 表 4-16 输入 74HC161 输入输出状态 输出 D3 X 0 D3 X X X D2 X 0 D2 X X X D1 X 0 D1 X X X D0 X 0 D0 X X X Q3 Q2 Q1 Q0 TC

MR
0 1 1 1 1 1

CP X ↑ ↑ ↑ X X

CEP X X 1 1 0 X

CET X X 1 1 X 0

PE
X 0 0 1 1 1

注:X 为任意状态

24

5、数字逻辑综合设计仿真及验证
一、实验目的
1、进一步熟悉利用 EDA 工具进行设计及仿真的流程。 2、熟悉利用 EDA 工具中的图形化设*缑娼凶酆仙杓啤 3、熟悉芯片烧录的流程及步骤。 4、掌握分析问题、解决问题的综合能力,通过 EDA 工具设计出能解决实际问题的 电路。

二、实验环境
1、Libero 仿真软件。 2、DIGILOGIC-2011 数字逻辑及系统实验箱。 3、Actel Proasic3 A3P030 FPGA 核心板及 Flash Pro4 烧录器。

三、实验内容
1、编码器扩展实验 设计一个电路:当按下小于等于 9 的按键后,显示数码管显示数字,当按下大于 9 的按键后,显示数码管不显示数字。若同时按下几个按键,优先级别的顺序是 9 到 0。 本实验需要两个编码器 74HC148、一个数码显示译码器 74HC4511、一个共阴极 8 段显示数码管 LN3461Ax 和一个数值比较器 74HC85。 2、有符号比较器的设计(选做) .. 设计要求:设计一个电路,比较两个 8 位有符号数的大小,判定是否满足大于等于 的关系。 3、跑马灯设计 设计要求: 共 8 个 LED 灯连成一排,用以下 3 种模式来显示,模式选择使用两个按键进行控 制。 ① 模式 1:先点亮奇数灯,即 1、3、5、7 灯亮,然后偶数灯,即 2、4、6、8 灯亮, 依次循环,灯亮的时间按时钟信号的二分频设计。 ② 模式 2:按照 1、2、3、4、5、6、7、8 的顺序依次点亮所有灯;然后再按 1、2、 3、4、5、6、7、8 的顺序依次熄灭所有灯,间隔时间按时钟信号的八分频设计。 ③ 模式 3:按照 1/8、2/7、3/6、4/5 的顺序依次点亮所有灯,每次同时点亮两个灯; 然后再按 1/8、2/7、3/6、4/5 的顺序熄灭相应灯,每次同时熄灭两个灯,灯亮的时间按 时钟信号的四分频设计。 4、四位数码管扫描显示电路的设计 设计要求:

25

共 4 个数码管,连成一排,要求可以显示其中任意一个数码管。具体要求如下: ① 依次选通 4 个数码管,并让每个数码管显示相应的值,其结果由相应输入决定。 ② 要求能在实验箱上演示出数码管的动态显示过程。 必须使得 4 个选通信号 DIG1、 DIG2、DIG3、DIG4 轮流被单独选通,同时,在段信号输入口加上希望在对应数码管上 显示的数据,这样随着选通信号的变化,才能实现扫面显示的目的(经验数据为扫描频 率大于等于 50Hz) 。 5、交通灯控制器(选做) .. 6、键盘扫描器和编码器(选做) ..

四、实验结果和数据处理
1、编码器扩展实验 (1)SmartDesign 的连线图 (2)功能仿真波形图 (3)综合结果 RTL 图 (4)引脚分配 I/O Attribut Editor 截图(注意:分配时应避开 FPGA 核心板已经占 ... 用的引脚,详情请参考实验指导书图 1-7 的标注;使用键盘及数码管显示扩展板时应按 本文附录中的说明来分配相应的引脚。 ) (5)记录实测结果
表 5-2 74HC148(1)输入 I7 1 1 1 1 1 1 1 1 1 1 1 I6 1 1 1 1 1 1 1 1 1 1 1 I5 1 1 1 1 1 1 1 1 1 1 1 I4 1 1 1 1 1 1 1 1 1 1 1 I3 1 1 1 1 1 1 1 1 1 1 1 I2 1 1 1 1 1 1 1 1 1 1 1 I1 1 1 1 1 1 1 1 1 1 1 0 I0 1 1 1 1 1 1 1 1 1 0 1 I7 1 1 1 1 1 1 1 1 0 1 1 I6 1 1 1 1 1 1 1 0 1 1 1 编码器扩展实验结果记录表 74HC148(0)输入 I5 1 1 1 1 1 1 0 1 1 1 1 I4 1 1 1 1 1 0 1 1 1 1 1 I3 1 1 1 1 0 1 1 1 1 1 1 I2 1 1 1 0 1 1 1 1 1 1 1 I1 1 1 0 1 1 1 1 1 1 1 1 I0 1 0 1 1 1 1 1 1 1 1 1

74HC4511
abcdefg

显示 字形

26

74HC148(1)输入 I7 1 1 1 1 1 0 I6 1 1 1 1 0 1 I5 1 1 1 0 1 1 I4 1 1 0 1 1 1 I3 1 0 1 1 1 1 I2 0 1 1 1 1 1 I1 1 1 1 1 1 1 I0 1 1 1 1 1 1 I7 1 1 1 1 1 1 I6 1 1 1 1 1 1

74HC148(0)输入 I5 1 1 1 1 1 1 I4 1 1 1 1 1 1 I3 1 1 1 1 1 1 I2 1 1 1 1 1 1 I1 1 1 1 1 1 1 I0 1 1 1 1 1 1

74HC4511
abcdefg

显示 字形

2、有符号比较器的设计(选做) .. (1)SmartDesign 的连线图 (2)功能仿真波形图 (3)综合结果 RTL 图 (4)引脚分配 I/O Attribut Editor 截图 (5)记录实测结果(自行选取参与比较数据)
表 5-5 有符号比较器实验结果记录表 输入 DataA[7:0] 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 11111 0 0 1 DataB[7:0] 00000000 10000001 10001100 输出 AGEB

3、跑马灯设计 (1)SmartDesign 的连线图 (2)功能仿真波形图 (3)综合结果 RTL 图 (4)引脚分配 I/O Attribut Editor 截图

27

(5)记录实测结果
表 5-9 rst 1 0 0 0 SI1 X 0 0 1 跑马灯实验记录表 SI2 X 0 1 1 输出状态描述

4、四位数码管扫描显示电路的设计 (1)SmartDesign 的连线图 (2)功能仿真波形图 (3)综合结果 RTL 图 (4)引脚分配 I/O Attribut Editor 截图

5、交通灯控制器(选做) .. 6、键盘扫描器和编码器(选做) ..

28



热文推荐
猜你喜欢
友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报