电子设计自动化课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档