FPGA课程设计报告书模板

合集下载

FPGA课程设计报告

FPGA课程设计报告

FPGA课程设计报告学部:信息科学与技术学部专业:通信工程班级:10级1班学号:姓名:万洁指导老师:祝宏合作伙伴:张紫君一.《任务书》:实验一 100进制的可逆计数器(11——12周)实验二交通灯控制系统(15周)实验三多功能数字钟系统(14-15周)二.实验书写格式:一:题目要求二:程序代码三:操作步骤及运行结果截图四:心得体会三.实验附录:一:老师提供的资源二:关于实验所用EP4CE115F29板的简介实验一 100进制的可逆计数器一、设计一个可控的100进制可逆计数器,要求用实验箱下载。

(1)计数器的时钟输入信号周期为200ns。

(2)以十进制形式显示。

(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。

二、程序如下:module keni100(CLR,CLK,PLUS,MINUS,OUT);——图在出现的输入界面内输入程序,点击file→save as,在出现的对话框中点击Yes,然后在出现的new project Wizard对话框中点击next,在Family&Device Settings 对话框中选择如下图所示的选项,在选择第三方软件的对话框中的选项选为none后点击next,在随后出现的对话框中,点击finish。

设置完成。

——图2、点击project→Set as Top-Level Entity,指向所输入的文件。

3、点击Processing→Start→Start Analysis & Synthesis。

——图4、点击File→New出现上面第一步时出现的对话框,如图,选择Vector Waveform File。

5、点击View→Utility Windows→Node Finder,在出现的对话框中点击List,如下图所示——图选择所需要的节点,将其拉到后面的Name栏中,并设置输入数据6、选择End Time:点击Edit→End Time,设置参数,如下图所示——图7、输入参数的数据设置完成后,保存,仿真图形如下图所示:——图8.点击Assigment→Settings,在出现的对话框(如图所示)中,选择Simulator Settings,在Simulation mode中选择Functional,进行功能编译。

FPGA课程设计报告

FPGA课程设计报告

FPG课程设计—256个8位计数器技术规范一、实现功能:用一个8×256的单口RAM完成256个8位计数器,计数器的初值分别为0-255,时钟频率为10MHz,计数器计数频率为5/256MHz。

具体功能描述如下:1、分频模块:时钟频率为10MHz,要实现计数器计数频率为5/256MHz,将其时钟频率进行2分频送入。

每来一个时钟,计数器计一个数。

第一个时钟来时,第一个计数器计1,此时,此计数器中的值变为1,其余的计数器中的值不变,以此类推,直到第256个时钟来时,第256个计数器计1,计数器中的值255变为0,以此类推,完成256个8位计数器,得到计数器计数频率即为5/256MHz。

2、8x256的单口RAM模块:定义一块内存为8x256的单口RAM,只有一条地址线,读写共用一个地址单元,当使能信号we=1时,写有效,可以将数据写入RAM,当使能信号we=0,读有效,可以将RAM中的值输出。

3、写模块:当时能信号we=1时,写有效,当clk的上升沿到来时,可以将数据写入寄存器,在时钟的上升沿和reset的下降沿时,如果reset=0,则地址addr=0,计数器a=0;否则,如果使能信号we=1,地址addr递加,当addr大于255时,addr=0,计数器a=a+1,将addr+a送入数据输入data_in.。

二、系统I/O管脚的描述:三、拟选用的FPGA类型:ep1cq240c8n总体设计方案一、整体设计方案我构想了如下两个总体设计方案:第一个总体设计方案:将10MHz的时钟clk_in通过分频器进行2分频送入系统clk,触发条件是clk的上升沿,这就可以实现计数器计数频率为5/256MHz。

由于是单口RAM,所以只有一条地址线,要么只能写入数据,要么只能读出数据。

因此,我先将所有的寄存器清零,将0—255这256个计数器初值分别送入256个寄存器,此时采用一个加法计数器完成。

然后每来一个时钟clk,计数器中的值计1,同时地址加1,即第一个寄存器的0变成1,地址加到第二个寄存器,以此类推,完成256个8位计数器的计数,并且将计数器的值读出。

FPGA课程设计实验报告

FPGA课程设计实验报告

1.标题多功能数字钟电路的分层次设计2. 内容摘要设计一个具有时、分、秒计时的电子钟电路,按24小时制计时。

①准确计时,以数字形式显示时、分、秒的时间;②具有分、时校正功能,校正输入脉冲频率为1Hz;③具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒、57秒时发出4声500Hz低音,在59分59秒发出一声1KHz高音,它们的持续时间均为1秒,最后一声高音结束时刻恰为正点时刻;④具有定时闹钟功能,且最长闹铃时间为1分钟。

3. 总体方案或工作原理示意框图(或流程图)①模24计数器的Verilog HDL设计(counter24.v)小时计数器的计数规律为00—01—…—22—23—00…,即在设计时要求小时计数器的个位和十位均按BCD码计数。

②模60计数器的Verilog HDL设计(counter60.v)分和秒计数器的计数规律为00—01—…—58—59—00… ,可见个位计数器从0~9计数,是一个10进制计数器;十位计数器从0~5计数,是一个六进制计数器。

可以先分别设计一个十进制计数器模块(counter10.v)和一个六进制计数器模块(counter6.v),然后将这两个模块组合起来,构成六十进制计数器。

4. 顶层逻辑电路图组成及原理简单叙述仿真波形如下:分析结论:经仿真波形分析①走时正常;②能〝校时〞〝校分〞;③整点报时;④时段控制到位。

功能完全符合设计要求,可以下载。

5. 对应各模块功能仿真波形(数据分析)分析及结论1、小时计时模块:仿真波形:当小时的高四位为0、1时,小时的低四位为九时,在下一个时钟的上跳延来了之后,高四位加一;当小时的高四位为2,同时低四位为3时,小时的高低四位都清零。

实现从00到23的循环计数。

2、分钟计时模块:仿真波形:当分钟的高四位为0、1、2、3、4时,小时的低四位为九时,在下一个时钟的上跳延来了之后,高四位加一;当分钟的高四位为5时,同时低四位为9时,分钟的高低四位都清零,实现从00到59的循环计数。

fpga课程设计报告

fpga课程设计报告

第一部分 EDA技术的仿真1、奇偶校验位产生器1.1奇偶校验位的技术要求奇偶校验是通信中常用的一种数据校验方式,试设计一个奇偶校验位产生器,根据输入字节(8位)产生相应的奇偶校验位(1的个数为奇数时输出低电平,即奇校验位为1)和偶校验位(1的个数为偶数时输出高电平,即偶校验位为1)1.2奇偶校验位的原理通过计算数据中“1”的个数是奇数还是偶数来判断数据的正确性。

在被校验的数据后加一位校验位或校验字符用作校验码实现校验。

其生成方法是:奇校验:确保整个被传输的数据中“1”的个数是奇数个,即载荷数据中“1”的个数是奇数个时校验位填“0”,否则填“1”;偶校验:确保整个被传输的数据中“1”的个数是偶数个,即载荷数据中“1”的个数是奇数个时校验位填“1”,否则填“0”。

1.3奇偶校验位的功能及其仿真波形奇偶校验位的功能具体见下表所示:输入8位的二进制序列奇校验位even偶校验位odd1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 1其具体实现程序如下所示:module parity(data,odd,even);input [0:7]data;output odd,even;assign odd=^data;assign even=~odd;endmodule根据程序我们得到如下的仿真波形:图1 奇偶校验位仿真波形中国计量学院信息工程学院课程设计报告P.22、十六位数据选择器2.1数据选择器的原理在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,数据选择器(MUX)的逻辑功能是在地址选择信号的控制下,从多路数据中选择一路数据作为输出信号。

在数据选择器中,我们设定一个控制输入端ENA ,当ENA=1时,电路不能工作,输出Y=0;而当ENA=0时,电路才处于工作状态。

由于我们设计的是16选1数据选择器,因而其有4个数据控制端,即S0,S1,S2,S3,根据这4个控制端的状态有选择性的输出。

FPGA课程设计报告

FPGA课程设计报告

FPGA课程设计设计任务1.基于Quartus II软件完成十进制加法计数器、分频器、数码管动态扫描显示设计;2.采用Modelsim仿真软件对上述设计进行仿真验证;3.将上述各模块按照一定的连接关系连接,使其实现功能。

一、总体设计方案设计一个led秒钟系统,8位数码管同时显示秒数,秒数一秒一动,可通过开关控制开始,暂停,置零。

二、各功能模块设计1.十进制加法计数器的设计1.1代码module adder (clk,rst_n,EN,clr,data_out);input clk,rst_n,EN,clr;output data_out;wire[3:0] data_out;reg[3:0] data_out_r;always @ (posedge clk or negedge rst_n) beginif(!rst_n) data_out_r <= 4'd0;else if(EN) beginif(clr) data_out_r <= 4'd0;else begindata_out_r = data_out_r + 1'b1;if(data_out_r == 4'd10) data_out_r = 4'd0;endendendassign data_out = data_out_r;endmodule1.2测试文件(Test Bench)`timescale 1 ns/ 1 psmodule adder_vlg_tst();reg EN;reg clk;reg clr;reg rst_n;wire [3:0] data_out;adder i1 (.EN(EN),.clk(clk),.clr(clr),.data_out(data_out),.rst_n(rst_n));initialbeginclk = 0;forever #10 clk = ~clk;endinitialbeginrst_n = 0;EN = 0;clr = 0;#20 rst_n = 1;#10 EN = 1;#20 clr = 1;#20 clr = 0;#200 $stop;endendmodule1.3 仿真波形2.分频器的设计2.1源代码module clkdiv#(parameter M = 100) //参数定义,默认为100 (input wire clk,output wire clk_div_M);localparam N = log2(M/2);//M/2值所需位数reg clk_div_r = 0;assign clk_div_M = clk_div_r;reg[N-1:0] cnt = 0; //分频计数器always @ (posedge clk)beginif(cnt == (M/2-1) )begincnt <= 0;clk_div_r = ~clk_div_r;endelse cnt <= cnt + 1'b1;end//log2 constant functionfunction integer log2(input integer n);integer i;beginlog2 = 1;for(i=0; 2**i<n; i=i+1)log2 = i+1;endendfunctionendmodule2.1测试文件(Test Bench)`timescale 1 ns/ 1 nsmodule clkdiv_vlg_tst();reg clk;wire clk_div_M;clkdiv i1 (.clk(clk),.clk_div_M(clk_div_M));Initial beginclk = 0;forever clk = ~clk;endinitial begin#100000;$stop;endendmodule2.3仿真波形3.数码管动态扫描显示设计3.2 源代码module SMG (clk,data_in,wei,duan);input wire clk;input wire[3:0] data_in;output wire[7:0] wei;output wire[7:0] duan;reg[7:0] wei_r = 8'hff;reg[7:0] duan_r = 8'hff;assign wei = wei_r;assign duan=duan_r;reg[2:0] count = 3'd0; //位选扫描信号reg[7:0] temp = 8'hff; //显示编码always @ (posedge clk) begin //位选扫描信号自加if(count == 3'b111) count <= 3'b000;else count <= count + 1'b1;endalways @ (posedge clk) begincase(count)3'd1: begin wei_r <= 8'h01; duan_r <= temp;end3'd2: begin wei_r <= 8'h02; duan_r <= temp;end3'd3: begin wei_r <= 8'h04; duan_r <= temp;end3'd4: begin wei_r <= 8'h08; duan_r <= temp;end3'd5: begin wei_r <= 8'h10; duan_r <= temp;end3'd6: begin wei_r <= 8'h20; duan_r <= temp;end3'd7: begin wei_r <= 8'h40; duan_r <= temp;end3'd8: begin wei_r <= 8'h80; duan_r <= temp;enddefault:begin wei_r <= 8'bx;duan_r <= 8'bx;endendcaseendalways @ (posedge clk) begincase(data_in)4'b0000: temp=8'b11000000; //共阳数码管显示0的段码4'b0001: temp=8'b11111001; //共阳数码管显示1的段码4'b0010: temp=8'b10100100; //4'b0011: temp=8'b10110000; //4'b0100: temp=8'b10011001; //4'b0101: temp=8'b10010010; //4'b0110: temp=8'b10000010; //4'b0111: temp=8'b11111000; //4'b1000: temp=8'b10000000; //4'b1001: temp=8'b10010000; //共阳数码管显示9的段码4'b1010: temp=8'b10001000; //共阳数码管显示A的段码4'b1011: temp=8'b10000011; //共阳数码管显示B的段码4'b1100: temp=8'b11000110; //共阳数码管显示C的段码4'b1101: temp=8'b10100001; //共阳数码管显示D的段码4'b1110: temp=8'b10000110; //共阳数码管显示E的段码4'b1111: temp=8'b10001110; //共阳数码管显示F的段码default: temp=8'hFF;endcaseendendmodule3.2测试文件(Test Bench)`timescale 1 ns/ 1 psmodule SMG_vlg_tst();reg clk;reg [3:0] data_in;wire [7:0] duan;wire [7:0] wei;SMG i1 (.clk(clk),.data_in(data_in),.duan(duan),.wei(wei));initial beginclk = 0;forever #10 clk = ~clk;endinitial begindata_in = 0;forever #40 data_in = data_in + 1'b1;#1000 $stop;endendmodule3.3 仿真波形三、设计实现1.1顶层代码module add_ten(clk_50M,rst_n,EN,clr,wei,duan);input wire clk_50M;input wire rst_n;input wire EN;input wire clr;output wire[7:0] wei;output wire[7:0] duan;wire[3:0] data_r; // data为中间变量,用于加法器-->数码管传递/***** 分频器设计例化*********/wire clk_1M,clk_1K,clk_1HZ;clkdiv #(.M(50)) //50分频--->1MHZclkdiv_1M (.clk(clk_50M),.clk_div_M(clk_1M));clkdiv #(.M(1000)) //1000分频--->1KHZ,给数码管扫描clkdiv_1000 (.clk(clk_1M),.clk_div_M(clk_1K));clkdiv #(.M(1000)) //1000分频--->1HZ,给加法计数器clkdiv_1HZ (.clk(clk_1K),.clk_div_M(clk_1HZ));/***** 加法计数器设计例化*********/adder inst(.clk(clk_1HZ),.rst_n(rst_n),.EN(EN),.clr(clr),.data_out(data_r));/***** 数码管设计例化*********/SMG SMG_1 (.clk(clk_1K), .data_in(data_r),.wei(wei),.duan(duan));endmodule1.2 RTL视图四、心得体会为期一周的FPGA课程设计结束了,自己感觉不是很顺利的完成课设。

