FPGA设计报告

合集下载

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逻辑设计方案报告一、引言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综合设计报告

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课程设计报告

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大作业设计报告

数字电子技术实验课程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课程设计报告

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实验报告5篇

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)所示。

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

相关文档
最新文档