FPGA课程设计基于RAM十口8位计数器.docx
《FPGA课程设计基于RAM十口8位计数器.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计基于RAM十口8位计数器.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FPGA课程设计基于RAM十口8位计数器 FPGA课程设计报告 题 目: 基于RAM的十口8位计数器 院 系: 通信与信息工程学院 专业班级: 电科班 学生姓名: 导师姓名: 起止时间: 2012-9-10 至 2012-9-21 年 月 日 FPGA课程设计报告提纲 1 任务 用一个108的双口RAM完成10个8位计数器,计数器的初值分别为110,时钟频率为1MHz,计数器计数频率为1Hz。 用FPGA开发板上的按键作为计数器计数值的输出选择限制,数码管 (或led)作为选择计数器的计数值输出。 2 目的 采纳RAM实现计数器及FPGA功能验证 3 运用环境 (软件/硬件环境,设备等) 前仿
2、 modelsim 6.1f 后仿 Quartus II10.1 4 FPGA课程设计具体内容 4.1 技术规范 功能: 1 先由复位键从选定的RAM地址中读出预置的8位初值存入计数模块。 2. 由起先键起先计数,暂停键暂停计数并同时存入RAM中以选定的存储单元。 3. 双端口RAM为108RAM由一个地址切换键按依次切换110个地址端口。 4.系统工作流程: 切换端口 读出数据 起先计数 暂停计数 存入数据 计数流程 5切换端口 读出数 七段显示译码器译码 输出到数码管显示 读取结果输出流程 6 分频:1Hz的秒计时频率,用来进行秒计时; 4.2 设计方案 信号定义: 分频模块 Clk_50
3、MHz clk_1Hz reset clk_1MHz 分频:1Hz的秒计时频率,用来进行秒计时 分频:时钟信号clk_50MHz; 分频信号 clk_1Hz; 分频信号 clk_1MHz; 计数模块 由RAM读出初值dout clk clk_1hz dout 7:0 din7:0 start start reset 切换端口 读出数据 起先计数 暂停计数 存入数据 计数:起先计数 start 计数器复位 reset; 计数输出 din7:0; 计数置数 add; 七段显示译码器 数码管 dout 显示模块 wr 7:0din clk_50MHz 108RAM计数器 dout7:0 3:0wr_
4、address rd 3:0rd_adddress reseteetet start add RAM:108的RAM存储阵列10个字每个子8位 输入端 输入地址 wr_address 3:0; 输入数据 din7:0; 上升沿有效写入信号 wr; 输出端 输出地址rd_address3:0; 输出数据 dout7:0; 上升沿有效读信号 rd; 端口 I/O 功能 rd I 读使能,高电平有效;系统使能工作,将din数据写入ram的存储单元中 wr O 写使能,高电平有效;将ram存储单元中的数据读出dout. Wr_address3:0 I 写地址 din7:0 I 数据输入口,内部接口 d
5、out7:0 O 数据输出,内部数据传送 reset I 复位端,时钟下降沿有效 add I 计数器置数端 start I 起先/暂停键,高电平起先,低电平暂停 Rd_address3:0 I 读地址 rd_clk I 读时钟,下降沿触发 wr_clk I 写时钟,上升沿触发 地址划分: ain3:0 Ram存储单元 0001 0000_0001 0010 0000_0010 0011 0000_0011 0100 0000_0100 0101 0000_0101 0110 0000_0110 0111 0000_0111 1000 0000_1000 1001 0000_1001 1010
6、0000_1010 En 数码管(或led)显示模块 start RAM输入/输出 110 clk_1hz clk 计数模块 置数 限制 分频模块 限制模块:起先、暂停、返回初值,计数器显示切换 4.3 功能验证方案 (1)验证对象及目的 本验证方案将描述对双端口RAM计数器的验证。在本文中验证指运用软件工具对其功能进行验证。 双端口RAM计数器功能和指标的具体描述请参见双端口RAM计数器技术规范.doc 在本文所描述的验证过程中侧重对RAM数据的读取进行验证,指标主要在硬件验证和测试过程中完成。 在本验证过程中将验证以下内容: (2)验证环境及工具 依据状况验证过程将运用以下的环境和工具进行
7、: a)windows环境下运用ModelSim仿真工具; b)windows环境下运用QuartusII工具。 为进行验证还应当建立仿真激励模块 (3)预确认 a.系统主要技术参数; 经分析,系统的的主要参数包括:引脚数目,引脚工作电压,电源电压,系统的工作频率。 b.系统的模块数目及各模块实现的功能及如何知道模块工作正常; c.总模块验证,看总系统是否正常工作。 ( 4)仿真确认: a.目的 初步确认系统是否完成预期设计的功能; 先分析芯片全部模块连接关系,如下图 时钟分频模块 计数模块,实现计数,暂停,和与RAM之间的数据存取 clk(50M) en clk_1Hz 显示模块 led显示
8、 clk (50M) 地址限制 108RAM en b.逐个完成各个模块的验证 分频模块:由于系统供应的频率为50MHz而计数时须要的是每秒那样计数,故须要将50MHz分频为1Hz.可为该程序编写激励,得到输出,用输出的频率与想要得到的1Hz的信号进行比较,即可验证。 计数模块:编写完成后可通过查看仿真图形确认计数范围,位宽等功能的正确。 RAM存取模块:需在仿真中编写测试激励对RAM进行存取验证,在仿真图形中确认RAM的存取功能的正确性。 显示模块:把计数的结果通过七段显示译码器显示在数码管上,视察数码管上的数字改变规律即可验证显示模块是否正确。 c.验证空标记产生逻辑: 先将复位信号置0(
9、有效),在肯定时间内看系统是否产生空标记; d.验证正常状况下的信号: 系统运行时,让复位信号为1(即复位无效),依据输入信号得出输出信号,与想要得到的信号进行比较。 4.4 电路设计源代码,功能仿真激励源代码及功能仿真结果报告 分频器模块: module FPQ (clk_50MHz,clk_1MHz,reset,clk_1Hz); input clk_50MHz,reset; output clk_1MHz,clk_1Hz; reg clk_1Hz=0; reg clk_1MH z=0; reg 31:0 cnt1=32d0; reg 31:0 cnt2=32d0; always(pose
10、dge clk_50MHz or negedge reset) begin if(!reset) clk_1Hz<=32d0; else begin if(cnt1=32d100) begin cnt1<=32d0;clk_1Hz<=clk_1Hz; end else cnt1<=cnt1+32d1; end end always(posedge clk_50MHz or negedge reset) begin if(!reset) clk_1MHz<=32d0; else begin if(cnt2=32d255) begin cnt2<=32d0; c
11、lk_1MHz<=clk_1MHz; end else cnt2<=cnt2+32d1; end end endmodule 分频器模块激励: module FPQ_test; reg clk_50MHz,reset; wire clk_1MHz;wire clk_1Hz; always # 2 clk_50MHz=clk_50MHz; FPQ fpq(.reset(reset),.clk_50MHz(clk_50MHz),.clk_1MHz(clk_1MHz),.clk_1Hz(clk_1Hz); initial begin reset<=0; clk_50MHz<=
12、0; #100 reset<=1; end endmodule 计数器模块: module JSQ(start,data,clk_1Hz,add,c_out); input clk_1Hz,add; input start; input 7:0data; output c_out; reg 7:0 c_out; always(posedge clk_1Hz or negedge add ) begin if(!add) begin c_out<=data; end else begin if(start) begin c_out<=c_out+8d1; if(c_out=8d
13、255) begin c_out<=0; end else c_out<=c_out+8d1; end else c_out<=c_out; end end endmodule 计数器激励: module JSQ_test; reg start,add; reg clk_1Hz; reg 7:0data; wire 7:0 c_out; always #1 clk_1Hz=clk_1Hz; JSQ jsq(.start(start),.add(add),.clk_1Hz(clk_1Hz),.data(data),.c_out(c_out); initial begin clk
14、_1Hz=0; add=0; start=0; data=8d1; #15 add=1; #15 start=1; #600 start=0; end endmodule 数码管显示模块: module SMG (clk_1MHz,data,data_g,data_s,data_b); input7:0 data; input clk_1MHz; output data_b; output data_s; output data_g; reg6:0data_b; reg6:0data_s; reg6:0data_g; reg 7:0mid_b; reg 7:0mid_s; reg 7:0mid
15、_g; always(posedge clk_1MHz) begin mid_b<=data/100; mid_s<=data%100/10; mid_g<=data%10; end always(mid_b) begin case(mid_b) 7d0:data_b<=7hC0; 7d1:data_b<=7hF9; 7d2:data_b<=7hA4; 7d3:data_b<=7hB0; 7d4:data_b<=7h99; 7d5:data_b<=7h92; 7d6:data_b<=7h82; 7d7:data_b<=7hf8;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 课程设计 基于 RAM 计数器
限制150内