FPGA课程设计实验报告

FPGA课程设计实验报告

FPGA课程设计实验报告专业年级:学号:姓名:指导教师写:2014 年10 月8日目录1、标题及任务书2、关键词(不少于5个)3、内容摘要4、总体方案或工作原理示意框图(或流程图)5、顶层逻辑电路图组成、信号定义及原理简单叙述6、底层功能模块设计,逻辑抽象(定义input 和output),简述逻辑电路工作原理,并要求附有*.bdf和*.v文件及文件中语句注释7、对应各模块功能仿真波形(数据分析)分析及结论;8、选用芯片型号、定义芯片管脚号(列表格示意)及简述下载过程9、《课程设计》设计项目完成最终结论10、《课程设计》项目的特点和实用性11、心得体会或结束语1、标题及任务书;设计一个具有时、分、秒钟的电子计时器,用DE2-115开发板烧制,并能准确计时。

2、关键词(不少于5个);时、分、秒、调频、译码器3、内容摘要;24进制代码module con24(out,clk,clr,plus,minus);output[7:0] out;input clk,plus,minus,clr;reg [7:0] out;always @(posedge clk)beginif (!clr) out<=0;elsebegincase ({plus,minus})2'b10:beginif (out[7:4]==2&out[3:0]==3) out[7:0]<=0;elseif (out[3:0]==9)beginout[3:0]<=0;out[7:4]<=out[7:4]+1;endelse out[3:0]<=out[3:0]+1;end2'b11: out<=out;default:out<=0;endcaseendendendmodule60进制代码module con60(out,clk,clr,plus,minus); output[7:0] out;input clk,plus,minus,clr;reg [7:0] out;always @(posedge clk)beginif (!clr) out<=0;elsebegincase ({plus,minus})2'b10:beginif (out[3:0]==9)beginout[3:0]<=0;if (out[7:4]==5) out[7:4]<=0;elseout[7:4]<=out[7:4]+1;endelse out[3:0]<=out[3:0]+1;end2'b11: out<=out;default:out<=0;endcaseend分频代码//Divided_Frequency.vmodule divider(f,_500HzOut,_1KHzOut,ncR,CLOCK_50,s);input ncR,CLOCK_50,s;output _500HzOut,_1KHzOut,f;wire _1HzOut,_5HzOut;assign f=s?_5HzOut:_1HzOut;divn #(.WIDTH(26),.N(50000000))u0(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_1HzOut));divn #(.WIDTH(17),.N(100000))u1(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_500HzOut));divn #(.WIDTH(16),.N(50000))u2(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_1KHzOut));divn #(.WIDTH(24),.N(10000000))u3(.clk(CLOCK_50),.rst_n(ncR),.o_clk(_5HzOut));Endmodule4、总体方案或工作原理示意框图(或流程图);5、顶层逻辑电路图组成、信号定义及原理简单叙述;工作原理:振荡器产生的稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。

