FPGA设计报告
FPGA实验设计报告—广东技术师范学院
实验报告课程名称:FPGA设计及应用实验项目:FPGA设计实验时间:2014.12.8-2014.12.31实验班级:12应用师3班总份数:共 5 份指导教师:李豪彦电子与信息学院工业中心504 实验室二〇〇四年十二月十七日广东技术师范学院实验报告学院: 电信学院 专业: 应用电子技术教育 班级: 12应用师3班 成绩: 姓名: 张文斌 学号: 2012045344209 组别:组员:实验地点: 工业中心实验日期:指导教师签名:实验 (一) 项目名称: D 分 频 器设计一、实验目的1.学习分频器的设计,进一步了解、熟悉和掌握FPGA 开发软件Quartus II 的使用方法2.学习Verilog HDL 和VHDL 的编程方法二、实验内容编写一个分频器的Verilog 代码和VHDL 代码并仿真。
三、实验原理在数字电路中, 时钟信号的分频是很常见的电路。
分频器除了可以对时钟信号频率做除以二的计算外,分频器同时很类似涟波计数器。
涟波计数器是计数器的一种,它属于异步设计。
因为触发器并非皆由同一个时钟信号同步操作,所以它非常节省电路面积。
本实验要设一个带选择的分频时钟D[7:0]用于选择是几分频。
D 分频器设原理框图如图1所示:图1.D 分频器原理框图预习情况操作情况 考勤情况 数据处理情况四、实验步骤1.新建工程,取名为DVF,如下图2所示。
图2 新建工程DVF2.新建VHDL设计文件,选择“File|New ”,在New 对话框中选择Device Design Files下的VHDL File,单击OK,完成新建设计文件。
3.在新建设计文件中输入VHDL程序。
4.生成“Symbol ”文件,新建“Block Diagram/Schematic File”文件,在文件中添加刚刚生成的“Symbol ”以及输入输出管脚,最后完整的系统顶层模块图如图 3 所示。
图3 DVF 顶层模块图5.保存文件,使用qsf或者tcl 进行管脚分配。
fpga逻辑设计方案报告
fpga逻辑设计方案报告FPGA逻辑设计方案报告一、引言FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种可编程数字逻辑器件,具有灵活性和可重构性。
FPGA的设计涉及到逻辑电路设计、时序设计和综合优化等方面。
本报告旨在介绍FPGA逻辑设计方案的基本原理和方法。
二、FPGA逻辑设计基础1. FPGA架构:FPGA由可编程逻辑单元(CLB)、输入输出模块(IOB)和可编程互连资源(Interconnect)构成。
CLB是FPGA 中最基本的逻辑单元,包含查找表(LUT)、寄存器和多路选择器等。
IOB用于与外部设备进行数据交换。
Interconnect用于连接CLB和IOB,实现不同逻辑单元之间的互连。
2. FPGA编程语言:常见的FPGA编程语言包括VHDL和Verilog。
这些语言提供了描述数字逻辑电路的方式,可以通过编写代码来实现逻辑功能。
三、FPGA逻辑设计流程1. 需求分析:明确设计的功能和性能要求,确定逻辑电路的输入输出接口。
2. 模块划分:将整个设计任务划分为多个模块,每个模块负责实现一个特定的功能。
3. 逻辑设计:使用FPGA编程语言编写每个模块的逻辑电路描述。
在描述中使用逻辑门、寄存器、多路选择器等基本元件,通过组合和时序逻辑的方式实现所需功能。
4. 综合优化:对逻辑电路进行综合,将高级语言描述转化为逻辑门级的电路描述。
综合优化包括逻辑优化、时序优化和面积优化等。
5. 时序设计:对逻辑电路进行时序约束的设置,确保信号的传输满足时序要求。
时序设计包括时钟频率、时钟分频、时钟延迟等方面的考虑。
6. 布局布线:将逻辑电路映射到FPGA的物理资源上。
布局布线包括逻辑单元的位置分配和信号线的路径规划。
7. 静态时序分析:对布局布线后的电路进行时序分析,检查是否满足时序要求。
8. 配置生成:将逻辑电路的配置位流生成,用于配置FPGA芯片。
9. 下载与验证:将配置位流下载到FPGA芯片中,通过验证测试确保设计满足功能和性能要求。
FPGA综合设计报告
FPGA综合设计报告载波信号发生器设计一、实验目的1. 熟悉Quaturs II软件的使用。
2. 掌握正余弦查找表的用途、设计和使用方法。
3. 掌握用VerilogHDL硬件描述语言建模时序逻辑电路的能力。
二、实验内容1.计算正余弦信号采样值用C/C++编写程序,计算一个周期内的正余弦信号的采样值,一个周期采样32次。
要求对采样值和2的幂次倍(例如16、32、64、128等)进行倍乘后处理成适当的整数值,对每个整数值进行8位二进制编码。
注意:计算机中对负数用补码表示。
计算正弦信号采样值的C语言程序及注释:#include<iostream>#include<cstdio>#include<cmath>using namespace std; //C++及C 语言库函数头文件#define PI 3.141592653 //宏定义PI数值#define N 32 //定义放大倍数及累加变量为32,可以修改为64或者是128 int main(){double sinValue[N]; //sinValue为的抽样的数值int outValue[N];for(int i=0;i<N;i++)sinValue[i]=N*sin(i/(N+0.0)*2*PI); //得到放大32倍的抽样数值for(i=0;i<N;i++){outValue[i]=(int)sinValue[i]; //对得到的数值进行整数化cout<<"LUT[ "<<i<<" ] "<<"<="<<outValue[i]<<";"<<endl; //以标准格式输出文件}cout<<endl;return 0;}2.设计查找表用VerilogHDL 建模一个载波信号发生模块,将第 1 步中得到的采样值写入查找表。
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创新实验设计报告设计名称电子琴与音乐盒姓名学号 xx xxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxx专业班级 xxxxxxxx系指导教师 xxx日期 xxxx年x月xx日摘要本次设计借数电实验课的机会,基于FPGA可编程逻辑器件实现了电子琴和音乐发生器的功能,使用ALTERA公司的CYCLONEⅢ芯片构成系统主体,软件部分应用VHDL语言,在QuartusⅡ8.1设计平台上完成。
本方案整合了PS2键盘接口和音乐发生模块,具有一定的灵活性和创新性。
关键词:电子琴;音乐发生器;FPGA;VHDL目录一、设计任务与要求---------------------------------3二、总体框图---------------------------------------3三、选择器件---------------------------------------3四、功能模块---------------------------------------3五、总体设计电路图--------------------------------11六、实现功能--------------------------------------11七、心得体会--------------------------------------13一、设计任务与要求:设计一个能够实现音乐发生功能以及能够通过键盘弹奏的电子琴。
要求:选择功能一时能够通过键盘弹奏出三个八度的21个音符,每个音符发音时间相同;选择功能二时能够自动播放一段音乐,并有暂停和继续的功能。
二、总体框图:1、总体框图如下所示:2、各模块功能:●键盘接口模块键盘接口模块用于接收键盘按键输出的断码,将信息输送到音调转换模块,以便其将键盘按键与不同的音符进行对应。
●音调转换模块音调转换模块将输入进来的按键通码与断码信息与不同的音符对应起来,并将结果传递给下一级模块。
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课程设计设计任务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实验报告5篇
FPGA实验报告5篇第一篇:FPGA实验报告FPGA实验报告专业:XXX 姓名:XXX 学号:XX一:实验目的1.熟悉Modelsim和Quartus II软件的运行环境和使用2.熟练使用Quartus II仿真软件生成网表。
3.熟悉FPGA前仿真和后仿真的整个流程。
二:实验内容编写counter计数器,在Quartus II仿真软件中生成网表,再在Modelsim中进行后仿真。
三: 实验步骤1.在Modelsim编写源程序(counter计数器及激励),编译源文件,确保程序的正确性,并进行前仿真,生成波形图如下:附:源程序如下:module counter(q,clk,reset);input clk,reset;output [3:0] q;reg [3:0] q;always @(posedge reset or negedge clk)if(reset)q <= 4'b0;elseq <= q + 1;endmodule module top;reg CLK,RESET;wire [3:0] Q;counter c1(Q,CLK,RESET);initialCLK=1'b0;always#1 CLK=~CLK;initial$monitor($time,“Q=%d”,Q);initialbeginRESET=1'b1;#5 RESET=1'b0;#180 RESET=1'b1;end endmodule 2.新建文件夹,将源程序counter.v放进去。
然后启动Quartus II仿真软件,生成网表。
1).在【File】下拉菜单中选中New Project Wizard选项,出现对话框。
并指定工程工作目录、工程名称和顶层模块名,如图(a)所示。
2).添加(Add)counter.v文件。
如图(b)所示。
3).选择器件系列4).指定其它EDA工具,如图(d)所示。
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课程设计报告
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系统设计》实验报告》有限状态机的设计一、设计任务了解有限状态机的概念;掌握Moore型有限状态机的特点和其VHDL语言的描述方法掌握Mealy型有限状态机的特点和其VHDL语言的描述方法二、设计过程1.单进程Moore型有限状态机程序代码这是一个单进程的Moore状态机, 其特点是组合进程和时序进程在同一个进程中, 此进程可以认为是一个混合进程。
2.该状态机时一个2进程Mealy型状态机, 进程COMREG是时序与组合混合型进程;进程COM1负责根据状态和输入信号给出不同的输出信号。
library ieee;use ieee.std_logic_1164.all;entity MEALY1 isport(clk,datain,reset : in std_logic;q : out std_logic_vector(4 downto 0));end MEALY1;architecture one of MEALY1 istype states is (st0,st1,st2,st3,st4);signal stx : states;begincomreg : process(clk,reset,datain,stx) --主控时序进程beginif reset = '1' then stx <= st0;elsif clk'event and clk = '1' thencase stx iswhen st0 => if datain = '1' then stx <= st1;end if;when st1 => if datain = '0' then stx <= st2;end if;when st2 => if datain = '1' then stx <= st3;end if;when st3 => if datain = '0' then stx <= st4;end if;when st4 => if datain = '1' then stx <= st0;end if;when others => stx <= st0;end case;end if;end process comreg;com1 : process(stx,datain) --主控组合进程begincase stx iswhen st0 => if datain = '1' then q <= "10000"; else q <= "01010"; end if;when st1 => if datain = '0' then q <= "10111"; else q <= "10100"; end if;when st2 => if datain = '1' then q <= "10101"; else q <= "10011"; end if;when st3 => if datain = '0' then q <= "11011"; else q <= "01001"; end if;when st4 => if datain = '1' then q <= "11101"; else q <= "01101"; end if;when others => q <= "00000";end case;end process com1;end one;3.该状态机属于Moore型状态机, 由两个主控进程构成, 其中进程REG是主控时序进程, COM是主控组合进程。
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课程设计报告彩灯实验一、课程目标知识目标:1. 学生能理解FPGA的基本原理和结构,掌握彩灯实验相关的硬件描述语言(HDL)基础;2. 学生能描述数字电路设计的基本流程,并运用FPGA设计简单的数字电路;3. 学生掌握彩灯实验的原理,能够解释彩灯显示背后的逻辑控制过程。
技能目标:4. 学生能够运用所学知识,设计并实现一个基于FPGA的彩灯控制电路;5. 学生通过实际操作,提高问题解决能力和实验操作技能,包括电路调试和故障排查;6. 学生能够利用FPGA设计软件进行电路设计和仿真,并完成硬件的实现和测试。
情感态度价值观目标:7. 学生通过实验探究,培养对电子工程领域的兴趣,增强创新意识和实践能力;8. 学生在小组合作中,提升团队协作能力和沟通技巧,理解集体智慧的重要性;9. 学生能够在实验过程中,形成良好的工程伦理观念,认识到技术对社会发展的积极影响和责任。
二、教学内容本课程教学内容围绕FPGA的原理与应用,结合彩灯实验项目,进行以下组织和安排:1. FPGA基础知识:- 数字电路设计基础;- FPGA原理与结构;- 硬件描述语言(HDL)入门。
2. 彩灯实验原理与设计:- 彩灯显示原理;- FPGA在彩灯控制中的应用;- 彩灯控制电路设计流程。
3. 教学大纲与进度安排:- 第一周:FPGA基本原理学习,了解硬件描述语言;- 第二周:数字电路设计基础,学习彩灯显示原理;- 第三周:彩灯控制电路设计,进行FPGA编程与仿真;- 第四周:电路调试与测试,优化设计方案。
4. 教材关联内容:- 教材第3章:“数字电路设计基础”;- 教材第4章:“FPGA原理与结构”;- 教材第5章:“硬件描述语言(HDL)应用”;- 教材第6章:“数字电路设计实例”。
5. 实践环节:- 彩灯控制电路设计实践;- FPGA编程与仿真;- 电路调试与故障排查。
三、教学方法针对FPGA课程设计报告彩灯实验,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:- 对FPGA基本原理、数字电路设计基础和硬件描述语言(HDL)等理论知识进行系统讲解,为学生奠定扎实的理论基础。
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课程设计课程设计报告
《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课程设计报告题目:采用RAM实现计数器及FPGA功能验证院系:电子工程学院专业班级:学生姓名:导师姓名:起止时间:2012-06-18至2012-06-292012年07 月01 日FPGA课程设计报告提纲1.任务用一个10×8的双口RAM完成10个8位计数器,计数器的初值分别为1~10,时钟频率为1MHz,计数器计数频率为1Hz。
用FPGA开发板上的按键作为计数器计数值的输出选择控制,数码管(或led)作为选择计数器的计数值输出。
2.目的采用RAM实现计数器及FPGA功能验证3.使用环境(软件/硬件环境,设备等)前仿modelsim 6.1f后仿Quartus II 10.1xilinx ise 9.1FPGA课程设计详细内容4.1 技术规范功能:1.先由复位键从选定的RAM地址中读出预置的8位初值存入计数模块。
2.由开始键开始计数,暂停键暂停计数并同时存入RAM中以选定的存储单元。
3. 双端口RAM为10×8RAM由一个地址切换键按顺序切换1~10个地址端口。
4.读出数据开始计数暂停计数存入数据计数流程5输出到数码管显示读取结果输出流程6.分频:1Hz的秒计时频率,用来进行秒计时;4.2 设计方案 信号定义:分频:1Hz 的秒计时频率, 用来进行秒计时分频:时钟信号clk ;分频信号 clk_1hz ;开始计时(使能)rst_n ; 切换端口 开始计 暂停计数存入数据计数:开始计数 rst_n计数器复位 reset ;计数输出 ain ; 计数暂停 pause ; 计数置数 reduce ;RAM:reg [7:0] ram[9:0] 10×8的RAM存储阵列10个字每个子8位使能ram_en输入端输入地址ain;输入数据din;上升沿有效写入信号wr;输出端输出地址aout;输出数据dout;上升沿有效读信号rd;4.3 功能验证方案1 验证对象及目的本验证方案将描述对双端口RAM计数器的验证。
FPGA大作业设计报告
FPGA大作业设计报告设计背景和目标:本次FPGA大作业的设计目标是实现一个基于FPGA的音频播放器。
音频播放器可以接收来自PC或其他音频设备的音频输入,并将其通过FPGA进行处理和放大,最终输出到音频输出设备中。
设计方案:本设计方案主要分为音频输入模块、音频处理模块和音频输出模块三部分。
音频输入模块:音频输入模块主要用于接收来自PC或其他音频设备的音频输入。
首先需要设置一个适当的输入接口,可以选择使用板载的音频输入接口或者通过FPGA的GPIO引脚连接外部音频输入接口。
在接收到音频输入之后,需要对音频数据进行采样和解码。
为了实现高质量的音频播放效果,可以使用高速ADC和DAC芯片进行音频数据的采样和输出。
音频处理模块:音频处理模块主要负责音频数据的处理和增强效果的实现。
首先,可以对音频数据进行数字滤波,包括低通滤波、高通滤波、带通滤波等处理。
滤波可以有效地去除噪音和杂音,提高音频的清晰度和音质。
其次,可以使用FPGA的DSP模块实现音频的均衡器和混响器效果,使音频的频谱更加平衡和丰富。
最后,为了增强音频的立体声效果,可以实现空间声音处理算法,使得音频的声音位置更加立体和自然。
音频输出模块:音频输出模块主要负责将经过处理的音频数据输出到音频输出设备中。
可以选择使用板载的音频输出接口或者通过FPGA的GPIO引脚连接外部音频输出接口。
输出模块还可以添加放大器电路,以增强音频的输出功率和音量。
设计实施:本次FPGA大作业的设计实施主要包括硬件电路设计和软件开发两个方面。
在硬件电路设计方面,需要首先选择合适的FPGA开发板,并配置好音频输入和输出接口。
根据设计方案,设计合适的音频输入和输出电路,并进行连线和焊接。
接下来,需要根据设计方案中的要求,选择合适的ADC和DAC芯片,并与FPGA进行连接。
最后,进行电路的调试和测试,确保音频输入和输出电路的正常工作。
设计成果和展望:通过本次FPGA大作业的设计和实施,成功实现了一个基于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代码进行仿真,以验证其功能的正确性。
FPGA课程设计报告
FPGA课程设计报告专业:通信工程班级:班姓名:学号:指导老师:祝*制作日期:11.10—11.20设计课题1:设计一个可控的100进制可逆计数器,要求用DE2-115开发板下载。
(1)计数器的时钟输入信号周期为200ns。
(2)以十进制形式显示。
(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。
设计步骤第一步:参考书中的60进制计数器设计出100进制的加法计数器,用时30分钟;第二步:仿照100进制的加法可以设计出100进制的减法计数器,用时45分钟;第三步:将两段程序拼凑起来,利用两个控制端控制加减和暂停功能,用时15分钟。
关键词可逆;暂停;循环计数。
内容摘要计数器具有复位、增减计数和暂停功能,可循环计数,可用作平时的计数器用。
总体方案顶层逻辑电路图上图为100进制可逆计数器的封装图,sw[0]控制计数脉冲的频率大小,sw[1]控制清零端,sw[2]和sw[3]为两个控制端plus和minus,hex1和hex0分别显示100进制的十位和个位。
底层功能模块设计100进制可逆加减的程序代码:module count100(qout,//输出的数字cout,//进位data,//置位数字load,//置位端clr,//清零端clk,//时钟脉冲plus,//控制端minus//控制端);input load,clk,clr,plus,minus;input[7:0] data;//输入output [7:0] qout;reg[7:0] qout;output cout;//输出always @(posedge clk)//脉冲beginif(!clr) qout<=0;//如果清零端为0,将输出清零else if(load) qout<=data;//如果置数端为1,将置数端数字给输出else if(plus&!minus&qout[3:0]==9&qout[7:4]==9) qout<=0;//当plus为1且minus为0时如果计数到99时回到00else if(plus&!minus) //plus为1,minus为0,递增计数beginif(qout[3:0]==9)beginqout[3:0]<=0;if(qout[7:4]==9) qout[7:4]<=0;elseqout[7:4]<=qout[7:4]+1;endelse qout[3:0]<=qout[3:0]+1;endelse if(!plus&minus) //plus为0,minus为1,递减计数beginif(qout[3:0]==0)beginqout[3:0]<=9;if (qout[7:4]==0) qout[7:4]<=9;elseqout[7:4]<=qout[7:4]-1;endelse qout[3:0]<=qout[3:0]-1;endelse if(plus&minus) // qout<=qout;//plus为1,minus为1,暂停计数else qout<=0; //为其他时清零endassign cout=(qout==8'd99)?1:0; //为99时进位端进endmodule注释:利用plus和minus的几种组合可控制加减和暂停计数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电学院
FPGA课程设计报告
题目:采用RAM实现计数器及FPGA功能验证
院系:电子工程学院
专业班级:
学生姓名:
导师姓名:
起止时间:2012-06-18至2012-06-29
2012年07 月01 日
FPGA课程设计报告提纲
1.任务
用一个10×8的双口RAM完成10个8位计数器,计数器的初值分别为
1~10,时钟频率为1MHz,计数器计数频率为1Hz。
用FPGA开发板上的按键作为计数器计数值的输出选择控制,数码管
(或led)作为选择计数器的计数值输出。
2.目的
采用RAM实现计数器及FPGA功能验证
3.使用环境(软件/硬件环境,设备等)
前仿modelsim 6.1f
后仿Quartus II 10.1
xilinx ise 9.1
FPGA课程设计详细内容
4.1 技术规范
功能:
1.先由复位键从选定的RAM地址中读出预置的8位初值存入计数模块。
2.由开始键开始计数,暂停键暂停计数并同时存入RAM中以选定的存储单元。
3. 双端口RAM为10×8RAM由一个地址切换键按顺序切换1~10个地址端
口。
4.读出数据开始计数暂
停计数存入数据
计数流程
5输出到数
码管显示
读取结果输出流程
6.分频:1Hz的秒计时频率,用来进行秒计时;
4.2 设计方案 信号定义:
分频:1Hz 的秒计时频率, 用来进行秒计时
分频:时钟信号clk ;
分频信号 clk_1hz ;
开始计时(使能)
rst_n ; 切换端口 开始计 暂停计数
存入数据
计数:开始计数 rst_n
计数器复位 reset ;
计数输出 ain ; 计数暂停 pause ; 计数置数 reduce ;
RAM:reg [7:0] ram[9:0] 10×8的RAM存储阵列10个字每个子8位使能ram_en
输入端输入地址ain;
输入数据din;
上升沿有效写入信号wr;
输出端输出地址aout;
输出数据dout;
上升沿有效读信号rd;
4.3 功能验证方案
1 验证对象及目的
本验证方案将描述对双端口RAM计数器的验证。
在本文中验证指使用软件工具进行对其功能进行验证。
双端口RAM计数器功能和指标的详细描述请参见《双端口RAM计数器技术规范.doc》
在本文所描述的验证过程中侧重对RAM数据的读取进行验证,指标主要在硬件验证和测试过程中完成。
在本验证过程中将验证以下内容:
功能验证
功能要求:
1.先由复位键从选定的RAM地址中读出预置的8位初值存入计数模块。
2.由开始键开始计数,暂停键暂停计数并同时存入RAM中以选定的存储单元。
3. 双端口RAM为10×8RAM由一个地址切换键按顺序切换1~10个地址端
口。
4.读出数据开始计数暂
停计数存入数据
计数流程
5输出到数
码管显示
读取结果输出流程
6.分频:1Hz的秒计时频率,用来进行秒计时;
2验证环境及工具
根据情况验证过程将使用以下的环境和工具进行:
a)windows环境下使用ModelSim仿真工具;
b)windows环境下使用QuartusII工具。
为进行验证还应当建立仿真激励模块
3 预确认:
(1)系统主要技术参数;
经分析,系统的的主要参数包括:引脚数目,引脚工作电压,工作电源电
压,系统的工作频率。
(2)系统的模块数目及各模块实现的功能及如何知道模块工作正常;
(3)总模块验证,看总系统是否正常工作。
4 仿真确认:
4.1 目的
初步确认系统是否完成预期设计的功能;
先分析芯片所有模块连接关系,如下图
4.2 逐个完成各个模块的验证
①分频模块:由于系统提供的频率为50Mhz而计数时需要的是每秒那样计数,故需要将50Mhz分频为1hz.可为该程序编写激励,得到输出,用输出的频率与想要得到的1hz的信号进行比较,即可验证。
②计数模块:编写完成后可通过查看仿真图形确认计数范围,位宽等功能的正确。
③RAM存取模块:需在仿真中编写测试激励对RAM进行存取验证,在仿真图形中确认RAM的存取功能的正确性。
④顶层模块:在顶层模块中,调用上面的三个模块,通过相应的操作,可进行仿真
4.3 验证空标志产生逻辑:
先将复位信号置0(有效),在一定时间内看系统是否产生空标志;
4.4验证正常情况下的信号:
系统运行时,让复位信号为1(即复位无效),根据输入信号得出输出信号,与想要得到的信号进行比较。
4.4 电路设计源代码,功能仿真激励源代码及功能仿真结果报告
计数器
分频
数码管
4.5 综合及布局布线报告和引脚分布报告4.6 后仿真结果报告
4.7 硬件测试结果报告
下载到实验板上可实现mode键切换对应1~10个地址
Lode键用来读取RAM中的数据到计数器
STAR键开始计数并同时存入RAM
切换mode并用load读出RAM中各地址中数据显示到lcd显示屏上4.8 对结果和结论的问题讨论
4.课程设计的心得体会
在本次的课程设计报告中我学会了如何使用modesim和quartus软件进行电路的验证和仿真。
在电路的设计初始时刻,我没有按照设计电路时从上到下的设计方法,而是盲目的进行对电路的模块进行设计。
结果在最后的设计综合的时候,设计的各个模块不能进行顺利的综合和仿真。
在电子钟的设计中我对时钟的理解不是很透彻,因此在进行计时的时候出现了很多的问题。
在进行时分秒的计时时,我对时间的如何进位没有很好的理解,在计时时出现了很多问题,最后在同学的帮助下得到了很好的解决。
在对按键的使用中我也出现了很困惑的问题。
调整时间的时候,我使用了按键的触发,结果在时间调整计时的时候老是出现时间的快速跳动和不确定性。
最后我引入了按键的扫描时钟,使用4Hz的频率来扫描按键的高低电平,然后利用按键的高低电平来触发调整计时的触发频率,这样很好的解决了按键的抖动问题。
在时钟的设计方面,尽量避免时钟延迟,因为一级延迟可能导致后面模块现以外而不可避免的错误,所以在设计时,要细致认真的设计时钟信号。
且,在每个使用的if语句过程中,要尽量与else进行匹配,以免产生锁存。
在使用verilog HDL进行电路代码的书写时,应该首先总体的设计电路的总体输入和输出引脚。
并且定义它们的作用。
这样我们就可以在宏观上对自己设计的电路有了一个整体的理解,不至于在自己设计的时候出现对电路的盲目理解。
在定义了引脚后,我们应该对电路进行模块化。
对电路所要实现的功能进行模块化,然后在进行各个模块的定义和实现。
对各个模块的引脚定义,实现功能和各模块之间的联系,我们应该有一个很好的宏观调控和理解。
再次是,在试验中,应学习模块设计过程中的分析问题的方法,比如采用自顶向下还是采用自底向上的思路,要将每个模块划分清楚,明白每个模块的具体内容与功能,且明白每个模块所需的端口以及变量定义。
先写好可行性报告,分析方案的可行性,然后再书写电路,进行设计。
我想,在模块设计中,一定要先验证可行性,为后面工作做好铺垫,且此工作是必不可少的,因为不进行分析,有可能会导致在继续工作过程中会发现此方案不可行,所以,正所谓磨刀不误砍柴工,做好前序工作,后端的工作就显得一马平川了。
5.参考资料等。