内嵌bram设计lifo

内嵌bram设计lifo

ID:11934795

大小:303.05 KB

页数:13页

时间:2018-07-15

内嵌bram设计lifo_第1页
内嵌bram设计lifo_第2页
内嵌bram设计lifo_第3页
内嵌bram设计lifo_第4页
内嵌bram设计lifo_第5页
资源描述:

《内嵌bram设计lifo》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、大学实验报告课程名称:数字系统现场集成技术实验项目名称:实验三(内嵌BRAM设计LIFO堆栈)学院:专业:集成电路设计与集成系统指导教师:报告人学号实验时实验报告提交时间:教务部制实验目的与要求:基本要求:该实验为团队协作,2人一个小组。具有先进后出的堆栈功能。此LIFO堆栈具有两个按键(write,read),按下write键后,开始输入数据data0-data3;按下read键后,7段数码管开始倒序显示data3-data0(十进制)。实验最终达到效果:本实验效果:设计一个16位位深,8位位宽的bra

2、m,数码管分别显示要往bram里写的数值,当前读写bram的地址,以及从bram读取出来的数值。数值的输入采用八位拨码开关进行输入,通过数码管可以看出当前拨码开关对应的数值,只要按下lifo的写按钮,就可以往bram里写入当前的值,写了若干个数值后,每按下一次lifo的写按钮,就可以从bram里读取一位数据,显示在数码管上(由于VGA的显示,需要大量编写每个数字对应的像素,较为繁琐,所以本实验采用数码管显示)实验主要代码(由于代码较多,贴出主要代码):数码管驱动代码:moduleseg_drv(inputc

3、lk,inputrst,input[7:0]first_seg,input[7:0]second_seg,input[7:0]third_seg,//input[7:0]forth_seg,outputreg[3:0]an,outputreg[7:0]seg);localparam[1:0]s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;reg[1:0]state;always@(posedgeclk,posedgerst)beginif(rst)beginan<=4'b1111;s

4、eg<=8'b1111_1111;state<=s0;endelsebegincase(state)s0:beginan<=4'b1110;seg<=first_seg;if(ms_up)state<=s1;elsestate<=state;ends1:beginan<=4'b1101;seg<=second_seg;if(ms_up)state<=s2;elsestate<=state;ends2:beginan<=4'b1011;seg<=third_seg;if(ms_up)state<=s3;els

5、estate<=state;ends3:beginan<=4'b1111;seg<=1111_1111;if(ms_up)state<=s0;elsestate<=state;endendcaseendendreg[17:0]ms_cnt;regms_up;always@(posedgeclk,posedgerst)beginif(rst)beginms_cnt<=0;ms_up<=0;endelsebeginif(ms_cnt==200000)beginms_cnt<=0;ms_up<=1;endelse

6、beginms_cnt<=ms_cnt+1'b1;ms_up<=0;endendendendmoduleLifo读按键代码:modulebtn_scan_read(inputclk,inputrst,inputbtn,outputregbtn_down);localparam[1:0]s0=2'b00,s1=2'b01,s2=2'b10;reg[1:0]state;always@(posedgeclk,posedgerst)beginif(rst)beginbtn_down<=1'b0;state<=s0;

7、endelsebegincase(state)s0:beginbtn_down<=1'b0;if(btn)state<=s1;elsestate<=s0;ends1:beginif(cnt_done)beginif(btn)state<=s2;elsestate<=s0;endelsestate<=s1;ends2:beginif(btn==1'b0)beginbtn_down<=1'b1;state<=s0;endelsebeginbtn_down<=btn_down;state<=s2;endenden

8、dcaseendendreg[20:0]cnt;regcnt_done;always@(posedgeclk,posedgerst)beginif(rst)begincnt<=21'b0;cnt_done<=1'b0;endelseif(state==s1)begincnt<=cnt+1'b1;if(cnt==21'd2000000)begincnt<=21'b0;cnt_done<=1'b1;endendels

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。