fpga设计报告模板

fpga设计报告模板

成绩评定表学生姓名要强班级学号1103040113专业电子科学与技术课程设计题目曼彻斯特编解码电路设计评语组长签字:成绩日期20 年月日课程设计任务书学院信息科学与工程学院专业电子科学与技术学生姓名要强班级学号 1103040113课程设计题目曼彻斯特编解码电路设计实践教学要求与任务:工作计划与进度安排:第1-2天:讲解题目,准备参考资料,检查、调试实验软硬件,进入设计环境,开始设计方案和验证方案的准备;第3-5天:完成设计,经指导老师验收后进入模块电路设计(验收设计文档);第6-9天:完成模块电路代码输入,并完成代码的仿真(验收代码与仿真结果);第9-10天:约束设计,综合(验收约束与综合结果);第11-12天:布局布线,完成版图(验收版图结果);第13-14天:物理验证、后仿真,修改设计(验收物理验证结果和时序仿真结果);第15天:整理设计资料,验收合格后进行答辩。

指导教师:201 年月日专业负责人:201 年月日学院教学副院长:201 年月日摘要本设计实现串行NRZ码输入,manchester码输出;manchester码输入,NRZ输出。

其中包括NRZ码字按照编码规则编码;解码恢复NRZ码;编码时2x时钟输入,在内部进行分频;解码时钟恢复选作;工作时钟10kHz即可;自行设计设计下载后的验证方案;完成全部流程:设计文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、下载验证等。

本设计重点采用Verilog HDL描述、ModelSim进行功能仿真、QuartusII进行逻辑综合和适配下载,最后在Altera公司的Cyclone的芯片EP20Q240C8上实现并完成测试。

在此设计过程中,完整地建立了测试平台,通过8段数码管的显示与输出波形的验证,完成了功能和时序仿真,成功实现了串行NRZ码输入,曼彻斯特码输出;曼彻斯特码输入,NRZ输出。

在完成本次设计的同时考虑到其实用性方面,曼彻斯特码是一种数据通讯线性码,它的每一个数据比特都是由至少一次电压转换的形式所表示的。

FPGA课程设计报告

FPGA课程设计报告

F PG A课程设计报告(实现多功能数字钟)专业班级: 07通信2班******学号:************时间:2009.12.30一、标题:设计多功能数字钟控制电路二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计一个多功能的数字钟,包括有时、分、秒的计时,以及校时(对小时、分钟和秒能手动调整以校准时间)、正点报时(每逢整点,产生“嘀嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。

三、关键词:24进制、60进制、正点报时、校时、数字钟四、总体方案:多功能数字钟控制电路框图是由三部分组成的,即秒分时控制电路、整点报时控制电路、时段控制电路。

用Verilog HDL硬件描述语言完成编译和仿真。

五、原理框图如下:↓↓↓六、Verilog HDL硬件描述语言编写的功能模块:/*秒计数器m60*/module m60(M,CP60M,CPM,RD);output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM)beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*分计数器m60*/module m60(M,CP60M,CPM,RD);output [7:0]M;output CP60M;input CPM;input RD;reg [7:0]M;wire CP60M;always@(negedge RD or posedge CPM) beginif(!RD)begin M[7:0]<=0;endelsebeginif((M[7:4]==5)&&(M[3:0]==9))beginM[7:0]<=0;endelsebeginif(M[3:0]==9)beginM[3:0]<=0;if(M[7:4]==5)begin M[7:4]<=0;endelse M[7:4]<=M[7:4]+1;endelse M[3:0]<=M[3:0]+1;endendendassign CP60M=~(M[6]&M[4]&M[3]&M[0]); endmodule/*小时计数器m24*/module m24(H,CPH,RD);output [7:0]H;input CPH,RD;reg [7:0]H;always@(negedge RD or posedge CPH) beginif(!RD) H[7:0]<=0;elsebeginif((H[7:4]==2)&&(H[3:0]==3))beginH[7:0]<=0;endelsebeginif(H[3:0]==9)begin H[3:0]<=0;H[7:4]<=H[7:4]+1;endelse H[3:0]<=H[3:0]+1;endendendendmodule/*秒分时控制计数器xiaoshi2*/module xiaoshi2(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH);output CPM,CPH;input SWM,SWH;input CPS,CP60S,CP60M;reg CPM,CPH;always@(SWM or SWH or CPS or CP60S or CP60M)begincase({SWM,SWH})2'b01: begin CPM<=CPS;CPH<=CP60M;end2'b10: begin CPM<=CP60S;CPH<=CPS;enddefault: begin CPM<=CP60S;CPH<=CP60M;end endcaseendendmodule/*时段控制器sdkz*/module sdkz(h,sk);input [7:0]h;output sk;reg sk;always@(h)beginif((h<=5)||(h>=19))sk<=1;elsesk<=0;endendmodule/*报时计数器baoshi*/module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy;output bshi;wire bm;reg bshi;assign bm=m6&m4&m3&m3&m0&s6&s4&s0; always@(bm or s3 or dy or gy)beginif(bm&s3)bshi<=gy;else if(bm)bshi<=dy;elsebshi<=0;endendmodule七:各模块原理图及仿真波形:24进制原理图:60进制原理图:电路原理图:时段控制:报时:1、秒计数器仿真波形2、分计数器的仿真波形3、小时计数器的仿真波形4、秒分时控制电路的仿真波形5、时段控制的仿真波形6、报时器的仿真波形八、顶层文件及仿真波形顶层文件的仿真波形:九:选用ACEX1K芯片中的EP1K30TC144-3型号,对芯片管脚号的分配如下:十:课程设计结论:此次课程设计通过最终下载及编译可实现以上功能,在七段显示器上可实现秒、分计数器60进制,时计数器24进制显示,以及调节CLK1、CLK2的频率可使计数器上数字延时显示。

