第9章数字电路EDA综合设计

上传人:无*** 文档编号:232481682 上传时间:2023-09-20 格式:PPT 页数:83 大小:1.62MB
收藏 版权申诉 举报 下载
第9章数字电路EDA综合设计_第1页
第1页 / 共83页
第9章数字电路EDA综合设计_第2页
第2页 / 共83页
第9章数字电路EDA综合设计_第3页
第3页 / 共83页
资源描述:

《第9章数字电路EDA综合设计》由会员分享,可在线阅读,更多相关《第9章数字电路EDA综合设计(83页珍藏版)》请在装配图网上搜索。

1、9.1 9.1 常用组合电路模块的设计常用组合电路模块的设计9.2 9.2 常用时序电路模块的设计常用时序电路模块的设计9.3 9.3 复杂数字系统的设计复杂数字系统的设计9.4 9.4 提高数字系统性能的方法提高数字系统性能的方法共共共共2 2 2 2学时学时学时学时第第9 9章章 数字电路数字电路EDAEDA综合设计综合设计19.1 9.1 常用组合电路模块的设计常用组合电路模块的设计一、简单门电路一、简单门电路二、译码器与编码器二、译码器与编码器三、数据选择器三、数据选择器四、奇偶校验产生器四、奇偶校验产生器内容概要内容概要29.1 9.1 常用组合电路模块的设计常用组合电路模块的设计一

2、、简单门电路一、简单门电路例例9.1 基本门电路的几种描述方法基本门电路的几种描述方法组组合合逻逻辑辑电电路路:任任一一时时刻刻的的输输出出信信号号仅仅取取决决于于该该时时刻刻的的输入信号,而与信号作用前电路原来所处的状态无关。输入信号,而与信号作用前电路原来所处的状态无关。简单组合逻辑简单组合逻辑通常用通常用门原语门原语或或assignassign语句语句实现;实现;复复杂杂组组合合逻逻辑辑则则常常用用alwaysalways块块语语句句实实现现,并并常常用用casecase语语句或句或if_elseif_else语句进行分支操作!语句进行分支操作!39.1 9.1 常用组合电路模块的设计常

3、用组合电路模块的设计module gate1(F,A,B,C,D);output F;input A,B,C,D;nand(F1,A,B);and(F2,B,C,D);or(F,F1,F2);endmodule常用有常用有3 3种描述方法:种描述方法:(1 1)调用调用门原语门原语 必须明确电路内部逻辑关系(2 2)用用assignassign连续赋值语句连续赋值语句描述描述 写出逻辑表达式module gate2(F,A,B,C,D);output F;input A,B,C,D;assign F=(A&B)|(B&C&D);endmodule49.1 9.1 常用组合电路模块的设计常用组合

4、电路模块的设计(3 3)用用过程赋值语句过程赋值语句描述描述 在always块内写出逻辑表达式module gate3(F,A,B,C,D);output F;input A,B,C,D;always(A or B or C or D)begin F=(A&B)|(B&C&D);endendmodule59.1 9.1 常用组合电路模块的设计常用组合电路模块的设计二、译码器与编码器二、译码器与编码器 1.1.译码器译码器decoderdecoder译译码码器器:将将输输入入的的二二进进制制代代码码翻翻译译成成相相应应的的输输出出信信号号,以以表示编码时所赋予原意的电路。表示编码时所赋予原意的电

5、路。多多条条件件译译码码电电路路大大多多用用case语语句句实实现现只只需需知知道道真真值表。值表。例例9.2 3-8译码器译码器 对对3位位输输入入信信号号进进行行译译码码,当当输输入入信信号号表表示示数数字字几时,几时,8位输出线的相应位为位输出线的相应位为0,其余,其余位均为位均为1 1。69.1 9.1 常用组合电路模块的设计常用组合电路模块的设计module decoder_38(out,in);output7:0 out;input2:0 in;reg7:0 out;always(in)begin case(in)3d0:out=8b11111110;3d1:out=8b11111

6、101;3d2:out=8b11111011;3d3:out=8b11110111;3d4:out=8b11101111;3d9:out=8b11011111;3d6:out=8b10111111;3d7:out=8b01111111;endcase endendmodule79.1 9.1 常用组合电路模块的设计常用组合电路模块的设计2.编码器编码器encoder编码器编码器:将一个输入信号编码成一组二进制代码输出。:将一个输入信号编码成一组二进制代码输出。优优先先编编码码器器:如如有有两两个个或或两两个个以以上上的的输输入入有有效效时时,“,“优优先先”按按其其中中输输入入编编号号最最大大

