第十三章-1--8位并行预置加法计数器设计-VHDL语言-教学-课件.ppt
《第十三章-1--8位并行预置加法计数器设计-VHDL语言-教学-课件.ppt》由会员分享,可在线阅读,更多相关《第十三章-1--8位并行预置加法计数器设计-VHDL语言-教学-课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、131 8位并行预置加法计数器设计 例13-1描述的是一个含计数使能、异步复位和计数值并行预置功能的8位加法计数器。其中d(7 DOWNTO 0)为8位并行输入预置值;ld,ce,clk,rst分别为计数器的并行输入预置使能信号、计数时钟使能信号、计数时钟信号和复位信号 例13-1:文件名:countervhdLIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;USE IEEESTD_LOGIC_UNSIGNEDALL;ENTITY counter ISPORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ld,ce,clk,rst:IN ST
2、D_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END counter;ARCHITECTURE behave OF counter IS SIGNAL count:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF 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;END PROCESS;q=count;END behav
3、e;132 位宽可预置中断处理器设计 中断处理器例13-2的设计利用了”IFTHENELSE语句结构,使得很容易地实现了nmi、float、int和peripheral 4个中断请求信号的能按优先顺序分别进行处理,程序中使用了类属语句,使此中断处理器可根据实际情况容易地改变地址位宽;程序中还使用了数据类型转换函数CONV_STD_LOGIC_VECTOR(X,Y)。ARCHITECTURE behave 0F interrupt工SCONSTANT nop:INTEGER:=0;设置地址nop=0CONSTANT nmi_addr:integer:=#6#C5AA#;设置中断服务程序地址CON
4、STANT float_addr:integer:=#16#CA522#;设置中断服务程序地址CONSTANT int_addr:integer:=#16#CB4A#;设置中断服务程序地址CONSTANT periph_addr:integer:=#16#CD2C#;设置中断服务程序地址BEGINPROCESS(nmi,float,int,peripheral)VARIABLE address:INTEGER;BEGIN Flush_cache=0;IF nmi=1 THEN address:=nmi_addr;最高优先级ELSIF float=1 THEN address:=float_ad
5、dr;次高优先级Flush_cache=1;ELSIF int=1 THEN address:=int_addr;再次高优先级 Flush_cache=1;ELSIF periphera=1 THENaddress:=periph_addr;最低优先级ELSE address:=nop;地址置0END IF;调用类型转换函数将整数类型的地址值,将“address”转化成“msb+l”位标准矢量位值 Goto_addr=CONV_STD_LOGICVECTOR(address,msb+1);END PROCESS;END behave;例13-3描述的SRAM具有4位二进制地址线、8位二进制输入
6、输出数据线,即存储空间为主16x8bit,它的地址线是将数据读入和数据输出端口分开的(许多SRAM的数据端口的读写功能是合二为一的,即为双向口)。程序中有两个进程,一个是数据写入进程WRITE,该进程设置条件为wr=0的IF_THEN不完整的条件语句,锁存器阵列,wr作为锁存控制信号,当wr=0时,在满足条件(cs=0 and rd=1)时将外部8位数据din锁进指定地址adr的RAM单元中;而当满足条件(rd=0 and cs=0 and wr=1)时,此SRAM将指定地址adr的RAM单元中的数据向dout端口输出,否则该端口呈高阻态。ARCHITECTURE behave OF sram
7、 isSUBTYPE 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_in:INTEGER;BEGIN adr_in=CONV_INTEGER(adr);READ:PROOCESS(rd,cs,adr_in,wr)数据读出进程 BEGIN IF cs=0 AND rd=0 AND wr=1 THEN dout=sram(adr_in);ELSE doutZ);END IF;END PROCES
8、S;END behave;134 堆栈设计 在计算机组成电路中,或数字信号处理电路模块中堆栈存储器(后进先出存储器)具有重要的实用性。例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用于计算堆栈中已压人数据的个数。architecture alg of stack issig
9、nal num,c:integer range 0 to k-1;function to_bit(b:in boolean)return std_logic isbeginMAX+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(natural range k-1 downto 0)of
10、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(0);c=c-1;end if;end process;end alg;135 8位硬件加法器设计
11、 加法器是数字系统中的基本逻辑器件。例如,为了节省逻辑资源,减法器和硬件乘法器都可由加法器来构成。宽位加法器的设计是十分耗费硬件资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度两方面的问题。对此,首先应选择较适合组合逻辑设计的器件作为最终的目标器件,如CPLD;其次在加法器的逻辑结构的设计上,在芯片资源的利用率和加法器的速度两方面权衡得失,探寻最佳选择,即选择最佳的并行进位最小加法单元的宽度。显然,这种选择与目标器件的时延特性有直接关系。以下是一个比较简单的设计示例。多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度较快;串
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十三 并行 预置 加法 计数器 设计 VHDL 语言 教学 课件
限制150内