FPGA设计的报告课程设计

FPGA设计的报告课程设计

FPGA课程设计实验报告实验一:设计一个可控的100进制可逆计数器一、实验要求用DE2-115开发板下载。

(1)计数器的时钟输入信号周期为200ns。

(2)以十进制形式显示。

(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用clr plus minus 功能0 ××复位为01 1 0 递增计数1 0 1 递减计数1 1 1 暂停计数二、关键词可控制、可逆、100进制、复位、暂停、递增、递减三、内容摘要module updown_count(qout,reset,clk,plus,minus);output[7:0] qout;/*定义一个8位的输出,其目的是低四位和高四位分别表示计数器的个位和十位。

*/input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零reg[7:0] qout;//qout的数据类型为寄存器型always @(posedge clk)//当clk上升沿到来时执行一遍下列程序beginif(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过elsebegincase({minus,plus})//case语句模块,包含加,减和暂停四个模块2'b10:if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一beginqout[3:0]<=9;//给个位赋值if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值elseqout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一endelseqout[3:0]<=qout[3:0]-1;//个位减一/*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01:if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一beginqout[3:0]<=0;//若上面个位为9判断成立,则给个位赋值if(qout[7:4]==9) qout[7:4]<=0;//判断十位是否为9,若为9,则赋0elseqout[7:4]<=qout[7:4]+1;//若十位不为9,十位加一endelseqout[3:0]<=qout[3:0]+1;//个位加一/*这一部分是加计数模块,首先判断个位是否为9,若不为9,个位加1;否侧,再判断十位是否为9,若为9,十位赋0,否侧十位加1。

数字电子技术FPGA设计及其报告

数字电子技术FPGA设计及其报告

数字电子技术课程设计报告题目:基于FPGA的数字频率计设计学年:2010-2011学期:二专业:电气工程及其自动化班级:学号:姓名:指导教师:目录1 设计任务与要求 (1)2 系统设计总体方案 (1)3 各模块电路具体实现 (2)3.1 时钟分频模块 (2)3.2 时序控制模块 (3)3.3 计数模块 (3)3.4 锁存模块 (5)3.5 显示译码模块 (6)4 设计测试结果 (8)5 总结 (8)附录 (9)1 设计任务与要求本课题要完成的设计任务与要求如下:(1)、设计一个六位数的数字频率计.测量范围要求在0~999999Hz;(2)、需要设计五个模块电路,分别为:计数模块,译码显示模块,时序控制模块,分频模块,锁存模块;(3)、应用FPGA器件,通过QuartusⅡ软件(EP2C5T144C8)以原理图输入方式设计系统电路,根据设计要求选择可编程逻辑器件作为目标器件,应用QuarterⅡ软件进行系统开发设计.2 系统设计总体方案根据设计任务与要求,数字频率计系统主要有:计数模块、锁存模块、译码显示模块、时序控制模块、分频模块等电路模块组成,其系统组成框图如图2—1所示.图2—1 数字频率计系统设计组成框图各模块电路设计的主要思路和具体方案如下:(1)、计数模块:本模块主要实现六位数码管的十进制数的计数.可以通过常用的数字计数器来设计.如:74HC192、74161、74HC390等.本设计模块需要六个常用的计数器来实现个位到十万位的计数. ;(2)、锁存模块:本模块主要实现对计数值的锁存功能.可以选用常用的触发器.如D 触发器、RS触发器;或者,可以选用常用的锁存器来实现该功能;(3)、译码显示模块:本模块主要实现对计数模块的测量值以十进制数来显示,本系统选用共阴极数码管来作为显示器件,这里我们选用74HC138作为译码驱动器件;(4)、时序控制模块:本模块主要实现系统内部的各个模块协的调工作,主要产生三个控制信号:一秒钟的计数控制信号、锁存器的开启信号、计数器清零信号;(5)、分频模块:本模块主要实现将50MHz的时钟信号转换成1Hz的时钟信号.这里选用Verilog硬件描述语言来设计该模块电路.3 各模块电路具体实现3.1 时钟分频模块根据整个系统中各模块电路的需求,本模块主要实现将EDA实验板上50MHz晶振产生的时钟脉冲经过分频得到1Hz的时钟信号,考虑到应用触发器或计数器来设计,电路实现比较困难和繁琐,因此选择应用Verilog硬件描述语言来设计设计本模块电路,具体程序如下:module clk_div(CLK_in,CLK_out);input CLK_in;output CLK_out;reg CLK_out;reg[25:0] temp;always @(posedge CLK_in)beginif(temp>=25000000)begintemp=0;CLK_out= ~ CLK_out;endelsetemp=temp+1;endendmodule经过QuartusII软件综合后,电路的模块图如图3.1—1所示.图3.1—1 时钟分频模块电路图3.2 时序控制模块为了实现计数模块的计数和清零功能和锁存器的锁存开启功能可以在整个系统中协调工作,本模块电路采用QuartusII软件,以原理图的形式编辑,主要选用了T触发器将1Hz 脉冲信号转换成0.5Hz,T H为1秒的脉冲来作为计时器使能脉冲;经非门产生与计数使能脉冲相反的0.5Hz脉冲作为锁存器开启脉冲;将1Hz脉冲与0.5Hz脉冲经与门产生一个占空比为1/4,频率也为0.5Hz的脉冲信号作为计数器清零信号.具体电路原理图如图3.2—1所示.电路产生的时序波形图如图3.2—2所示.图3.2—1 时序控制模块电路原理图(1)En_jishu 引脚输出的是0.5Hz的时钟信号,也就是控制计数器的1秒钟时钟信号;(2)LOCK_EN 引脚输出的是0.5Hz的锁存器的开启信号;(3)qingling 引脚输出的是占空比为1:4且频率也为0.5Hz的时钟信号.图3.2—2 系统时序波形图3.3 计数模块根据设计要求要实现六位数的测量所以这里要求设计一个六位数的计数器,本模块电路选用74HC192来设计这个计数器在本设计中将计数模块设计成两成,第一层是将两个74HC192组合连接做成两位数的计数器;第二层将三个第一层的组合模块器件组合在一起这样就有六个74HC192就实现了六位十进制数的计数.第一层电路原理图如图3.3—1所示.;该层应用QuartusII软件创建的完整的模块图如图3.3—2所示.图3.3—1 计数第一层电路原理图图3.3—2第一层层电路模块图第二层原理图如图3.3—3所示;图3.3—3 计数器第二层原理图该层应用QuartusII软件创建的完整的模块图如图3.3—4所示.图3.3—4 计数器第二层模块图计数器模块仿真时序图如图3.3—5所示.图3.3—5 计数模块仿真时序图标注:由于仿真时间长,无法看到整个过程这里就截取数值为“099635“附近的仿真结果.3.4 锁存模块本模块主要完成对计数器的计数值的锁存功能,由于被测脉冲是不间断的,计数器会不断的计数循环没有一个固定的值,所以需要设计一个锁存模块来对计数器的计数值进行锁存,应用D触发器可以就可以实现数值的锁存功能,本模块采取将24个D触发器和在一起对计数器的产生的24位二进制数尽心锁存的理念设计了一个锁存模块,具体电路原理图如图3.4—1所示.应用QuartusII软件创建的完整的模块图如图3.4—1所示.图3.4—1 四位二进制数的锁存电路原理图应用QuartusII软件创建的完整的模块电路图如图3.4—2所示.图3.4—2 24位二进制数的锁存电路模块图3.5 显示译码模块根据EDA实验板上现有的数码管,只有7SLEDA、7SLEDB两个共阴数码管没有接译码驱动器件的,其余的四个数码管都已经现有接了CD4511.所以本设计中只需做两位数的译码驱动.本模块主要实现实两位数的译码显示,由于EDA实验板中是共阴的数码管,所以需要共阴译码驱动器件,这里应用74HC48来实现该设计中的译码显示,具体电路原理图如图3.5—1所示.图3.5—1 两位共阴数码管的译码驱动电路原理图应用QuartusII软件创建的完整的模块电路图如图3.5—2所示.图3.5—2 完整的译码模块器件译码模块时序仿真图如图3.5—3所示.图3.5—3 译码模块时序仿真图DD2对应输入端H、DD1对应输入端D.当H为1,D为1时;DD2为(011000)即为数码管显示“1”,DD1为(1111110)也就是数码管显示“0”.4 设计测试结果根据书本中芯CyclneⅡ系列的EP2C5T144C8芯片的引脚分配列表对所有引脚进行PIN 脚设置,50MHz信号就由EDA实验板上的50MHz晶振产生,引脚标号为“17“;被测信号由EDA实验板上的3.768KHz产生,经过4060分频产生4Hz、64Hz、128Hz、256Hz、512Hz、1024Hz、2048Hz、引脚编号为”88“,不同频率之间的转换用EDA实验板上的跳针来实现.最后下载到实验板上.本次下载用EDA实验板上的临时下载口下载,断电后就会被清除.测试结果当跳针在4Hz时数码管上显示”000004“左右、当跳针在512Hz时数码管显示”000512“左右数据有误差产生的原因可能有以下几点:(1) EDA实验板上的晶振产生的脉冲频率不稳定;(2) EDA实验板上脉冲经过4606分频后脉冲变得不稳定;(3)本设计中有很多的门电路,可能各个门电路上有延时.5 总结在为期四天的课程设计中我受益良多,首先,在一个月的寒假中我对QuartusⅡ已经遗忘了很多,在这次的课程设计中我有加深了对QuartusⅡ软件了解,更加熟悉了对Quartus Ⅱ软件的操作,在这次设计中又学会了一些新的操作方法,比如分层设计、分模块的设计方法、总线的连接方法等等.这让设计的条理变得更加清晰、方向更加明确、而且遇到错误查找起来更方便.不会像以前一样一旦有错误就要满设计的找,像个无头苍蝇一样.其次,在这次设计中我选用了74HC192来设计计数模块,这就让我更加清楚明白74HC192的功能,对其的引脚的功能更加清楚了.比如:CLR 清零、LD预置数、UP端加法计数脉冲接口、Down减法计数脉冲接口.CON 进位端,当74HC192计数到9时CON端就会产生一个低电平,BON端借位端,当74HC129减到0时BON端就会产生一个低电平等等.同时对该芯片的功能表也更加了解了,这次设计中也让我对D触发器和T触发器进行了一次复习.最后,这次设计不仅仅学会了对课程的设计,也同样知道了一些对今后学的设计,对生活的设计.在课程设计中,我们要先想好总的框架图,然后在细分到各个模块,再在各个模块中进行分设计,最后在综合在一起,这样就条理更清晰,不容易出差错.这和学习和生活的道理也是一样的,在学习上我们要先计划好学习的计划,然后再分步去做各个小的细节.这样就让学习更加的有效率.生活中也是要先规划好,小到一天或一个星期,大到一个月、一个季度或是一年.这样才更加的生活有节奏,不会浪费时间,碌碌无为,一学期下来什么都没有做.所以在今后的学习生活中我会尽力秉着这次课程设计时后的精神和方法去应对今后的学习和生活.附录系统设计总电路原理图如图5—1所示:图5—1 设计总图9 / 11。

FPGAverilog课程设计报告

FPGAverilog课程设计报告

FPGA verilog课程设计报告一、教学目标本课程旨在通过FPGA Verilog的学习,让学生掌握数字电路设计的基本原理和方法,学会使用Verilog硬件描述语言进行数字电路设计和仿真。

具体目标如下:1.理解FPGA的基本原理和结构。

2.掌握Verilog语言的基本语法和编程技巧。

3.熟悉数字电路的设计方法和流程。

4.能够使用Verilog语言编写简单的数字电路模块。

5.能够进行FPGA的配置和编程。

6.能够使用FPGA开发工具进行数字电路的仿真和测试。

情感态度价值观目标:1.培养学生的创新意识和团队合作精神。

2.增强学生对新技术的敏感性和学习兴趣。

3.培养学生对工程实践的热爱和责任感。

二、教学内容本课程的教学内容主要包括FPGA的基本原理和结构、Verilog语言的基本语法和编程技巧、数字电路的设计方法和流程。

具体安排如下:第1-2课时:FPGA的基本原理和结构1.FPGA的定义和发展历程。

2.FPGA的内部结构和组成。

3.FPGA的配置和编程方法。

第3-4课时:Verilog语言的基本语法和编程技巧1.Verilog语言的基本数据类型和操作符。

2.Verilog语言的逻辑表达式和语句。

3.Verilog语言的模块结构和参数传递。

第5-6课时:数字电路的设计方法和流程1.数字电路的设计原则和技巧。

2.数字电路的设计流程和步骤。

3.数字电路的仿真和测试方法。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过讲解和演示,让学生掌握FPGA和Verilog的基本知识和技巧。

2.案例分析法:通过分析具体的数字电路设计案例,让学生熟悉设计方法和流程。

3.实验法:通过动手实验,让学生亲手配置FPGA、编写Verilog代码并进行仿真测试,提高学生的实际操作能力。

四、教学资源1.教材:《FPGA Verilog设计与实践》。

2.参考书:《数字电路与FPGA设计入门》、《Verilog HDL入门与提高》。

FPGA课程设计模板

FPGA课程设计模板

CPLD/FPGA课程设计项目名称专业班级学生学号学生姓名指导教师苗凤娟2014年4 月9 日说明:格式设置指下图。

行距的设置。

段前段后的设置。

大纲级别的设置。

自动生成目录时候很有用。

没有说明的为正文文本。

首行缩进的设置。

说明:字体设置指下图。

西文字体的设置。

如果没有特殊说明,就选图上的这个。

字体的设置。

字号的设置。

物联网工程xX 班,姓名 xxxxx (CPLD/FPGA 课程设计)I摘 要本课程设计提出xxxx ,主要采用(方法、手段和途径等),完成XXX 的设计。

本设计具有xxxx 特点(创新及特色),达到xxx 水平。

具有XXX 意义。

(注:摘要是一篇具有独立性和完整性的短文。

包括主要成果和结论性意见,其中不宜使用公式、图表,不标注参考文献编号。

关键词要在摘要中出现。

250~320字)关键词:xxxxx ; xxxx ;xxxx ;xxxx ;xxxx ;整篇文章的页面设置如下:页眉:宋体加粗五号居中,内容如上。

摘要:字体黑体常规小二,中间1个字的空格;格式居中、大纲级别为1级、段前段后空1行、1.25倍行距。

摘要内容:字体宋体常规小四号。

格式两端对齐,首行缩进2字符,1.25倍行距。

关键词:字体宋体加粗小四号。

格式两端对齐,顶格,1.25倍行距。

关键词与摘要内容之间无空行。

关键词内容:字体宋体常规小四号。

用1个字的空格隔开,3~5个,一定要在摘要内容中出现。

覆盖论文内容的通用词。

不能有英文简写,如:CPU ,应该写“中央处理器”。

物联网工程xX班,姓名 xxxxx(CPLD/FPGA课程设计)AbstractIn contemporary digital times, the research about mandarin digit speech recognition ismore and more noticed, since some aspects by digital technique,Keywords: Speech recognition;Embedded systems英文摘要:格式同中文摘要一致。

FPGA课程设计报告

FPGA课程设计报告

课程设计开课学期: 2014年—2015年下学期课程名称:FPGA课程设计学院:信息科学与工程学院专业:集成电路设计与集成系统班级:集成1201班学号:20121221077姓名:蔚任课教师:涛2015 年 7 月 21 日基于FPGA的数字钟设计摘要本文介绍一种利用现场可编程逻辑器件FPGA产生多功能数字钟的设计方案。

数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,是人们日常生活中不可少的必需品。

本设计采用EDA技术,以硬件描述语言Verilog为系统逻辑描述手段设计文件,在Quartus II工具软件环境下,由各个基本模块共同构建了一个基于FPGA的数字钟。

系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。

经编译和仿真所设计的程序,在可编程逻辑器件上下载验证。

开发板采用5CSEMA5F31C6N。

本次设计的多功能数字钟,具有时、分、秒的数码管显示功能,以24小时循环计数,具有整点报时功能,并有由按键输入进行数字钟的校时、清零、启停功能。

关键词:可编程逻辑器件 FPGA Verilog 数字钟 EDA技术AbstractThis paper introduces a kind of based on field programmable logic device FPGA design of multi-function digital clock, the digital clock is used in digital circuits, and seconds digital display timing device is in people's daily life necessities.This design using EDA technology, hardware description language Verilog logic system description method of design documents, in the Quartus II software environment, by all the basic modules together to build a a FPGA based digital clock.System consists of the clock module, control module, time module, data decoding module, display and broadcast module composition. Program after compilation and simulation design, programmable logic device to download verification. Development board using the multi-function digital clock 5CSEMA5F31C6N. this design, with time, points, the second digital tube display, to a 24-hour cycle count, with the whole point timekeeping function and input by the key of the school of digital clock, clear, open and stop function.Key words: programmable logic device FPGA Verilog Digital cloc EDA Technology目录前言 (1)第一章多功能数字钟概述 (2)1.1 数字钟的构成 (2)1.3 计时电路 (3)1.4 异步清零电路 (4)1.5 校时、校分功能电路 (4)第二章 FPGA简介 (5)2.1 现场可编程逻辑门阵列FPGA (5)2.2 FPGA简介 (6)2.3 Quartus II软件简介 (6)第三章设计方案 (7)第四章设计实现 (9)4.1 顶层模块 (9)4.2 新建工程项目 (9)4.3 选择芯片 (10)4.4 子模块 (12)4.4.1 分频器 (12)4.4.2 控制器和计数器 (13)4.4.3 显示器 (16)4.5 元件封装 (21)4.6 引脚的绑定和设置 (21)4.7 之后再进行一次编译运行。

FPGA课程设计报告--简易电子琴的设计

FPGA课程设计报告--简易电子琴的设计

FPGA课程设计报告题目:简易电子琴设计及FPGA功能验证院系:专业班级:学生姓名: XX导师姓名: XX起止时间: 2012、6、18至2012、6、29一、课程设计任务:本设计一个简易电子琴,具体功能如下:1、具有手动弹奏和自动播放功能;2、以按键或开关作为电子琴的琴键,输出7个音节的音阶;3、可以自动播放曲目至少两首。

二、课程设计目的:1、培养综合运用知识和独立开展实践创新的能力;2、深入学习Verilog HDL,了解其编程环境;3、学会运用Modelsim和Quartus II等编程仿真软件;4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习;三、使用环境:1、软件:Modelsim和Quartus II等编程仿真软件;2、硬件:FPGA开发板。

四、课程设计详细方案及功能验证:1、总体实现方案:1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。

电子琴有按键代替琴键的弹奏功能和自动播放功能。

2、整个程序总共分5个模块:主模块,按键模块,曲目1模块,曲目2模块,曲目3模块。

整个方案总共用了9个按键(key1~key9),按键key1~key7作为琴键,通过这七个按键键入不同的音阶。

主模块中key8、key9两个按键用于选择是自动播放还是弹奏曲目,令mm=(key8、key9),用mm值的不同选择调用不同模块。

如果mm=00,则程序调用按键模块;如果mm=01,则调用曲目1模块,播放曲目1;如果mm=10,则调用曲目2模块,播放曲目2;如果mm11,则调用曲目3模块,播放曲目3。

本次设计的框图:2、输入输出信号描述:3、顶层划分:key1.key2.key3.key4.key5.key6.key7.key8.key94、主要模块:主模块:功能描述:是四个子模块的核心,通过主模块分别调用四个不同的子模块。

FPGA课程设计课程设计报告

FPGA课程设计课程设计报告

《CPLD/FPGA课程设计》课程设计报告系别:信息科学与技术系专业班级:通信工程08XX班学生姓名:XXXX指导教师:**(课程设计时间:2011年9月5日——2011年9月16日)华中科技大学武昌分校目录1 课程设计目的 (3)2课程设计题目描述和要求 (3)3课程设计报告内容 (4)3.1 硬件设计 (4)3.1.1 EP1C6Q240C8管脚结构图 (4)3.1.2 液晶屏的硬件连接电路设计 (4)3.1.3 外围电路的设计 (5)3.2 软件设计 (6)3.2.1 功能需求分析 (6)3.2.2 模块划分 (6)3.2.4 模块之间连接组成系统 (11)3.2.5 管教绑定 (11)3.2.6 下载 (11)4总结 (12)参考文献 (12)1 课程设计目的本课程属专业课程设计。

EDA课程设计是继“数字电路技术基础”课之后开出的实践教学环节。

其目的是训练学生综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电路的能力。

设计建立在硬件和软件两个平台的基础上。

硬件平台是FPGA综合实验箱,根据不同题目设计的数字电路下载到一片可编程逻辑器件上,实验结果可在实验仪上实现。

软件平台是ALTERA公司的QUARTUSII。

通过课程设计,学生要掌握使用EDA工具设计数字电路的方法,包括图形设计输入、编译、软件仿真、下载和硬件仿真等全过程。

2课程设计题目描述和要求设计题目:综合数字钟的设计与实现;设计内容:用ALTERA公司的QUARTUSII软件和FPGA综合实验平台设计一个数字时钟,能进行正常的时,分,秒计时功能,用1块液晶屏显示24小时,60分,60秒;能利用按键实现“校时”“校分”“闹钟”功能。

3课程设计报告内容3.1 硬件设计3.1.1 EP1C6Q240C8管脚结构图3.1.2 液晶屏的硬件连接电路设计管脚号管脚名称管脚功能描述FPGA接口1VSS电源地GND 2VDD电源正+5V 3NC空脚不接4RS(CS)RS=“H”, 表示DB7~DB0 为显示数据。

FPGA课程设计(最终版)

FPGA课程设计(最终版)

课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 电子琴的设计课程设计目的:《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。

课程设计内容和要求设计内容:(1)设计一个八音电子琴。

(2)由键盘输入控制音响,同时可自动演奏乐曲。

(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。

要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。

时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)Abstract (2)1设计意义和要求 (3)1.1设计意义 (3)1.2功能要求 (3)2方案论证及原理分析 (4)2.1实现方案比较 (4)2.2乐曲实现原理 (4)2.3系统组成及工作原理 (6)3系统模块设计 (8)3.1顶层模块的设计 (8)3.2乐曲自动演奏模块的设计 (8)3.3音阶发生器模块的设计 (9)3.4数控分频器模块的设计 (9)4程序设计 (11)4.1VHDL设计语言和ISE环境简介 (11)4.2顶层模块的程序设计 (12)4.3乐曲自动演奏模块的程序设计 (13)4.4音阶发生器模块的程序设计 (13)4.5数控分频模块的程序设计 (14)5设计的仿真与实现 (15)5.1乐曲自动演奏模块仿真 (15)5.2音调发生模块仿真 (18)5.3数控分频模块仿真 (19)5.4电子琴系统的仿真 (20)5.5设计的实现 (22)5.6查看RTL视图 (23)5.7查看综合报告 (25)6心得体会 (31)7参考文献 (32)8附录 (33)摘要随着基于FPGA的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

FPGA技术课程设计报告模板

FPGA技术课程设计报告模板
位于十字路口的交通灯,在A方向和B方向各有红、黄、绿三盏灯,按所列顺序进行循环,交通灯循环顺序见表1所示。其中1表示灯亮,0表示灯灭。
表1交通灯循环顺序
东西方向
南北方向
红灯
黄灯
绿灯
红灯
黄灯
绿灯
1
0
0
0
0
1
1
0
0
0
1
0
0
1
0
0
1
0
0
1
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
0
1
0
0
1
0
1
0
0
0
1
0
(1)对持续时间的要求如下:
组员(姓名)的设计要求(由组长提供给组员):
暴雨
黄仁波
刘鹏飞
雷毅
高磊Байду номын сангаас
徐京杰
日期:2015年4月25日
一.设计步骤
二.设计整体流程图
三.设计方案(可包含主控制电路状态转换图)
四.顶层及各自模块波形图仿真分析
五.体会
六.程序源码
西南科技大学
《FPGA技术》课程
设计报告
设计名称:交通信号灯控制器
*********
学 号:********
专业班级:电子1203班
******
西南科技大学信息工程学院制
设计任务书
设计名称:交通信号灯控制器
组长姓名:暴雨
组员姓名(其他5人):黄仁波,雷毅,刘鹏飞,高磊,徐京杰
课题总设计要求:
设计题目的要求:

FPGA课程设计实验报告

FPGA课程设计实验报告

FPGA课程设计实验报告1. 引言本报告是针对FPGA课程设计实验的实验结果进行总结和分析。

该实验旨在通过设计一个FPGA应用电路,加深对FPGA的理论知识的理解,并提高对FPGA设计流程的掌握能力。

本实验采用Verilog硬件描述语言进行FPGA设计。

2. 实验目的本实验的主要目的有以下几点: - 通过设计一个FPGA应用电路,提高对FPGA的理论知识的理解。

- 熟悉FPGA设计流程,掌握使用Verilog语言进行FPGA设计的方法。

- 掌握FPGA设计的仿真、综合和下载的流程。

- 提高对FPGA设计中时序约束的理解和处理能力。

3. 实验环境和工具本实验的实验环境和工具如下: - FPGA开发板:Xilinx Spartan-6 - FPGA设计工具:Xilinx ISE Design Suite - 仿真工具:Xilinx ISIM4. 实验设计本实验设计了一个简单的FPGA应用电路,实现了一个4位计数器。

该计数器能够从0递增到15,然后重新从0开始计数。

计数器的递增频率可通过外部开关调节,同时采用七段数码管显示当前计数器的值。

4.1 电路结构实验设计的电路结构如下所示:电路结构图电路结构图该电路包含以下模块: - 时钟模块:用于提供递增计数器的时钟信号。

- 计数器模块:实现了一个4位计数器,并能够从0递增到15。

- 控制模块:用于控制外部开关的输入,并将结果输出到七段数码管的控制端口。

- 七段数码管模块:用于将计数器的值以七段数码管的形式显示出来。

4.2 Verilog代码根据电路结构图,我们编写了如下的Verilog代码:module counter(input wire clk,input wire reset,output wire [6:0] seg,output wire seg_en);reg [3:0] count;always @(posedge clk or posedge reset)beginif (reset)count <= 4'b0000;else if (count == 4'b1111)count <= 4'b0000;elsecount <= count + 1;endassign seg = count;assign seg_en = 1'b1;endmodule5. 实验过程5.1 仿真在进行实际FPGA设计之前,我们首先对设计的Verilog代码进行仿真,以验证其功能的正确性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FPGA课程设计(报告)题目:学院:电子工程学院系部:微电子学系专业班级:微电子1702学生姓名:指导教师:李哲起止时间:2020年06月01日—2020年06月12日目录1.课程设计题目及要求 (4)1.1设计题目:基于FPGA的波形产生器。

