FPGA实验2 双口RAM的仿真与综合.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FPGA实验2 双口RAM的仿真与综合

实验题目 双口RAM的仿真与综合 实验内容 写出双口RAM的设计模块以及激励,并对它进行仿真与综合; 双口RAM的端口有写时钟控制端口wr_clk、写始能端口wr_en、数据输入端口data_in、写地址端口wr_addr、读时钟端口rd_clk、读始能端口rd_en、读地址端口rd_addr以及输出端口data_out; 进一步熟悉QuartusII软件和modelsim软件的功能及环境。 学会使用modelsim软件进行前仿真,使用QuartusII软件进行综合进而在modelsim软件环境下进行后仿真。 详细设计 设计步骤如下: 设计一个双口RAM,有写时钟控制端口wr_clk、写始能端口wr_en、数据输入端口data_in、写地址端口wr_addr、读时钟端口rd_clk、读始能端口rd_en、读地址端口rd_addr以及输出端口data_out; 编译,查找错误,进入仿真环境进行前仿真; 在QuartusII软件环境下进行综合,得出布线图; 在modelsim软件环境下进行后仿真。 根据仿真结果分析,最后得出结论。 仿真结果 前仿真的结果如下: 由仿真结果可得出双口RAM,有写时钟控制端口wr_clk、写始能端口wr_en、数据输入端口data_in、写地址端口wr_addr、读时钟端口rd_clk、读始能端口rd_en、读地址端口rd_addr以及输出端口data_out。开始在没有数据输入时,输出数据为不确定态。接下来给出地址依据地址寻找数据,在写始能端有效时写入数据并在读始能有效时才读出数据,及输出数据。 后仿真结果如下: 经过综合得出后仿真结果可以得出输出数据存在一定的时延,数据在输出时必须经过一定时间后才能有稳定的输出,可见前仿真比较稳定,后仿真有延时,更接近实际。 (3)查看设计对应的寄存器传输级视图: (4)在modelsim环境下仿真时的芯片图如下: 此图为地址为3时写入数据34,并读出数据为34的电路仿真图 (5)仿真线路图以及展开设计对应的寄存器传输级视图 四、 调试情况,设计技巧及体会 通过本次实验我更加熟悉了利用verilo语言来描述电路,同时熟悉了利用软件仿真电路的逻辑功能并进行验证和分析。使我对QuartusII有了初步的了解,同时让我了解到硬件可以用软件来完成,此软件的模拟仿真给我们学习数字电路有很大的帮助,形象的表达了信号的输出。通过本次实验,除modelsim软件仿真电路以外,我又学会了QuartusII仿真软件的使用,觉得两个软件各自有各自的优点。并学会使用QuartusII进行对软件的综合并学会了后仿真。 源程序清单 设计程序: module db2ram(wr_clk,wr_en,wr_addr,data_in, rd_clk,rd_en,rd_addr,data_out ); input rd_clk,rd_en,wr_clk,wr_en; input [7:0] data_in; input [9:0] rd_addr,wr_addr; output [7:0] data_out; reg [7:0] data_out; reg [7:0] mem [1023:0]; always @(posedge wr_clk) if(wr_en) mem[wr_addr] = data_in; always @(posedge rd_clk) if(rd_en) data_out = mem[rd_addr]; endmodule (2)激励如下: `timescale 1 ns/1 ns module stimulateram; reg RD_CLK,RD_EN,WR_CLK,WR_EN; reg [7:0] DATA_IN; reg [9:0] RD_ADDR,WR_ADDR; wire [7:0] DATA_OUT; db2ram ram(WR_CLK,WR_EN,WR_ADDR,DATA_IN, RD_CLK,RD_EN,RD_ADDR,DATA_OUT ); initial WR_CLK=0; always #5 WR_CLK=~WR_CLK; initial RD_CLK=0; always #5 RD_CLK=~RD_CLK; initial begin WR_EN = 0; RD_EN = 0; DATA_IN = 8d23; WR_ADDR = 10d0; RD_ADDR = 10d0; #10 WR_EN = 1; #10 RD_EN = 1; #20 WR_EN = 0; RD_EN

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档