广工基于Libero的数字逻辑设计仿真及验证实验实验报告6.docx
《广工基于Libero的数字逻辑设计仿真及验证实验实验报告6.docx》由会员分享,可在线阅读,更多相关《广工基于Libero的数字逻辑设计仿真及验证实验实验报告6.docx(12页珍藏版)》请在冰豆网上搜索。
广工基于Libero的数字逻辑设计仿真及验证实验实验报告6
6、数字逻辑综合设计仿真及验证
一、实验目的
1、进一步熟悉利用EDA工具进行设计及仿真的流程。
2、熟悉利用EDA工具中的图形化设计界面进行综合设计。
3、熟悉芯片烧录的流程及步骤。
4、掌握分析问题、解决问题的综合能力,通过EDA工具设计出能解决实际问题的电路。
二、实验环境
1、Libero仿真软件。
2、DIGILOGIC-2011数字逻辑及系统实验箱。
3、ActelProasic3A3P030FPGA核心板及FlashPro4烧录器。
三、实验内容
1、循环数码显示
在学生自己的工程项目文件中,新建一SmartDesign文件,命名要求:
姓名拼音首字母+下划线+cp1,测试文件名:
test+下划线+cp1
使用SmartDesign工具进行设计,要求如下:
(1)使用已设计的74HC161、74HC85、74HC4511模块,及IP核中ActelMacros库中的反相器模块(INV),在SmartDesign画布中设计下图左框中的模块。
设计完成后,将SmartDesign画布中的设计截图。
(截图)
(2)设计相应的测试平台。
测试平台中的数据要求所输入的A3A2A1A0及B3B2B1B0分别为学生学号末四位的最小数及最大数所对应的二进制数。
//测试平台代码
(3)第一次仿真结果
(4)综合结果
(5)布局布线(引脚分配截图)。
注意,布局布线时输入引脚应避开FPGA板中上下两排排针引脚,输出74HC4511的a~g固定的FPGA引脚如下:
74HC4511输出
a
b
c
d
e
f
g
dp(小数点)
DIG1
DIG2
DIG3
DIG4
FPGA引脚
76
77
78
79
80
81
82
83
84
85
86
90
(6)第三次仿真结果(布局布线后)
(7)烧录。
完成后给老师检查。
2、4位学号显示
设计要求:
4位数码管依次显示本人学号末4位。
SmartDesign文件命名要求:
姓名拼音首字母+下划线+cp2,测试文件名:
test+下划线+cp2
3、交通灯控制器
设计要求:
交通路口东西向和南北向各有红、黄、绿三种交通灯,按“东西向红灯亮,南北向绿灯亮东西向红灯亮,南北向黄灯亮东西向绿灯亮,南北向红灯亮东西向黄灯亮,南北向红灯亮”顺序循环变化,试设计状态机实现此功能。
应考虑的问题:
每一个状态的时间长度不同。
书上已有代码,考虑是否有更简单的方法。
设计模块或SmartDesign文件命名要求:
姓名拼音首字母+下划线+cp3,测试文件名:
test+下划线+cp3
4、跑马灯设计
设计要求:
共8个LED灯连成一排,用以下4种模式来显示,模式选择使用两个按键进行控制。
①模式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:
输入8位初始状态后,按向左移位循环点亮的方式进行变化。
(此为补充模式)
设计模块或SmartDesign文件命名要求:
姓名拼音首字母+下划线+cp4,测试文件名:
test+下划线+cp4
四、实验结果和数据处理
针对所完成的设计,填写以下内容,烧录后给老师检查。
1、循环数码显示
(1)代码
测试代码:
`timescale1ns/1ns
moduletest_cp1;
regMR,CP;
regA0,A1,A2,A3,B0,B1,B2,B3;
wirek,b,c,d,e,f,g;
hyf_cp1u16(.MR(MR),.CP(CP),.A0(A0),.A1(A1),.A2(A2),.A3(A3),.B0(B0),.B1(B1),.B2(B2),.B3(B3),.Ya(k),.Yb(b),.Yc(c),.Yd(d),.Ye(e),.Yf(f),.Yg(g));
initial
begin
MR=0;
CP=0;
#20MR=1;
repeat(50)
#9CP=~CP;
end
initial
begin
#10{A3,A2,A1,A0}=0;
{B3,B2,B1,B0}=4'b0101;
end
endmodule
(2)SmartDesign的连线图
(3)功能仿真波形图
第一次仿真:
第三次仿真:
(3)综合结果RTL图
(5)布局布线引脚分配截图
2、4位学号显示
(1)代码
测试代码:
`timescale1ns/1ns
moduletest_cs3;
regclk;
regreset;
wiredp;
wire[0:
6]dataout;
wire[3:
0]dig;
hyf_cp2u17(.clk(clk),.reset(reset),.DP(dp),.dig(dig),.dig_0(dig_0),.dig_1(dig_1),.dig_2(dig_2),.dataOut(dataout),.dataOut_0(dataOut_0),.dataOut_1(dataOut_1),.dataOut_2(dataOut_2),.dataOut_3(dataOut_3),.dataOut_4(dataOut_4),.dataOut_5(dataOut_5));
always#10clk=~clk;
initial
begin
clk=0;
reset=0;
#20reset=1;
#20reset=0;
#500$finish;
end
endmodule
各模块代码:
moduleDig(digin,dig);//数码管接地端
input[3:
0]digin;
output[3:
0]dig;
assigndig=digin;
endmodule
moduleshumaguan(Data,Sl,Clk,Reset);//四位数码管扫描显示学号末4位
output[3:
0]Data;
output[3:
0]Sl;
inputClk,Reset;
reg[3:
0]Sl,Data;
reg[1:
0]count;
always@(posedgeClkorposedgeReset)
begin
if(Reset)
count=0;
else
count=count+1;
end
always@(count[1:
0])
begin
case(count[1:
0])
2'b00:
//显示个位1
begin
Data=4'b0001;
Sl=4'b1110;
end
2'b01:
//显示十位1
begin
Data=4'b0001;
Sl=4'b1101;
end
2'b10:
//显示百位5
begin
Data=4'b0101;
Sl=4'b1011;
end
2'b11:
//显示千位6
begin
Data=4'b0110;
Sl=4'b0111;
end
endcase
end
endmodule
moduleHC4511(LE,BI,LT,dataIn,dp,dataOut);//74HC4511
inputLE,BI,LT;
input[3:
0]dataIn;
outputdp;
output[0:
6]dataOut;
reg[0:
7]SM_8S;
assigndp=SM_8S[7];
assigndataOut=SM_8S[0:
6];
always@(LE,BI,LT,dataIn)
begin
if(!
LT)
SM_8S=8'b11111111;
elseif(!
BI)
SM_8S=8'b00000000;
elseif(LE)
SM_8S=SM_8S;
else
case(dataIn)
4'd0:
SM_8S=8'b11111100;
4'd1:
SM_8S=8'b01100000;
4'd2:
SM_8S=8'b11011010;
4'd3:
SM_8S=8'b11110010;
4'd4:
SM_8S=8'b01100110;
4'd5:
SM_8S=8'b10110110
4'd6:
SM_8S=8'b00111110;
4'd7:
SM_8S=8'b11100000;
4'd8:
SM_8S=8'b11111110;
4'd9:
SM_8S=8'b11100110;
4'd10:
SM_8S=8'b11101110;
4'd11:
SM_8S=8'b00111110;
4'd12:
SM_8S=8'b10011100;
4'd13:
SM_8S=8'b01111010;
4'd14:
SM_8S=8'b10011110;
4'd15:
SM_8S=8'b10001110;
default:
;
endcase
end
endmodule
(2)SmartDesign的连线图
(3)功能仿真波形图
第一次仿真:
第二次仿真:
第三次仿真:
(4)综合结果RTL图
(5)布局布线引脚分配截图