(4)1.2设计内容 (4)1.3基本功能 (4)1.4课程设计目的 (5)1.5已完成功能 (5)2.系统设计 (5)3. FPGA设计 (6)3.1设计思路 (6)3.2顶层模块设计 (7)3.3方波产生模块 (8)3.4 锯齿波产生模块 (8)3.5 三角波产生模块 (8)3.6 正弦波ROM模块 (8)3.7 DAC模块 (9)9 (9)4.2波形选择器 (9)4.3 D/A转换器 (9)4.4低通滤波器 (9)5.模块划分 (10)5.1 模块概述 (10)5.2时钟控制模块 (10)5.3 相位控制模块 (11)5.4偏移控制模块 (12)5.5 波幅控制模块 (13)5.6 波形ROM定制模块 (13)5.7波形数据产生模块 (14)6.仿真 (14)7 心得体会 (14)8 参考文献 (15)9附录 (15)1.课程设计题目及要求1.1设计题目:基于FPGA的波形产生器。

1.2设计内容通过的以Xilinx Spartan 3E实验板为控制核心,用直接数字频率合成技术(DDS),经板上DA转换输出模拟信号,实现频率和输出电压峰-峰值都可调。

1.3基本功能1)具有产生正弦波、方波、三角波三种周期性波形的功能。

