电子设计自动化课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子设计自动化课程设计报告
院系:信息工程学院
专业:通信工程
学号:201215714
姓名:
同组人:
指导教师:
目录
一.设计目的和任务......................................... . (1)
二.课程设计要求 (2)
三.考核要求设计步骤 (2)
四.设计步骤 (2)
五.题目 (2)
六.设计方案 (3)
七.程序代码 (3)
八.电路图 (15)
九.状态机状态图 (15)
十.仿真波形图 (16)
十一.管脚分配 (16)
十二.实验效果 (17)
十三.心得和收获 (17)
一、设计目的和任务
电子设计自动化课程设计目的和任务是通过2周的时间,让学生掌握EDA的基本方法,熟悉几种EDA软件(如QuartusII ),并能利用EDA软件设计一个电子技术综合问题,并在实验板上成功下载,为以后进行工程实际问题的研究打下设计基础。
二、课程设计要求
1、认真独立的完成课程设计。
2、通过课程设计,加深对所学知识的理解和认识。
3、利用EDA6000实验箱和EDA实验环境完成所选题目的仿真、调试。
4、写出设计报告。
三、考核要求
1、设计与总结报告20%
2、系统仿真能力20%
3、实际动手调试能力40%
4、创新能力10%
5、态度和纪律10%
四、设计步骤
1、FPGA芯片内部设计:
(FPGA选用EDA6000实验箱上的ACEX1K30TC144-3型。)
(1)所选题目的原理和方案设计;
(2)用VerilogHDL语言设计源代码和测试代码;
(3)QuartusII中进行综合适配;
(4)用QuartusII做后仿真;
(5)下载到EDA6000实验箱上的ACEX1K30TC144-3型FPGA,硬件验证;(6)在EDA6000软件界面中观察上述验证情况。
2、撰写设计报告。
五、题目
流水灯
实验原理用不同的方案实现流水灯的设计,通过各种不同的实现方案,学生可以充分感受到FPGA设计的灵活性,同时可以学到各种不同的编码方式,加深对语法和设计流程的理解。
实验目的:
学习编码、设计规范和技巧
学习Quartusii 和Modelsim 的使用以及联合调试高级技巧
学习Testbench的编写技巧和规范
学习有限状态机FSM
学习用计数器方式分频
学习IP核的使用—PLL
学习FPGA层次化设计技巧
六、设计方案
用一个按键sel来控制流水灯的流向,而流水灯的流动是通过状态机来实现的,设计一个流水灯,由四个LED组成,流动间隔一秒,可以按键控制流向(向左还是右)
实验效果:按下复位键(P67)则四个LED全亮,松开则开始流水效果,按下SEL(P57)则在等待一次闪动后,开始向相反方向流水(原因是在下一个时钟周期内才检测按键)
七、程序代码
1,计数器
module clk_div(
clk,
reset_n,
clk_out
);
parameter cnt_top = 26'd10;
input clk;
input reset_n;
output clk_out;
reg clk_out;
reg [25:0] clk_cnt;
always@(posedge clk or negedge reset_n)
begin
if(!reset_n)
begin
clk_out <= 1'b0;
clk_cnt <= 0;
end
else
begin
if(clk_cnt == cnt_top - 1)
begin
clk_out <= ~clk_out;
clk_cnt <= 0;
end
else
clk_cnt <= clk_cnt + 1'b1;
end
end
endmodule
2,状态机
module state_machine(
clk,
reset_n,
sel,
Q
);
input clk;
input reset_n;
input sel;
output [3:0] Q;
reg [3:0] Q;
wire clk_out;
reg [2:0] sts;
parameter st1 = 2'b00,
st2 = 2'b01,
st3 = 2'b10,
st4 = 2'b11;
always@(posedge clk_out or negedge reset_n)
begin
if(!reset_n)
begin
Q <= 4'b1111;
sts <= st1;
end
else
case(sts)
st1:
begin
Q <= 4'b0001;
if(sel)
sts <= st2;