银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-02-27 | gingko | 初次建立 |
二、 实验设备及平台
1、 打开 Tools——MegaWizard Plug-In Manager. 2、创建IP核,点击next。 3、在弹出界面1存储器列表里选择2双口RAM。3处选择FPGA类型。4处选择输出文件语言类型。5处设置文件存储位置和命名。点击6处next进行下一项设置。 4、设置如下 5、设置存储器深度为256,输出总线宽度16bit,使用FPGA逻辑资源类型选择自动分配。点击next。 6、配置端口时钟和读使能信号。 7、注意红框中不打勾,点击Next, 8、后面几项保持默认设置,直接点击Next,最后点击Finish,双口RAM就构建好了。注意:在存储内容初始化选项设置里选择保持空白,因为本实验是要向双口RAM中写入数据再读出数据并进行对比的操作,不需要在存储器内预装数据。
always @ (posedge a_clk or negedge rst_n) begin if(!rst_n) begin a_wren <= 1'd0; a_rden <= 1'd0; a_datain <= 10'd0; a_addr <= 10'd0; end else if(cnt >= 10'd0 && cnt <=10'd255) begin a_wren <= 1'd1; //写使能信号拉高 a_addr <= cnt; //写地址 a_datain <= cnt; //写入数据 a_rden <= 1'd0; //读使能信号拉低 end else if(cnt >= 10'd256 && cnt <= 10'd511) begin a_rden <= 1'd1; //读使能信号拉高 a_addr <= cnt - 10'd256; //读地址 a_wren <= 1'd0; //写使能信号拉低 end end
//--------------------------ram_b_rd---------------------------// /*控制ram_b端口的读取功能,当读信号来临时,读取相应的数据发送至fsmc总线*/ wire rd = (CS0 | RD); //提取读信号 wire wr = (CS0 | WR); //提取写信号 reg wr_clk1,wr_clk2; always @(posedge PLL_100M or negedge rst_n) begin if(!rst_n) begin wr_clk1 <= 1'd1; wr_clk2 <= 1'd1; end else {wr_clk2,wr_clk1} <= {wr_clk1,wr}; end wire b_clk = (!wr_clk2 | !rd); //提取ram_b端口的时钟 assign DB = !rd ? b_dataout : 16'hzzzz; //读信号来临,读取ram_b端口数据