VHDL第十三章.ppt
《VHDL第十三章.ppt》由会员分享,可在线阅读,更多相关《VHDL第十三章.ppt(56页珍藏版)》请在三一文库上搜索。
1、131 8位并行预置加法计数器设计 例13-1描述的是一个含计数使能、异步复位和计数值并行预置功能的8位加法计数器。其中d (7 DOWNTO 0)为8位并行输入预置值;ld,ce,clk,rst分别为计数器的并行输入预置使能信号、计数时钟使能信号、计数时钟信号和复位信号,例13-1:文件名:countervhd LIBRARY IEEE; USE IEEESTD_LOGIC_1164ALL; USE IEEESTD_LOGIC_UNSIGNEDALL; ENTITY counter IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; ld,ce,clk,r
2、st:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; END counter;,ARCHITECTURE behave OF counter IS SIGNAL count:STD_LOGIC_VECTOR( 7 DOWNTO 0); BEGIN PROCESS(clk,rst) BEGIN IF rst=1 THEN count0) ; ELSIF RISING_EDGE(Clk) THEN IF ld=1 THEN count=d ; ELSIF ce =1 THEN count= count+1; END IF; END IF; EN
3、D PROCESS; q=count; END behave;,132 位宽可预置中断处理器设计 中断处理器例13-2的设计利用了”IFTHENELSE语句结构,使得很容易地实现了nmi、float、int和peripheral 4个中断请求信号的能按优先顺序分别进行处理,程序中使用了类属语句,使此中断处理器可根据实际情况容易地改变地址位宽;程序中还使用了数据类型转换函数CONV_STD_LOGIC_VECTOR(X,Y)。,LIBRARY IEEE; USE IEEESTD_LOGIC_1164ALL; USE IEEESTD LOGIC_ARITHALL; ENTITY interrupt
4、 IS GENERIC(msb:INTEGER:=15); PORT(nmi,float,int,peripheral:INT STD_LOGIC; Flush_cache:OUT STD_LOGIC; Goto_addr:OUT_STD_LOGIC(msb DOWNTO 0) ; END interrupt;,ARCHITECTURE behave 0F interrupt工S CONSTANT nop:INTEGER:=0; 设置地址nop=0 CONSTANT nmi_addr:integer:= #6#C5AA#; 设置中断服务程序地址 CONSTANT float_addr:inte
5、ger:=#16#CA522#; 设置中断服务程序地址 CONSTANT int_addr:integer:=#16#CB4A#; 设置中断服务程序地址 CONSTANT periph_addr:integer:=#16#CD2C#; 设置中断服务程序地址 BEGIN PROCESS(nmi,float,int,peripheral) VARIABLE address:INTEGER;,BEGIN Flush_cache = 0; IF nmi=1 THEN address:= nmi_addr; 最高优先级 ELSIF float=1 THEN address:= float_addr; 次
6、高优先级 Flush_cache = 1; ELSIF int=1 THEN address:= int_addr; 再次高优先级 Flush_cache = 1; ELSIF periphera=1 THEN address:=periph_addr; 最低优先级 ELSE address:=nop; 地址置0 END IF;,调用类型转换函数将整数类型的地址值, 将“address”转化成“msb+l”位标准矢量位值 Goto_addr=CONV_STD_LOGICVECTOR( address,msb+1); END PROCESS; END behave;,133 静态随机存储器(SR
7、AM)设计 静态随机存储器SRAM电子线路中是存储数据的重要器件,它由锁存器阵列构成,它的界面端口由地址线、数据输入线、数据输出线、片选线、写入允许线和读出允许线组成。 SRAM根据地址信号令经由译码电路选择欲读写的存储单元。,例13-3描述的SRAM具有4位二进制地址线、8位二进制输入输出数据线,即存储 空间为主16x8bit,它的地址线是将数据读入和数据输出端口分开的(许多SRAM的数据端 口的读写功能是合二为一的,即为双向口)。程序中有两个进程,一个是数据写入进程WRITE,该进程设置条件为wr=0的IF_THEN不完整的条件语句,锁存器阵列,wr作为锁存控制信号,当wr=0时,在满足条
8、件(cs=0 and rd=1)时将外部8位数据din锁进指定地址adr的RAM单元中;而当满足,条件(rd=0 and cs=0 and wr=1)时,此SRAM将指定地址adr的RAM单元中的数据向dout端口输出,否则该端口呈高阻态。,例13-3:文件名:sramvhd LIBRARY IEEE; USE IEEESTD_LOGIC_1164ALL; USE IEEESTD LOGIC UNSIGNEDALL; ENTITY sram IS GENERIC(k:INTEGER :=8 ; w:INTEGER :=4 ); port (rd,wr,cs:in std_logic; adr:
9、in std_logic_vector(w-1 downto 0) ; din:in std_logic_vector(k1 downto 0) ; dout:out std_logic_vector(k1 downto 0) ); END sram;,ARCHITECTURE behave OF sram is SUBTYPE word IS STD_LOGIC_VECTOR(K-1 DOWNTO 0) ; Max+PlusII不支持以下语句 TYPE memory IS array(0 TO 2*w-1) OF word; SIGNAL sram :memory; SIGNAL adr_i
10、n :INTEGER; BEGIN adr_in=CONV_INTEGER(adr) ;,WRITE:PROOCESS(wr,cs,adr_in,din,rd) 数据写入进程 BEGIN IF wr=0 THEN IF cs=0 AND rd=1 THEN sram(adr_in)=din; END IF; END IF; END PROCESS;,READ:PROOCESS(rd,cs,adr_in,wr) 数据读出进程 BEGIN IF cs=0 AND rd=0 AND wr=1 THEN doutZ); END IF; END PROCESS; END behave;,134 堆栈设计
11、 在计算机组成电路中,或数字信号处理电路模块中堆栈存储器(后进先出存储器)具有重要的实用性。例13-4给出的是一数据位宽为8,深度为8的堆栈。此堆栈所有的操作运行均由时钟信号clk同步。push=1和pop=0时允许将8位数据din(7 downto 0)压人堆栈;而当push=0和pop=1时时允许将堆栈内部的数据按后进先出的方式弹出堆栈,从dout(7 downto 0)口输出;empty=1时,表示堆栈中已空;pushfull=1时,表示堆栈已满。信号c用于计算堆栈中已压人数据的个数。,例13-4:文件名:stackvhd LIBRARY IEEE; USE IEEESTD LOGIC
12、1164ALL; USE IEEESTD_LOGIC_UNSIGNEDALL; entity stack is generic(n:INTEGER:=8; 堆栈元素的字长 k:INTEGER:=8); 堆栈中元素的个数 port(rst,clk: in std_logic; push,pop:in Std_logic; - empty,fullpop:out Std logic; din:in std_logic_vector(n-1 downto 0) ; dout:out std_logic_vector(n-1 downto 0) ; end stack;,architecture al
13、g of stack is signal num,c:integer range 0 to k-1; function to_bit(b:in boolean) return std_logic is begin MAX+PLUSII不支持case或IF语句中含return的格式 case b is when true =return 1; when false =return 0; end case; end to_bit; begin empty= to_bit(c=0) ; fullpop= to_bit(c=k-1) ;,process type type_stack is array
14、(natural range k-1 downto 0) of std_logic_vector(n-1 downto 0); variable s:type_stack; begin wait until clkevent and clk=1 ;,if rst=1 then c=0 ; elsif push=1 and pop=0 then s(k-1 downto 1) := s(k-2 downto 0) ; s(0)=din; c=c+1; elsif push=0 and pop=1 then s(k-2 downto 0) := s(k-1 downto 1) ; dout= s(
15、0); c=c-1; end if; end process; end alg;,135 8位硬件加法器设计 加法器是数字系统中的基本逻辑器件。例如,为了节省逻辑资源,减法器和硬件乘法器都可由加法器来构成。宽位加法器的设计是十分耗费硬件资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度两方面的问题。对此,首先应选择较适合组合逻辑设计的器件作为最终的目标器件,如CPLD;其次在加法器的逻辑结构的设计上,在芯片资源的利用率和加法器的速度两方面权衡得失,探寻最佳选择,即选择最佳的并行进位最小加法单元的宽度。显然,这种选择与目标器件的时延特性有直接关系。以下是一个比较简单的设计示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 第十三
链接地址:https://www.31doc.com/p-2895117.html