2)输出波形的频率范围为100Hz-20kHz(非正弦波频率按10次谐波计算)。

重复频率可调,频率步进间隔≤100Hz。

3) 输出波形幅度范围0-3V(峰峰值),可按步进0.1V(峰峰值)调整。

4)由外界按键输入选择产生波形的种类、频率与幅度。

5)界面显示输出波形的类型、重复频率(周期)和幅度等信号参数。

在完成基本功能的基础上,本系统还可以完成以下扩展功能:1)扩展输出波形频率范围1Hz-100KHz,频率步进间隔最小为1Hz。

2)扩展能生成其他波形,如锯齿波。

3)方波占空比可调。

4)增加输出信号的路数,两路信号可以独立控制。

5)通过VGA输出接口实现波形发生器用户界面。

1.4课程设计目的通过本课程设计加深对“基于Vrilog HDL的FPGA设计基础”理论学习的理解,熟悉相关EDA工具的使用,熟练掌握和使用基于FPGA 的数字系统开发工具、开发流程,能够自主进行成熟的基于FPGA的数字系统设计,能过够发现和独立解决开发中遇到的问题。

1.5已完成功能1)具有产生正弦波、方波、三角波三种周期性波形的功能。

2)输出波形的频率范围为100Hz-20kHz(非正弦波频率按10次谐波计算)。

