欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《VHDL存储器》PPT课件.ppt

    • 资源ID:5454317       资源大小:205.49KB        全文页数:31页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《VHDL存储器》PPT课件.ppt

    典型的存储器模块有:寻址存储器:ROM RAM 顺序存储器:FIFO Stack(LIFO),存储器模块的VHDL设计,ROM和RAM属于通用大规模器件,一般不需要自行设计;但是在数字系统中,有时也需要设计一些小型的存储器件,用于特定的用途:l例如临时存放数据,构成查表运算等。此类器件的特点为地址与存储内容直接对应,设计时将输入地址作为给出输出内容的条件,采用条件赋值方式进行设计。,寻址存储器的VHDL设计,设计思想:将每个8位数组作为一个字(word);总共存储16个字;将ram作为由16个字构成的数组,以地址为下标;通过读写控制模式实现对特定地址上字的读出或写入;,寻址存储器设计:16x8位RAM,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity kram is port(clk,wr,cs:in std_logic;d:inout std_logic_vector(7 downto 0);adr:in std_logic_vector(3 downto 0);end kram;,寻址存储器设计:16x8位RAM,architecture beh of kram issubtype word is std_logic_vector(7 downto 0);type memory is array(0 to 15)of word;signal adr_in:integer range 0 to 15;signal sram:memory;beginadr_in=conv_integer(adr);-将地址转换为数组下标 process(clk)begin,寻址存储器设计:16x8位RAM,if(clkevent and clk=1)then if(cs=1and wr=1)then-片选、写 sram(adr_in)=d;end if;if(cs=1and wr=0)then-片选、读 d=sram(adr_in);end if;end if;end process;end beh;,寻址存储器设计:16x8位RAM,ROM的内容是初始设计电路时就写入到内部的,通常采用电路的固定结构来实现存储;ROM只需设置数据输出端口和地址输入端口;设计思想:采用二进制译码器的设计方式,将每个输入组态对应的输出与一组存储数据对应起来;,寻址存储器设计:16x8位ROM,library ieee;use ieee.std_logic_1164.all;entity rom is port(dataout:out std_logic_vector(7 downto 0);addr:in std_logic_vector(3 downto 0);ce:in std_logic);end rom;,寻址存储器设计:16x8位ROM,architecture d of rom is signal id:std_logic_vector(4 downto 0);begin id=addr dataout=00001111 when id=00000 else 11110000 when id=00010 else 11001100 when id=00100 else 00110011 when id=00110 else 10101010 when id=01000 else 01010101 when id=01010 else 10011001 when id=01100 else,寻址存储器设计:16x8位ROM,01100110 when id=01110 else 00000000 when id=10000 else 11111111 when id=10010 else 00010001 when id=10100 else 10001000 when id=10110 else 10011001 when id=11000 else 01100110 when id=11010 else 10100110 when id=11100 else 01100111 when id=11110 else XXXXXXXX;end d;,寻址存储器设计:16x8位ROM,顺序存储器的特点是不设置地址,所有数据的写入和读出都按顺序进行;数据写入或读出时通常采用移位操作设计;在设计时必须考虑各存储单元的存储状态;,顺序存储器(堆栈和FIFO)的设计,设计要求:存入数据按顺序排放;存储器全满时给出信号并拒绝继续存入;数据读出时按后进先出原则;存储数据一旦读出就从存储器中消失;,堆栈(后进先出存储器)的设计,设计思想:将每个存储单元设置为字(word);存储器整体作为由字构成的数组;为每个字设置一个标记(flag),用以表达该存储单元是否已经存放了数据;每写入或读出一个数据时,字的数组内容进行相应的移动,标记也做相应的变化;,堆栈(后进先出存储器)的设计,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity stack is port(datain:in std_logic_vector(7 downto 0);push,pop,reset,clk:in std_logic;stackfull:out std_logic;dataout:buffer std_logic_vector(7 downto 0);end stack;,堆栈设计:移位寄存器方式,architecture b of stack istype arraylogic is array(15 downto 0)of std_logic_vector(7 downto 0);signal data:arraylogic;signal stackflag:std_logic_vector(15 downto 0);begin stackfull=stackflag(0);process(clk,reset,pop,push)variable selfunction:std_logic_vector(1 downto 0);begin selfunction:=push,堆栈设计:移位寄存器方式,if reset=1 then stackflag0);dataout0);for i in 0 to 15 loop data(i)if stackflag(0)=0 then data(15)=datain;stackflag=1,堆栈设计:移位寄存器方式,when 01=dataoutnull;end case;end if;end process;end b;,堆栈设计:移位寄存器方式,architecture b of stack istype arraylogic is array(15 downto 0)of std_logic_vector(7 downto 0);signal data:arraylogic;beginprocess(clk,reset,pop,push)variable p:natural range 0 to 15;variable selfunction:std_logic_vector(1 downto 0);variable s:std_logic;begin,堆栈设计:地址指针方式,stackfull0);s:=0;for i in 0 to 15 loop data(i)=00000000;end loop;elsif clkevent and clk=1 then if p15 and selfunction=10 then data(p)=datain;p:=p+1;end if;,堆栈设计:地址指针方式,if p=15 and selfunction=10 and s=0 then data(p)0 and selfunction=01 and s=0 then p:=p-1;dataout=data(p);end if;if p=15 and selfunction=01 and s=1 then dataout=data(p);s:=0;end if;end if;end process;end b;,堆栈设计:地址指针方式,设计要求:存入数据按顺序排放;存储器全满时给出信号并拒绝继续存入;全空时也给出信号并拒绝读出;读出时按先进先出原则;存储数据一旦读出就从存储器中消失;,FIFO(先进先出存储器)的设计,设计思想:结合堆栈指针的设计思想,采用环行寄存器方式进行设计;分别设置写入指针wp和读出指针rp,标记下一个写入地址和读出地址;地址随写入或读出过程顺序变动;设计时需要注意处理好从地址最高位到地址最地位的变化;,FIFO(先进先出存储器)的设计,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_signed.all;entity kfifo is port(datain:in std_logic_vector(7 downto 0);push,pop,reset,clk:in std_logic;full,empty:out std_logic;dataout:out std_logic_vector(7 downto 0);end kfifo;,FIFO设计:地址指针方式,architecture b of kfifo istype arraylogic is array(15 downto 0)of std_logic_vector(7 downto 0);signal data:arraylogic;signal fi,ei:std_logic;-为全满全空设置内部信号,以便内部调用;signal wp,rp:natural range 0 to 15;-写入指针和读出指针;begin,FIFO设计:地址指针方式,process(clk,reset,pop,push)variable selfunction:std_logic_vector(1 downto 0);begin full0);for i in 0 to 15 loop data(i)=00000000;end loop;,FIFO设计:地址指针方式,elsif clkevent and clk=1 thenif fi=0 and selfunction=10 and wp15 then data(wp)=datain;-写入数据;wp=wp+1;if wp=rp then fi=1;end if;if ei=1 then ei=0;end if;end if;if fi=0 and selfunction=10 and wp=15 then data(wp)=datain;wp=0;if wp=rp then fi=1;end if;if ei=1 then ei=0;end if;end if;,FIFO设计:地址指针方式,if ei=0 and selfunction=01 and rp15 then dataout=data(rp);-读出数据;rp=rp+1;if wp=rp then ei=1;end if;if fi=1 then fi=0;end if;end if;if ei=0 and selfunction=01 and rp=15 then dataout=data(rp);rp=0;if wp=rp then ei=1;end if;if fi=1 then fi=0;end if;end if;end if;end process;end b;,library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity fifo2 is port(data:in std_logic_vector(7 downto 0);wrreq,rdreq,clock,aclr:in std_logic;q:out std_logic_vector(7 downto 0);full,empty:out std_logic;usedw:out std_logic_vector(3 downto 0);end fifo2;,FIFO设计:利用参数化模块,architecture str of fifo2 issignal sub_wire0:std_logic_vector(3 downto 0);signal sub_wire1:std_logic;signal sub_wire2:std_logic_vector(7 downto 0);signal sub_wire3:std_logic;begin usedw=sub_wire0(3 downto 0);empty=sub_wire1;q=sub_wire2(7 downto 0);full=sub_wire3;,FIFO设计:利用参数化模块,lpm_fifo_component:lpm_fifogeneric map(lpm_width=8,lpm_numwords=16,lpm_widthu=4,lpm_showahead=off,lpm_hint=use_eab=on,maximize_speed=5),FIFO设计:利用参数化模块,port map(rdreq=rdreq,aclr=aclr,clock=clock,wrreq=wrreq,data=data,usedw=sub_wire0,empty=sub_wire1,q=sub_wire2,full=sub_wire3);end str;,FIFO设计:利用参数化模块,

    注意事项

    本文(《VHDL存储器》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开