您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > EDA技术_项目5_BCD-7段显示译码器
1位半加器的原理图设计存在问题:同或和异或的不同同或:XNOR异或:XOR上次实验讲评函数关系式S=A⊕BC=AB1位全加器的原理图设计另一种方法设计1位全加器的原理图函数关系式Si=Ai⊕Bi⊕Ci-1Ci=AiBi+BiCi-1+AiCi-1使用Max+PlusII软件进行1位二进制全加器的功能仿真。仿真参数的设置•endtime:0.8s•timerange:from0to0.8s•将a,b,cin组合起来,组名groupname为k[3..1],进制(radix)为二进制(bin),开始值(startvalue)为000,计数间隔(countevery)为100ms,这样就可以使k[3..1]从000变到111,覆盖了a,b,cin组合的所有取值。仿真波形如下图所示1位半减器VHDL设计LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYhalf_subISPORT(a:INstd_logic;b:INstd_logic;diff:OUTstd_logic;--differencecout:OUTstd_logic);--carryoutENDhalf_sub;ARCHITECTUREhalfOFhalf_subISBEGINcout=notaANDb;--logicrelationduetotruthtablediff=aXORb;ENDhalf;1位全减器VHDL设计本次课内容•VHDL顺序语句(CASE)•变量与信号的比较•VHDL并行语句(PROCESS)•BCD程序设计硬件执行:并行执行(VHDL本质)仿真执行:顺序执行、并行执行分为两大类:顺序(Sequential)描述语句并行(Concurrent)描述语句ARCHITECTUREProcessProcessENTITYSequentialProcessCombinationalProcessportsportscomponent§3.4VHDL顺序语句(Sequential)顺序描述语句:执行顺序与书写顺序一致,与传统软件设计语言的特点相似。顺序语句只能用在进程与子程序中。可描述组合逻辑、时序逻辑。常用的顺序描述语句:赋值语句;if语句;case语句;loop语句;next语句;exit语句;子程序;return语句;wait语句;null语句。一对象与赋值语句1、VHDL中常用的5种对象:1)简单名称,如my_var;2)索引名称,如my_array_var(3);3)片断名称,如my_array_var(3to6);4)记录域名,如my_record.a_field;5)集合,如(my_var1,my_var2)。所有对象均分为:变量和信号对象:=表达式;--变量赋值对象=表达式;--信号赋值要求:表达式的值必须与对象的类型、宽度一致。2、变量赋值与信号赋值变量与信号的差异:1)赋值方式的不同:变量:=表达式;信号=表达式;2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。3)有效范围的不同:信号:程序包、实体、结构体;全局量。变量:进程、子程序;局部量。ARCHITECTURE{SIGNALDeclarations}label1:PROCESS{VARIABLEDeclarations}label2:PROCESS{VARIABLEDeclarations}┇4)赋值行为的不同:信号赋值延迟更新数值、时序电路;变量赋值立即更新数值、组合电路。5)信号的多次赋值a.一个进程:最后一次赋值有效b.多个进程:多源驱动线与、线或、三态例:信号的多次赋值architecturertlofexissignala:std_logic;beginprocess(…)begina=b;…a=c;endprocess;endrtl;architecturertlofexissignala:std_logic;beginprocess(…)begina=b;…endprocess;process(…)begina=c;...endprocess;endex;例:信号赋值与变量赋值的比较信号赋值:architecturertlofsigissignala,b:std_logic;--定义信号beginprocess(a,b)begina=b;b=a;endprocess;endrtl;--结果是a和b的值互换变量赋值:architecturertlofvarisbeginprocessvariablea,b:std_logic;--定义变量begina:=b;b:=a;endprocess;endrtl;--结果是a和b的值都等于b的初值例:变量赋值实现循环语句功能process(indicator,sig)variabletemp:std_logic;begintemp:=‘0’;foriin0to3looptemp:=tempxor(sig(i)andindicator(i));endloop;output=temp;endprocess;以上语句等效为:process(indicator,sig)variabletemp:std_logic;begintemp:=‘0’;temp:=tempxor(sig(0)andindicator(0));temp:=tempxor(sig(1)andindicator(1));temp:=tempxor(sig(2)andindicator(2));temp:=tempxor(sig(3)andindicator(3));output=temp;endprocess;如改为信号,则无法实现原功能:……signaltemp:std_logic;……process(indicator,sig,temp)begintemp=‘0’;temp=tempxor(sig(0)andindicator(0));temp=tempxor(sig(1)andindicator(1));temp=tempxor(sig(2)andindicator(2));temp=tempxor(sig(3)andindicator(3));output=temp;endprocess;二、转向控制语句转向控制语句通过条件控制开关决定是否执行一条或几条语句,或重得执行一条或几条语句,或跳过一条或几条语句。分为五种:if语句、case语句、loop语句、next语句、exit语句2、case语句case语句常用来描述总线或编码、译码行为。可读性比if语句强。格式如下:case表达式iswhen分支条件=顺序处理语句;when分支条件=顺序处理语句;when分支条件=顺序处理语句;endcase;┇其中的分支条件可有以下的形式:when值=顺序处理语句;when值to值=顺序处理语句;when值|值|值|…|值=顺序处理语句;以上三种方式的混合;whenothers=顺序处理语句;Case语句使用注意:1)分支条件的值必须在表达式的取值范围内。2)两个分支条件不能重叠。3)CASE语句执行时必须选中,且只能选中一个分支条件。4)如果没有others分支条件存在,则分支条件必须覆盖表达式所有可能的值。对std_logc,std_logic_vector数据类型要特别注意使用others分支条件。例:用case语句描述四选一电路例:case语句的误用signalvalue:integerrange0to15;signalout_1:bit;casevalueis--缺少when条件语句endcase;casevalueis--分支条件不包含2到15when0=out_1=‘1’;when1=out_1=‘0’;endcase;casevalueis--在5到10上发生重叠when0to10=out_1=‘1’;when5to15=out_1=‘0’;endcase;例:根据输入确定输出值libraryieee;useieee.std_logic_1164.all;entitymux41isport(s4,s3,s2,s1:instd_logic;z4,z3,z2,z1:outstd_logic);endmux41;architectureartofmux41isbeginprocess(s4,s3,s2,s1)variablesel:integerrange0to15;beginsel:=0;ifs1=‘1’thensel:=sel+1;endif;ifs2=‘1’thensel:=sel+2;endif;ifs3=‘1’thensel:=sel+4;endif;ifs4=‘1’thensel:=sel+8;endif;z1=‘0’;z2=‘0’;z3=‘0’;z4=‘0’;caseseliswhen0=z1=‘1’;when1|3=z2=‘1’;when4to7|2=z3=‘1’;whenothers=z4=‘1’;endcase;endprocess;endart;常用的并行描述语句有:进程(process)语句、块(block)语句、顺序描述语句的并行版本、并行过程调用语句、元件例化语句、生成语句。一、进程(process)语句进程(process)语句最具VHDL语言特色。提供了一种用算法描述硬件行为的方法。特点:1、进程与进程,或其它并发语句之间的并发性;2、进程内部的顺序性;3、进程的启动与挂起;4、进程与进程,或其它并发语句之间的通信。进程语句process信号信号信号进程语句process进程语句process敏感信号表:进程内要读取的所有敏感信号(包括端口)的列表。每一个敏感信号的变化,都将启动进程。格式:[标记:]process[(敏感信号表)]{进程说明项}begin{顺序描述语句}endprocess[标记];信号名称{,信号名称}敏感信号表的特点:1、同步进程的敏感信号表中只有时钟信号。如:process(clk)beginif(clk’eventandclk=‘1’)thenifreset=‘1’thendata=“00”;elsedata=in_data;endif;endif;endprocess;2、异步进程敏感信号表中除时钟信号外,还有其它信号。例:process(clk,reset)beginifreset=‘1’thendata=“00”;elsif(clk’eventandclk=‘1’)thendata=in_data;endif;endprocess;3、如果有wait语句,则不允许有敏感信号表。PROCESS(a,b)BEGIN--sequentialstatementsENDPROCESS;PROCESSBEGIN--sequentialstatementsWAITON(a,b);ENDPROCESS;作业:两位加法器与BCD-7段显示译码器要求:1、VHDL设计BCD-7段显示译码器2、原理图设计带BCD-7段显示译码的2位加法器设计提示•1位半加器、1位全加器(略)•2位加法器可以由1位半加器和1位全加器组成。2位加法器的波形仿真BCD-7段显示译码器工作原理•BCD-7段译码器是由7个发光二极(LED)管构成,LED由特殊的半导体材料砷化镓、磷砷化镓等制成,组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。图5.1(a)是共阴式LED数码管的原理图,图5.1(b)是其表示符号。使用时,公共阴极接地,7个阳极a~g由相应的BCD-7段译码器来驱动(控制),如图5.1(c)所示。图中,电
本文标题:EDA技术_项目5_BCD-7段显示译码器
链接地址:https://www.777doc.com/doc-752475 .html