重复频率可调,频率步进间隔≤100Hz。

3)输出波形幅度范围0-3V(峰峰值),可按步进0.1V(峰峰值)调整。

2.系统设计该设计以FPGA开发平台为核心,将各波形的幅值/相位量化数据存储在ROM内,按照设定频率以相应频率控制字k为步进,对相位进行累加,以累加相位值作为地址码读取存放在存储器内的波形数据,经D/A转换和幅度控制、频率控制和滤波即可得到所需波形。

波形发生器采取全数字化结构,用硬件描述语言Verilog设计实现其频率可调可显示。

经开发平台的D/A转化和外加滤波整形处理波形数据,理论上能够实现任意频率的各种波形。

系统总体设计方框图如图2所示。

图2系统整体结构3. FPGA设计本设计采用Xilinx公司的Sparten3E XC3S500E型号、封装类型为FG320、速度等级为-4的FPGA开发板实现。

3.1设计思路1)分频器控制读取rom的步长,通过输入变量改变分频器计数器的计数总量,控制分频实验频率可调。

2)制作rom,通过一个函数实现,给函数输入一个地址,通过case语句输出一个值。

3)波形选择,同个if语句选择地址计数器输出的值,从而输出四种不同的波形。

4)锁相环(附加),调用FPGA芯片集成的锁相环模块,让输出的相位更加的稳定。