7、的的输输入入进进行行编编码码,输输出出为为对对应应输输入编号或其反码。入编号或其反码。利利用用if_else语语句句的的分分支支具具有有先先后后顺顺序序的的特特点点,用用if_else语语句可方便地实现优先编码器。句可方便地实现优先编码器。例例9.3 8-38-3优先编码器优先编码器 输入为输入为a、b、c、d、e、f、g、h,高,高电平有效,电平有效,h的优的优先级最高。当输入中某些位为先级最高。当输入中某些位为1时,只对优先级最高的那位时,只对优先级最高的那位编码,使输出等于其对应的编号(编码,使输出等于其对应的编号(ah对应编号为对应编号为07)。89.1 9.1 常用组合电路模块的设计

8、常用组合电路模块的设计module encoder8_3(non_on,outcode,a,b,c,d,e,f,g,h);output non_on;output 2:0 outcode;input a,b,c,d,e,f,g,h;reg3:0 outtemp;assign non_on,outcode=outtemp;always(a or b or c or d or e or f or g or h)begin if(h)outtemp=4b0111;else if(g)outtemp=4b0110;else if(f)outtemp=4b0101;else if(e)outtemp=4

9、b0100;else if(d)outtemp=4b0011;else if(c)outtemp=4b0010;else if(b)outtemp=4b0001;else if(a)outtemp=4b0000;else outtemp=4b1000;endendmodule为1时表示没有一个输入信号有效若ag均为0,则none_on=1,outcode=00099.1 9.1 常用组合电路模块的设计常用组合电路模块的设计三、数据选择器(三、数据选择器(MUXMUX)逻辑功能逻辑功能根据控制信号的取值,从多路平行输入数据根据控制信号的取值,从多路平行输入数据中,选择中,选择一路一路作为输出信号

10、。作为输出信号。又叫又叫多路开关(多路开关(MultiplexerMultiplexer),或或多路器多路器。常用有常用有3 3种方法来实现:种方法来实现:(1 1)用用assign语句设计语句设计2选选1 MUX 使用条件运算符例例9.4 用用assign语句设计的语句设计的2选选1 MUXmodule mux2_1(out,a,b,sel);output out;input a,b,sel;assign out=sel?a:b;/条件运算符条件运算符endmodule109.1 9.1 常用组合电路模块的设计常用组合电路模块的设计(2 2)用用if_else语句设计语句设计4选选1MUX

11、当控制信号取不同的值时,输出信号与不同的输入信号值相对应例例9.9 用用if_else语句描述的语句描述的4选选1 MUXmodule mux4_1(out,in0,in1,in2,in3,sel);output7:0 out;input 7:0 in0,in1,in2,in3;input 1:0 sel;reg7:0 out;always(in0 or in1 or in2 or in3 or sel)begin if(sel=2b00)out=in0;else if(sel=2b01)out=in1;else if(sel=2b10)out=in2;else out=in3;endendm

12、odule119.1 9.1 常用组合电路模块的设计常用组合电路模块的设计(3 3)用用case语句设计语句设计4选选1 MUX 适于多分支情况,比用if_else语句更简洁!例例9.6 用用case语句描述的语句描述的4选选1 MUXmodule mux4_1(out,in0,in1,in2,in3,sel);output7:0 out;input 7:0 in0,in1,in2,in3;input1:0 sel;reg7:0 out;always(in0 or in1 or in2 or in3 or sel)begin case(sel)2b00:out=in0;2b01:out=in1

13、;2b10:out=in2;default:out=in3;endcase endendmodule129.1 9.1 常用组合电路模块的设计常用组合电路模块的设计四、奇偶校验产生器四、奇偶校验产生器逻逻辑辑功功能能:对对并并行行输输入入的的8 8位位数数据据进进行行奇奇偶偶校校验验,并并产产生生奇奇校验位校验位odd_bitodd_bit和偶校验位和偶校验位even_biteven_bit。用用assign语语句句实实现现对对输输入入按按位位异异或或,产产生生奇奇校校验验位位odd_bitodd_bit,若若为为“1”1”,表表示示输输入入数数据据中中有有奇奇数数个个1 1;若若偶偶校验位校

14、验位even_biteven_bit为为“1”1”,表示输入数据中有,表示输入数据中有偶偶数个数个1 1。例例9.7 奇偶校验产生器奇偶校验产生器module parity(even_bit,odd_bit,input_bus);output even_bit,odd_bit;input 7:0 input_bus;assign odd_bit=input_bus;/对输入按位异或,产生奇校验位对输入按位异或,产生奇校验位 assign even_bit=odd_bit;/产生偶校验位产生偶校验位endmodule139.2 9.2 常用时序电路模块的设计常用时序电路模块的设计一、一、D D触

15、发器触发器二、数据锁存器二、数据锁存器三、数据寄存器三、数据寄存器四、移位寄存器四、移位寄存器五、任意模加法五、任意模加法/减法计数器减法计数器六、六、ROM/RAMROM/RAM模块模块内容概要内容概要149.2 9.2 常用时序电路模块的设计常用时序电路模块的设计时序逻辑电路时序逻辑电路:任一时刻的输出信号不仅取决:任一时刻的输出信号不仅取决于该时刻的输入信号,而且还取决于电路原来于该时刻的输入信号,而且还取决于电路原来的状态,即还与以前的输入有关。的状态,即还与以前的输入有关。时序逻辑通常用时序逻辑通常用alwaysalways块语句实现!并常用块语句实现!并常用if_elseif_el

16、se语句进行分支操作语句进行分支操作。(1)1)1)1)J-KJ-KJ-KJ-K触发器触发器触发器触发器Q Qn+1n+1=JQJQn n+KQKQn n(2)2)2)2)D D D D触发器触发器触发器触发器Q Qn+1n+1=D=D双稳态触发器双稳态触发器是组成时序电路中存储部分的基本单元。是组成时序电路中存储部分的基本单元。具有两个稳定的输出状态(具有两个稳定的输出状态(0 0和和1 1),是最简单的时序逻是最简单的时序逻辑电路辑电路,用于存储用于存储一位一位二进制数。二进制数。常用的双稳态触发器:常用的双稳态触发器:RSRS、J-KJ-K、D D、T T触发器触发器159.2 9.2

17、常用时序电路模块的设计常用时序电路模块的设计一、一、D D触发器触发器通常有通常有3 3种种D D触发器,触发器,用用alwaysalways块块语句实现:语句实现:(1 1)最简单的最简单的D D触发器(只有触发器(只有一一个沿触发信号)个沿触发信号)例例9.8 基本基本D D触发器触发器module DFF(Q,D,CLK);output Q;input D,CLK;reg Q;always(posedge CLK)begin Q=D;endendmodule169.2 9.2 常用时序电路模块的设计常用时序电路模块的设计(2 2)带异步清带异步清0 0、异步置、异步置1 1端的端的D D

18、触发器(有触发器(有多多个沿触发信号)个沿触发信号)例例9.9 带异步清带异步清0、异步置、异步置1端的端的D触发器触发器module DFF1(q,qn,d,clk,set,reset);output q,qn;input d,clk,set,reset;reg q,qn;always(posedge clk or negedge set or negedge reset)begin if(!reset)begin q=0;/异步清零,低电平有效异步清零,低电平有效 qn=1;end else if(!set)begin q=1;/异步置异步置1,低电平有效,低电平有效 qn=0;end e

19、lse begin q=d;qn=d;end endendmodulereset、set为为脉冲脉冲信号信号179.2 9.2 常用时序电路模块的设计常用时序电路模块的设计(3 3)带同步清带同步清0 0、同步置、同步置1 1端端的的D D触发器(只有触发器(只有一一个沿触发信号)个沿触发信号)例例9.10 带同步清带同步清0、同步置、同步置1端的端的D触发器触发器module DFF2(q,qn,d,clk,set,reset);output q,qn;input d,clk,set,reset;reg q,qn;always(posedge clk)begin if(reset)begin

20、 q=0;/同步清零,高电平有效同步清零,高电平有效 qn=1;end else if(set)begin q=1;/同步置同步置1,高电平有效,高电平有效 qn=0;end else begin q=d;qn=d;end endendmodulereset、set为为电平电平信号信号189.2 9.2 常用时序电路模块的设计常用时序电路模块的设计二、数据锁存器二、数据锁存器数据锁存器数据锁存器由由多位多位触发器组成的用于保存一组触发器组成的用于保存一组二进制代码的寄存单元。二进制代码的寄存单元。功能:功能:当输入控制信号(如时钟)为当输入控制信号(如时钟)为高高电平时,门电平时,门是是打开打

21、开的,输出信号等于输入信号;当输入控制信的,输出信号等于输入信号;当输入控制信号为号为低低电平时,门是电平时,门是关闭关闭的,输出端保持刚才输入的,输出端保持刚才输入的数据,即为的数据,即为锁存锁存状态,而不管此时输入信号是否状态,而不管此时输入信号是否变化。变化。通通常常由由电电平平信信号号来来控控制制,属属于于电电平平敏敏感感型型,适适于于数数据有效据有效滞后滞后于控制信号有效的场合。于控制信号有效的场合。实现方法:实现方法:用assignassign语句使用条件运算符,简便!用alwaysalways块块语句实现199.2 9.2 常用时序电路模块的设计常用时序电路模块的设计例例9.11

22、 电平敏感型的电平敏感型的1位数据锁存器位数据锁存器module latch_1(q,d,clk);output q;input d,clk;assign q=clk?d:q;/*当时钟信号为高电平时,将输入端信号打入锁存器;当时钟信号为高电平时,将输入端信号打入锁存器;当时钟信号为低电平时,锁存原来已打入的数据。当时钟信号为低电平时,锁存原来已打入的数据。endmodule数据有效数据有效滞后滞后于于控制信号有效控制信号有效当当clk为为低低电平电平时,锁存数据。时,锁存数据。209.2 9.2 常用时序电路模块的设计常用时序电路模块的设计例例9.12 带置位和复位端的电平敏感型的带置位和复

23、位端的电平敏感型的1位数据锁存器位数据锁存器module latch_2(q,d,clk,set,reset);output q;input d,clk,set,reset;assign q=reset?0:(set?1:(clk?d:q);endmodule复位复位置位置位打入数据打入数据锁存数据锁存数据219.2 9.2 常用时序电路模块的设计常用时序电路模块的设计例例9.13 用用always块语句描述的电平敏感型块语句描述的电平敏感型8位数据锁存器位数据锁存器module latch_8bit(qout,data,clk);output7:0 qout;input 7:0 data;i

24、nput clk;reg 7:0 qout;always(clk or data)/电平敏感电平敏感 begin if(clk)qout=data;end endmodule229.2 9.2 常用时序电路模块的设计常用时序电路模块的设计三、数据寄存器三、数据寄存器数数据据寄寄存存器器当当时时钟钟信信号号的的上上升升沿沿或或下下降降沿沿到到来来时时,将将输输入入端端数数据据打打入入寄寄存存器器,即即此此时时输输出出信信号号等等于于输输入入信信号号;在在clk的的其其它它时时刻刻,输输出出端端保保持持刚刚才才输输入入的的数数据据,即即为为寄存寄存状态,而不管此时输入信号是否变化。状态,而不管此时

25、输入信号是否变化。数据锁存器和数据寄存器的区别:数据锁存器和数据寄存器的区别:数据锁存器一般由电平信号来控制,属于电平敏感型,适于数据有效滞后于控制信号有效的场合。数据寄存器通常由同步时钟信号来控制,属于脉冲敏感型,适于数据有效提前于控制信号有效、并要求同步操作的场合。239.2 9.2 常用时序电路模块的设计常用时序电路模块的设计例例9.14 用用always块语句描述的块语句描述的8位数据寄存器位数据寄存器module reg_8bit(qout,data,clk,clr);output7:0 qout;input 7:0 data;input clk,clr;reg 7:0 qout;a

26、lways(posedge clk or posedge clr)/沿沿触发触发 begin if(clr)qout=0;/异步清异步清零零 else qout=data;end endmodule249.2 9.2 常用时序电路模块的设计常用时序电路模块的设计在时钟信号的在时钟信号的上升上升沿沿,将输入端数据,将输入端数据打入打入寄存器。寄存器。在在clk的其它时的其它时刻,刻,寄存寄存数据。数据。数据有效数据有效提前提前于于控制信号有效控制信号有效259.2 9.2 常用时序电路模块的设计常用时序电路模块的设计四、移位寄存器四、移位寄存器信信号号串串行行输输入入,8 8位位并并行行输输出出

27、,每每个个时时钟钟周周期期内内输输出出信信号号左左移一位,同时将串行输入信号补充到输出信号的最低位。移一位,同时将串行输入信号补充到输出信号的最低位。用用alwaysalways块块语句实现。语句实现。例例9.19 用用always块语句描述的块语句描述的8位位移位移位寄存器寄存器module shifter_8bit(dout,din,clk,clr);output7:0 dout;input din,clk,clr;reg 7:0 dout;always(posedge clk)/沿触发沿触发 begin if(clr)dout=0;/同步清零,高电平有效同步清零,高电平有效 else b

28、egin dout=doutAdd/Remove Files in Project”命令,将顶层模块文件添加到工程中;命令,将顶层模块文件添加到工程中;2 执执 行行“AssignmentsSettings”命命 令令,打打 开开“Settings”对对话话框框,在在“Category”栏栏中中单单击击“User Libraries”,打打开开“User Libraries”标标签签页页,将将子子模模块块所所在目录添加到在目录添加到“Libraries”中(见下页);中(见下页);3 将顶层模块文件设为将顶层模块文件设为Top-Level Entity;4 对顶层模块文件进行全编译;对顶层模块

29、文件进行全编译;9 进行时序仿真进行时序仿真。在在综综合合acc_top_lib.vacc_top_lib.v时时,软软件件会会自自动动调调用用add8.*add8.*和和reg8.*reg8.*等等文件!文件!419.3 9.3 复杂数字系统的设计复杂数字系统的设计(1)(2)(3)(4)在在“User Libraries”标签页标签页中单击中单击“OK”429.3 9.3 复杂数字系统的设计复杂数字系统的设计acc_top_lib.vwf仿真结果同前两种方式!仿真结果同前两种方式!439.4 9.4 提高数字系统性能的方法提高数字系统性能的方法一、提高系统工作速度一、提高系统工作速度二、减

30、小器件耗用资源二、减小器件耗用资源内容概要内容概要449.4 9.4 提高数字系统性能的方法提高数字系统性能的方法一、提高系统工作速度一、提高系统工作速度直接修改电路;采用流水线技术;合理使用器件资源;修改软件配置。4 4种方法种方法种方法种方法方法一方法一:直接修改电路直接修改电路系系统统工工作作速速度度受受电电路路节节点点之之间间延延迟迟的的制制约约,因因此此首首先先应应仔细审查电路,修改冗余部分,缩短节点间延迟。仔细审查电路,修改冗余部分,缩短节点间延迟。459.4 9.4 提高数字系统性能的方法提高数字系统性能的方法 例例9.229.22 8 8级级8 8开关门电路开关门电路设设计计要

31、要求求:当当控控制制开开关关SW1SW1、SW2SW8SW2SW8闭闭合合时时,输出信号等于输入信号,其他情况为低电平。输出信号等于输入信号,其他情况为低电平。假设每级门的延迟为9ns,经过8级与门,输入端到输出端的延迟为89=40ns,系统速度为29MHz469.4 9.4 提高数字系统性能的方法提高数字系统性能的方法改进改进将将电电路路稍稍做做变变形形,则则输输入入端端到到输输出出端端的的延延迟迟变变为为4 4 9 9=2020nsns,系统速度提高到系统速度提高到9090MHzMHz479.4 9.4 提高数字系统性能的方法提高数字系统性能的方法方法二方法二:采用流水线技术采用流水线技术

32、系统的关关键键路路径径(最大延迟)是从寄存器的输出到它馈给其它寄存器输入之间的最大延迟。如果某些通过复杂逻辑的延时路径比较长,就很难维持系统时钟的工作速度。为此可在组合逻辑之间插入触发器,使复杂的组合逻辑块形成流水线,降低寄存器间的传播延迟,从而维持高的系统时钟速度。FPGA中触发器数量比CPLD要多得多,在FPGAFPGA的设计中采用流水线技术可以大大提高系统的速度!例例9.239.23 非流水线方式非流水线方式8 8位全加器位全加器由于低位产生进位需要花费时间,所以输入到加法器的高位数据与进位输入不是同时到达的,完成8位数据的加法运算受各位进位输出信号的制约。若各进位延迟的和超过系统时钟周

33、期,则在一个时钟周期内无法完成一次加法运算,从而影响系统的工作速度。489.3 9.3 复杂数字系统的设计复杂数字系统的设计unpipeline.v若若采采用用EP1S10F780C6,则则时钟周期为时钟周期为2.777ns,fmax=360.10MHz499.3 9.3 复杂数字系统的设计复杂数字系统的设计pipeline.v改进:改进:采用采用4 4级流水线方式实现级流水线方式实现 例例9.249.24 4 4级流水线级流水线方式方式8 8位全加器位全加器509.3 9.3 复杂数字系统的设计复杂数字系统的设计续前页续前页519.3 9.3 复杂数字系统的设计复杂数字系统的设计pipeli

34、ne.vwf的功能仿真结果的功能仿真结果在在第第9 9个时钟周个时钟周期到来时,得期到来时,得到第到第1 1对数的相对数的相加结果加结果529.3 9.3 复杂数字系统的设计复杂数字系统的设计这这里里采采用用EP1S10F780C6,时时钟钟周周期为期为2.369ns,fmax=422.12MHz当当采采用用非非流流水水线线方方式式时时,时时钟钟周周期期为为2.777ns,fmax=360.10MHz进行时序分析的结果:进行时序分析的结果:539.4 9.4 提高数字系统性能的方法提高数字系统性能的方法在在上上例例中中将将8 8位位全全加加器器采采用用9 9级级锁锁存存、4 4级级两两位位全全

35、加加器器实现。实现。由由于于对对高高位位数数据据进进行行锁锁存存,能能保保证证高高位位数数据据与与低低位位产产生生的的进进位位输输出出信信号号同同时时出出现现在在高高位位加加法法器器的的输输入入上上,整整个个加加法法器器只只受受两两位位全全加加器器工工作作速速度度的的限限制制,平平均均完完成一次加法运算只需成一次加法运算只需一个时钟周期一个时钟周期的时间。的时间。采采用用流流水水线线技技术术,在在同同一一个个时时钟钟周周期期内内,4 4个个两两位位全全加加器器并并行行计计算算,完完成成多多对对数数据据的的2 2位位数数据据相相加加,节节约约了大量的时间,从而大大提高了系统的工作速度。了大量的时

36、间,从而大大提高了系统的工作速度。结论结论结论结论549.3 9.3 复杂数字系统的设计复杂数字系统的设计非流水线方式非流水线方式8 8位全加器与流水线方式位全加器与流水线方式8 8位全加器时序位全加器时序分析结果的比较(采用器件分析结果的比较(采用器件EP2C39)EP2C39):参数参数非流水线方式非流水线方式流水线方式流水线方式fmax(MHz)360.10 422.12 Tclk(ns)2.772.369v流水线设计大大提高了系流水线设计大大提高了系统的工作速度!统的工作速度!559.4 9.4 提高数字系统性能的方法提高数字系统性能的方法方法三方法三:合理使用器件资源合理使用器件资源

37、1 1)采用)采用DSPDSP块实现流水线乘法器来提高系统速度块实现流水线乘法器来提高系统速度充分利用Stratix器件中的DSP块,实现大计算量应用所需的大数据吞吐量,可以实现FPGA中的如乘法器、乘法-加法器、乘法-累加器等功能。569.4 9.4 提高数字系统性能的方法提高数字系统性能的方法pipemult.bdf 例例9.299.29 比较比较8 8 8 8流水线乘法器采用流水线乘法器采用DSPDSP块和不采用块和不采用DSPDSP块时对系统性能的影响。块时对系统性能的影响。579.4 9.4 提高数字系统性能的方法提高数字系统性能的方法采用采用DSPDSP块步骤:块步骤:1 在在图图

38、形形文文件件中中,右右击击“mult”符符号号,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“Locate in Assignment Editor”命命 令令,打打 开开“Assignment Editor”;2 右右 击击 mult所所 对对 应应 的的“Assignment Name”中中的的空空白白单单元元,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“Edit Cell”命命令令,在在下下拉拉菜菜单单中中选选择择“DSP Block Balancing”;589.4 9.4 提高数字系统性能的方法提高数字系统性能的方法 3 在在“Value”栏栏中中右右击击空空白白单单元元,在在弹弹

39、出出的的快快捷捷菜菜单单中中选选择择“Edit Cell”命令,在下拉菜单中选择命令,在下拉菜单中选择“DSP blocks”;4 单击单击保存保存按钮,保存按钮,保存Assignment Editor设置;设置;9 单击全编译按钮,进行全编译;单击全编译按钮,进行全编译;6 执行执行“ToolsTiming Analyzer Tool”命令,进行时序分析。命令,进行时序分析。采采 用用 EP1S10F780C6,时钟周期为时钟周期为3.986ns,fmax=278.86MHz599.4 9.4 提高数字系统性能的方法提高数字系统性能的方法采用采用DSP块的编译报告块的编译报告使用了使用了1个

40、个DSP块块609.4 9.4 提高数字系统性能的方法提高数字系统性能的方法v对于具有大量乘法器的设计,当对系统速度要对于具有大量乘法器的设计,当对系统速度要求不是很高时,可以求不是很高时,可以不采用不采用DSPDSP块块,而是采用逻,而是采用逻辑单元,来节约器件辑单元,来节约器件DSPDSP资源的耗用。资源的耗用。在在Assignment Editor中指定中指定DSP Block Balancing的值的值为为“Logic Elements”;保存保存Assignment Editor设置;设置;单击全编译按钮,进行全编译;单击全编译按钮,进行全编译;执行执行“ToolsTiming An

41、alyzer Tool”命令,进行时序分析。命令,进行时序分析。步骤步骤步骤步骤而采用而采用DSP块时,块时,Tclk=3.986ns,fmax=278.86MHz619.4 9.4 提高数字系统性能的方法提高数字系统性能的方法不采用不采用DSP块的编译报告块的编译报告而采用而采用DSPDSP块时,块时,只使用了只使用了9个个LE这里没采用这里没采用DSPDSP块块629.3 9.3 复杂数字系统的设计复杂数字系统的设计参数参数采用采用DSP块块不采用不采用DSP块块fmax(MHz)278.86100.77 Tclk(ns)3.9869.924所用LE数9139所用DSP块数10v结论结论:

42、采用:采用DSPDSP块大大提高了系统的工块大大提高了系统的工作速度!且占用作速度!且占用LELE很少;但当不采用很少;但当不采用DSPDSP块时,系统工作频率降低,尽管节块时,系统工作频率降低,尽管节省了省了DSPDSP块,但却占用了大量的块,但却占用了大量的LELE。8 8 8 8流水线乘法器流水线乘法器采用采用DSPDSP块与不采用块与不采用DSPDSP块时时序块时时序分析结果的比较(均采用器件分析结果的比较(均采用器件EP2C39)EP2C39):639.4 9.4 提高数字系统性能的方法提高数字系统性能的方法 例例9.269.26 利利用用Mega_lpmMega_lpm中中的的lp

43、m_romlpm_rom宏宏模模块块设设计计4444乘法器乘法器查询表方式查询表方式1.1.创建图形设计文件创建图形设计文件新建新建lpmrom_mult.bdf,调用调用libraries/megafunctions/storage下的下的lpm_rom存储器模块,参数设置如图所示。存储器模块,参数设置如图所示。2 2)采用存储器)采用存储器lpm_romlpm_rom实现小型乘法器来提高系统速度实现小型乘法器来提高系统速度把把乘乘积积放放在在存存储储器器lpm_romlpm_rom中中,使使用用操操作作数数作作为为地地址址访访问问存存储储器器,可可以以快快速速得得到到乘乘法法运运算算的的结

44、结果果。该该乘乘法法器器的的速速度度等等于于所所使使用用的的存存储储器的速度。器的速度。但但当当操操作作数数位位数数很很多多时时,查查询询表表变变得得非非常常庞庞大大。比比如如无无符符号号4444乘乘法法器器可可用用2 28 888位位的的查查询询表表实实现现,而而无无符符号号8888乘乘法法器器需需要要2 216161616位的查询表实现。因此此技术特别适于位的查询表实现。因此此技术特别适于小型小型乘法器。乘法器。649.4 9.4 提高数字系统性能的方法提高数字系统性能的方法注:查找表深度指ROM区有多少个存储单元;数据宽度指每个存储单元的宽度。地址锁存控制查找表文件查找表深度输出数据锁存

45、控制数据宽度地址宽度lpmrom_mult.bdf659.4 9.4 提高数字系统性能的方法提高数字系统性能的方法2.2.创建存储器初始化文件创建存储器初始化文件利用存储器编辑器(利用存储器编辑器(Memory Editor)建立建立Altera存储存储器初始化格式(器初始化格式(.mif)文件。文件。(1 1)新建一个存储器初始化格式(新建一个存储器初始化格式(.mifmif)文件文件 执行“FileNewFileNew”菜单命令,在New对话框中选择“Other FilesOther Files”标签,选择“Memory Initialization FileMemory Initiali

46、zation File”,单击“OK”,在弹出的对话框中输入字数字数(296)和字长字长(8),单击“OK”,则打开存储器编辑窗口打开存储器编辑窗口。(2 2)设置存储单元地址和字的显示格式设置存储单元地址和字的显示格式 选择“ViewAddress RadixHexadecimalViewAddress RadixHexadecimal”菜单命令,使地址的显示格式为十六进制,选择“ViewMemory RadixUnsigned ViewMemory RadixUnsigned DecimalDecimal”菜单命令,使字的显示格式为无符号十进制。669.4 9.4 提高数字系统性能的方法提

47、高数字系统性能的方法(3 3)编辑存储器内容编辑存储器内容根据乘积关系编辑该文件,存储单元的地址高位表示被乘数,低位表示乘数,该存储单元的内容即为相乘结果;选择要编辑的字,直接输入内容。(4 4)保存文件保存文件 文件后缀为.mif。地址地址字字679.4 9.4 提高数字系统性能的方法提高数字系统性能的方法地址地址(H)相乘结果相乘结果(D)地址地址(H)相乘结果相乘结果(D)地址地址(H)相乘结果相乘结果(D)000 100200010111212020 122224030133236040 1442480901992910060 16626120701772714080 18828160

48、9019929180A0 1A102A200B01B112B220C0 1C122C240D01D132D260E0 1E142E280F01F192F30689.4 9.4 提高数字系统性能的方法提高数字系统性能的方法3.3.对设计文件进行编译对设计文件进行编译编译源文件编译源文件lpmrom_mult.bdflpmrom_mult.bdf ;即得到一个高速即得到一个高速4444乘法器。乘法器。4.4.仿真仿真1 1 3=33=3699.4 9.4 提高数字系统性能的方法提高数字系统性能的方法方法四方法四:修改软件配置修改软件配置1.选择不同速度等级的器件(Assign/Device命令)2

49、.流水线设置(即pipeline参数设置)例例9.279.27 利用利用Mega_lpmMega_lpm中的中的lpm_multlpm_mult宏模块设计宏模块设计8888乘法器乘法器709.4 9.4 提高数字系统性能的方法提高数字系统性能的方法1.1.选择不同速度等级的器件选择不同速度等级的器件(Assign/DeviceAssign/Device命令)命令)选用EP1S10F780C6,T=3.979ns,f=279.72MHz;选用EP1S10F780C9,T=3.247ns,f=307.98MHz8x8mult1.bdf非非流水流水线方式线方式器件名最后的数字器件名最后的数字越小,速

50、度等级越越小,速度等级越高,器件速度越快高,器件速度越快!719.4 9.4 提高数字系统性能的方法提高数字系统性能的方法2.2.流水线设置流水线设置将8x8mult1.bdf另存为8x8mult2.bdf;双击宏单元lpm_mult的参数修改框,弹出对话框,将clock设置为“used”,pipeline参数修改为3;在8x8mult2.bdf中将系 统 时 钟 clk与LPM_MULT的 clock端口相连;729.4 9.4 提高数字系统性能的方法提高数字系统性能的方法8x8mult2.bdf739.4 9.4 提高数字系统性能的方法提高数字系统性能的方法仍选用EP2C39 器件;将8x

51、8mult2.bdf设为顶层实体;编译;进行时序分析。结果为:Tclk=2.989ns,fmax=339.01MHz采用流水线方式,速度采用流水线方式,速度比采用非流水线方式的比采用非流水线方式的8x8mult1.bdf8x8mult1.bdf得到进一得到进一步提升!步提升!非流水线方式非流水线方式T Tclkclk(ns)f fmaxmax(MHz)EP1S10F780C6器件3.979279.72EP1S10F780C9器件3.247307.98流水线方式流水线方式T Tclkclk(ns)f fmaxmax(MHz)EP1S10F780C6器件3.402 293.94EP1S10F780

52、C9器件2.989339.01749.4 9.4 提高数字系统性能的方法提高数字系统性能的方法二、减小器件耗用资源二、减小器件耗用资源1.1.采用耗用硬件资源小的描述方法采用耗用硬件资源小的描述方法相同的逻辑功能可以用不同的方法描述,从而生相同的逻辑功能可以用不同的方法描述,从而生成不同的电路,则耗用的器件资源也不同。成不同的电路,则耗用的器件资源也不同。例如加法器比数据选择器耗用硬件资源更大,则例如加法器比数据选择器耗用硬件资源更大,则可以选用适当的描述方式,尽量节省加法器,就可以选用适当的描述方式,尽量节省加法器,就会降低硬件代价。会降低硬件代价。例例9.289.28 设计电路,实现以下功

53、能:当设计电路,实现以下功能:当selsel=0=0时,时,sum=a+bsum=a+b;当;当selsel=1=1时,时,sum=c+dsum=c+d。a a、b b、c c、d d的宽度可变。的宽度可变。759.4 9.4 提高数字系统性能的方法提高数字系统性能的方法(1 1)采用先加后选)采用先加后选 需要2个加法器,1个数据选择器,硬件代价较高resource1.v的的reportabsumadderabsumadderin0in1out4.0mux2_1selabcdselsum769.4 9.4 提高数字系统性能的方法提高数字系统性能的方法(2 2)采用先选后加)采用先选后加需要2

54、个数据选择器,1个加法器。可节省一个加法器,因此硬件代价降低。resource2.v的的report比前一种方式节约了2个LE!absumadderin0in1out4.0mux2_1selacbdselsumin0in1out4.0mux2_1selatempbtemp.779.4 9.4 提高数字系统性能的方法提高数字系统性能的方法2.2.采用耗用硬件资源小的抽象级别采用耗用硬件资源小的抽象级别尽管硬件描述语言可以从系统级、算法级、寄存器级、门级到开关级等不同的抽象级别对所设计的系统加以描述,但具体采用何种抽象模型,将影响到设计是否能成功地被综合、系统的工作速度快慢以及耗用器件资源的多少。

55、采用的描述级别越高,设计越容易;但对于特定的综合器而言,有可能无法将某些抽象级别高的描述转换为电路,或者即使转换成功,但耗用器件资源也会很大。v如如果果逻逻辑辑关关系系比比较较清清晰晰,可可以以采采用用算算法法级级抽抽象象级级别别,即即用用逻逻辑辑表表达达式式来来描描述述系系统统,而而不不用用if-elseif-else或或casecase语语句句,这这样将降低样将降低器件资源耗用器件资源耗用!789.4 9.4 提高数字系统性能的方法提高数字系统性能的方法3.3.人工优化代码的技巧人工优化代码的技巧虽然虽然EDAEDA软件在综合过程中会自动对软件在综合过程中会自动对VerilogVerilo

56、g HDL HDL程程序进行优化,但由于人工智能、综合算法以及计算序进行优化,但由于人工智能、综合算法以及计算机能力的制约,要达到最优的效果仍需要进行代码机能力的制约,要达到最优的效果仍需要进行代码的人工优化。的人工优化。(1 1)避免综合生成不必要的锁存器)避免综合生成不必要的锁存器 最常见的使电路复杂化的原因之一便是,在使用条件语句时没有列出所有的条件分支。这样在逻辑综合后将会出现不必要的锁存器。从而使电路变得更复杂,引起不必要的开销;而且也会降低系统的速度。因此if和else应成对出现,而每个case语句也应该有default项(除非分支语句能包括所有可能)。799.4 9.4 提高数字

57、系统性能的方法提高数字系统性能的方法(2 2)if if语句与语句与casecase语句的合理使用语句的合理使用If语句和case语句这两种表述方式所使用的资源完全不同。case语句各分支之间的关系是平行关系,在大多数综合器中都被综合成多路选择器结构,所以综合效率高,硬件结构简单,但各选项间没有优先关系。If语句则是被综合成多路选择器链结构,它是带优先级的选择,越靠上层的条件优先级越高,这些条件表达式中的信号在综合时也越靠近输出端。建立优先级结构会消耗大量的组合逻辑,因此它的综合效率比case语句低。因此在能够使用case语句的地方尽量使用case语句来代替If语句。809.4 9.4 提高数

58、字系统性能的方法提高数字系统性能的方法(3 3)用移位操作代替乘法操作)用移位操作代替乘法操作在一个变量和一个常数作乘法操作时,应尽量用移位操作和加减操作代替乘法操作。module mult(clk,in1,out);input clk;input3:0 in1;output out;reg9:0 out;always(posedge clk)begin out=in1*99;end endmodule module shift(clk,in1,out);input clk;input3:0 in1;output out;reg9:0 out;always(posedge clk)begin

59、out=in16-in12-in1;end endmodule v但但在在实实现现两两个个变变量量的的乘乘法法操操作作时时,如如果果用用移移位位操操作作和和加加减减操操作作代代替替乘乘法法操操作作,并并不不能能减减少少硬硬件逻辑资源的耗用,反而使程序复杂化了。件逻辑资源的耗用,反而使程序复杂化了。819.4 9.4 提高数字系统性能的方法提高数字系统性能的方法(4 4)硬件资源的共享)硬件资源的共享 括号的运用括号的运用适当地利用圆括号对运算进行重新组合,可以实现资源的共享。如下面两段代码,后一段代码输入信号in1和in2即可实现加法器的共享。module non_bracket(in0,in

60、1,in2,in3,out1,out2);output out1,out2;input in0,in1,in2,in3;assign out1=in0+in1+in2;assign out2=in1+in2+in3;endmodulemodule bracket(in0,in1,in2,in3,out1,out2);output out1,out2;input in0,in1,in2,in3;assign out1=in0+(in1+in2);assign out2=(in1+in2)+in3;endmodulevnon_bracket.vnon_bracket.v要要使使用用4 4个个1 1

61、位位加加法法器器,bracket.vbracket.v运运用圆括号后,只需用圆括号后,只需3 3个个1 1位加法器。位加法器。829.4 9.4 提高数字系统性能的方法提高数字系统性能的方法 相同部分外置相同部分外置在使用条件语句的时候,如if.else语句,应把if与else里相同的部分写到条件语句外面,以实现资源的共享。module example1(clk,a,b,c,d,out);input clk,d;input1:0 a,b,c;output3:0 out;reg3:0 out;always(posedge clk)begin if(d=1)out=c+a+b;else out=a+b;end endmodulemodule example2(clk,a,b,c,d,out);input clk,d;input1:0 a,b,c;output3:0 out;reg3:0 out;reg2:0 temp;always(posedge clk)begin temp=a+b;if(d=1)out=c+temp;else out=temp;end endmodule 83

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!