5)调幅(附加),通过在rom的值除以不同的值来控制改变输出信号的幅度3.2顶层模块设计顶层模块主要用于分频,定义系统的输入和输出端口。

由于实验箱采用系统时钟位50MHz,本实验采用分频比可调产生的时钟作为整个设计的全局时钟,所以本模主要负责产生全局时钟,并产生全局控制信号。

主要用于控制输出信号的类型、频率、相位移、纵向偏移和波幅。

其中正弦信号采用IP定制ROM模块。

其余波形产生模块主要采用硬件设计并用Verilog HDL语言描述产生。

CLOCKRESET_NENCTRL_DDSDDS_OUTFREQUENS_DDSSKEW_DDSPHASE_DDSAMPLITUDE_DDS图3.1 顶层设计顶层模块端口描述如表格3.1所示。

表格3.1:顶层模块端口描述FREQUENS_DDS Input PIN_4 频率控制字SKEW_DDS Input PIN_5 纵向偏移控制字PHASE_DDS Input PIN_6 相位控制字AMPLITUDE_DDS Input PIN_7 幅度控制字DDS_OUT Output PIN_8 信号输出端I/O端口时序描述,为了正确完成数据输入和输出,接口信号之间信号的时序关系如图3.2所示。

图3.2 顶层设计时序关系图3.3方波产生模块该模块主要采用分频比可调的时钟输出。

具有较高的信号质量。

3.4 锯齿波产生模块锯齿波信号的产生主要采用8位累加器实现,逐次累加,产生周期性的锯齿波信号。

3.5 三角波产生模块该信号的产生采用象限控制,利用最高位作为象限控制位控制三角波的斜升和斜降。

3.6 正弦波ROM模块首先利用MATLAB生成一个*.MIF文件,*.MIF文件存储的是一个深度为256,宽度为8的正弦波形数字信号。

然后在Quartus II下利用MATLAB生成的*.MIF数据文件生成一个单口ROM,并且生成对应的.V文件,即ROM模块。

本模块的功能是通过传送过来的地址,查找地址所对应的数据,并将数据读出。

3.7 DAC模块利用高速高精度数模转换芯片A4101,设计数模转换电路,以及简单的滤波输出电路。

输出信号供示波器采集。

4.功能验证方案使用DDS逻辑分析仪(Signal Tap II)测试结果4.1相位累加器给address一个初值,通过键盘给k,测试新的address的值是否等于address+k。

4.2波形选择器使用DDS逻辑分析仪(Signal Tap II)测试结果给s1,s2分别赋值00,01,10,看输出数值是否依次满足正弦、方波、三角波的波形规律。

4.3 D/A转换器给它外界输入一串数值,看它能否转换为波形。

4.4低通滤波器给它输入一个不光滑的波形,看它是否变成光滑波形。

5. 模块划分5.1 模块概述设计分为六个模块:时钟控制模块、相位控制模块、偏移控制模块、波幅控制、波形ROM定制模块、波形数据产生模块。

各模块的互连结构如图5.1所示图5.1 FPGA设计整体互连结构5.2时钟控制模块CLK_INRESET ENCLK_KEYCLK_OUT图5.2:时钟控制模块其端口管脚描述如表5.2所示。

表5.2:时钟控制模块引脚描述5.3 相位控制模块RESETENCLK_KEY PHASE_INPHASE_OUT图5.3:相位控制模块模块管脚描述如表5.3。

表5.3:相位控制模块引脚描述5.4偏移控制模块RESETENCLK_KEYIN_AOUT图5.4:偏移控制模块模块端口描述如下表5.4所示。

表5.4:偏移控制模块引脚描述5.5 波幅控制模块该模块可调节输入波形信号的幅度,输出波幅调整后的信号。

Amplitude[11:0][8:0]RESETENCLK_KEYINOUT表5.5:波幅控制模块表格5.5:波幅控制模块引脚描述引脚名称 类型 编号 功能描述 RESET Input PIN_1 复位 低电平复位 EN Input PIN_2 增量使能端 控制参数的增减CLK_KEY Input PIN_3 偏移控制字 IN_A Input PIN_4 信号数据输入端 OUTOutputPIN_5波幅变化后数据输出5.6 波形ROM 定制模块存储正弦波波形数据,通过传送过来的地址,查找地址所对应的数据,并将数据读出。

图5.6:正弦波形ROM 定制5.7波形数据产生模块通过时钟控制和系统控制产生波形数据,然后输出。

CLKRESETDDS_DATA CTRL_DDS图5.7:波形数据产生模块表5.7:波形数据产生模块引脚描述6.仿真顶层模块仿真ROM模块仿真7.心得体会刚刚接触并学习了一段时间的FPGA设计及硬件描述语言,更多的是模块化的知识,许多东西只是略微了解而不是深入理解,经过两周的课程设计,我从了解了FPGA设计的完整过程,并且亲自动手实践了整个过程。

在实际操作过程中,会遇到各种各样的实际问题,一般都很细微,但往往都很致命,因为这个问题会将整个进度卡在那里。

恰恰是这样,不得不逼迫自己迎难而上,去攻坚克难,不断尝试,不断失败,最终成功解决问题。

无论是通过向老师、同学请教,还是自己搜集资料摸着石头过河,随着问题的一点点解决,内心的成就感和喜悦都是难以言表的。

真心希望,学校能多进行这种实践教学,让学生更多的尝试发现问题并解决问题的过程,因为这些都是书本上学不来的东西。

8.参考文献《Verilog HDL 数字设计与综合(第二版)》夏宇闻电子工业出版社《基于Verilog 的FPGA设计基础》杜慧敏西安电子科技大学出版社《基于FPGA的数字系统设计》李辉西安电子科技大学出版社9.附录附件包括本设计的Verilog HDL描述,验证代码。

附件内容另附。

FPGA课程设计过程控制及成绩评定表。

相关文档
最新文档