55
EDA 技技技技技技 10 10 技技技技技技技技技 技技技技技技技技技

EDA 技术 实用教程

  • Upload
    gavril

  • View
    95

  • Download
    6

Embed Size (px)

DESCRIPTION

EDA 技术 实用教程. 第 10 章 设计优化和设计方法. 10.1 面积优化. FPGA/CPLD 资源的优化具有实用意义:. ( 1 )通过优化,可以使用规模更小的可编程逻辑芯片,从而降低系统成本。. ( 2 )对于许多可编程逻辑器件(例如某些公司的 CPLD 器件),由于布线资源有限,耗用资源过多而严重影响电路性能。. ( 3 )为以后的技术升级,留下更多的可编程资源,方便添加产品的功能。. ( 4 )对于多数可编程逻辑器件,资源耗用太多会使器件功耗显著上升。. 10.1.1 资源共享. 10.1.1 资源共享. 【 例 10-1】 - PowerPoint PPT Presentation

Citation preview

Page 1: EDA 技术 实用教程

EDA 技术实用教程

第第 1010 章 章

设计优化和设计方设计优化和设计方法法

Page 2: EDA 技术 实用教程

KKX康芯科技

10.1 面积优化

10.1.1 资源共享

FPGA/CPLD 资源的优化具有实用意义:

( 1)通过优化,可以使用规模更小的可编程逻辑芯片,从而降低系统成本。

( 2)对于许多可编程逻辑器件(例如某些公司的 CPLD 器件),由于布线资源有限,耗用资源过多而严重影响电路性能。

( 3)为以后的技术升级,留下更多的可编程资源,方便添加产品的功能。

( 4)对于多数可编程逻辑器件,资源耗用太多会使器件功耗显著上升。

Page 3: EDA 技术 实用教程

KKX康芯科技

10.1.1 资源共享

【例 10-1 】LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;USE ieee.std_logic_arith.all;ENTITY multmux IS PORT (A0, A1 , B : IN std_logic_vector(3 downto 0); sel : IN std_logic; Result : OUT std_logic_vector(7 downto 0));END multmux;ARCHITECTURE rtl OF multmux ISBEGIN process(A0,A1,B,sel) begin if(sel = '0') then Result <= A0 * B; else Result <= A1 * B; end if; end process;END rtl;

Page 4: EDA 技术 实用教程

KKX康芯科技

0乘法器

×

1乘法器

× 选择器

0

1

A0

B

A1

B

Resul t

Sel

图 10-1 先乘后选择的设计方法RTL 结构

选择器

0

1

乘法器

×

A0

Sel

A1Resul t

B

图 10-2 先选择后乘设计方法 RTL 结构

Page 5: EDA 技术 实用教程

KKX康芯科技

【例 10-2 】ARCHITECTURE rtl OF muxmult IS signal temp : std_logic_vector(3 downto 0);BEGIN process(A0,A1,B,sel) begin if(sel = '0') then temp <= A0; else temp <= A1; end if; result <= temp * B; end process;END rtl;

选择器

0

1

A

B

S

R

选择器

0

1

A

B

S

R

选择器

0

1

A

B

S

R图 10-3 资源共享反例

Page 6: EDA 技术 实用教程

KKX康芯科技

10.1.2 逻辑优化

【例 10-3 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY mult1 IS PORT(clk : in std_logic; ma : In std_logic_vector(11 downto 0); mc : out std_logic_vector(23 downto 0));END mult1;ARCHITECTURE rtl OF mult1 IS signal ta , tb : std_logic_vector(11 downto 0);BEGINprocess(clk) begin if(clk'event and clk = '1') then ta <= ma; tb <= "100110111001"; mc <= ta * tb; end if;end process;END rtl;

在此构建了一个两输入的乘法器:mc <= ta * tb;

在此构建了一个两输入的乘法器:mc <= ta * tb;

Page 7: EDA 技术 实用教程

KKX康芯科技

【例 10-4 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY mult2 IS PORT(clk : in std_logic; ma : In std_logic_vector(11 downto 0); mc : out std_logic_vector(23 downto 0));END mult2;ARCHITECTURE rtl OF mult2 IS signal ta : std_logic_vector(11 downto 0); constant tb : std_logic_vector(11 downto 0) := "1001101110

01";BEGINprocess(clk) begin if(clk'event and clk = '1') then ta<=ma; mc<=ta * tb; end if;end process;END rtl;

Page 8: EDA 技术 实用教程

KKX康芯科技

10.1.3 串行化

【例 10-5 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY pmultadd IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); b0,b1,b2,b3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(15 downto 0));END pmultadd;ARCHITECTURE p_arch OF pmultadd ISBEGINprocess(clk) begin if(clk'event and clk = '1') then yout <= ((a0*b0)+(a1*b1))+((a2*b2)+(a3*b3)); end if;end process; END p_arch;

对 8个 16 位数据进行乘法和加法运算,即yout = a0 × b0 + a1 × b1 + a2 × b2 + a3 × b3

对 8个 16 位数据进行乘法和加法运算,即yout = a0 × b0 + a1 × b1 + a2 × b2 + a3 × b3

Page 9: EDA 技术 实用教程

KKX康芯科技

[15:0]Q[15:0][1:16] D[15:0]+

[15:0]

[15:0]

[1:16]

[15:0]

[15:0]

*[7:0]

[15:0]

[7:0]

*[7:0]

[15:0]

[7:0]

*[7:0]

[15:0]

[7:0]

*[7:0]

[15:0]

[7:0] yout[15:0][15:0]

b3[7:0] [7:0]

b2[7:0] [7:0]

b1[7:0] [7:0]

b0[7:0] [7:0]

a3[7:0] [7:0]

a2[7:0] [7:0]

a1[7:0] [7:0]

a0[7:0] [7:0]

clk

图 10-4 并行并行乘法 RTL 结构

Page 10: EDA 技术 实用教程

KKX康芯科技

【例 10-6 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY smultadd IS PORT(clk , start : in std_logic; a0,a1,a2,a3 : In std_logic_vector(7 downto 0); b0,b1,b2,b3 : In std_logic_vector(7 downto 0); yout : out std_logic_vector(15 downto 0));END smultadd;ARCHITECTURE s_arch OF smultadd IS signal cnt : std_logic_vector(2 downto 0); signal tmpa , tmpb : std_logic_vector(7 downto 0); signal tmp , ytmp : std_logic_vector(15 downto 0); BEGINtmpa <= a0 when cnt = 0 else a1 when cnt = 1 else a2 when cnt = 2 else a3 when cnt = 3 else a0;

接下页

Page 11: EDA 技术 实用教程

KKX康芯科技

tmpb <= b0 when cnt = 0 else b1 when cnt = 1 else b2 when cnt = 2 else b3 when cnt = 3 else b0;

tmp <= tmpa * tmpb;process(clk) begin if(clk'event and clk = '1') then if(start = '1') then cnt <= "000"; ytmp <= (others=>'0'); elsif (cnt <4) then cnt <= cnt + 1; ytmp <= ytmp + tmp; elsif (cnt = 4) then yout <= ytmp; end if; end if;end process;END s_arch;

Page 12: EDA 技术 实用教程

KKX康芯科技

[15:0]Q[15:0][1:16] D[15:0]RE

+[15:0]

[1:16]

[15:0]

*[7:0]

[15:0]

[7:0]

[2:0]Q[2:0][2:0] D[2:0]

ed

ed

ed

ed

[7:0]

[7:0][7:0]

[7:0]

[7:0]

ed

ed

ed

ed

[7:0]

[7:0][7:0]

[7:0]

[7:0]

0

1

[0:2]

[2:0]

000

[15:0]Q[15:0][15:0] D[15:0]E

+[2:0]

[0:2]

[2]

[0]

[1]

[0]

[1]

[2]

[1]

[0]

[0]

[1]

[0]

[1]

yout[15:0][15:0]

b3[7:0] [7:0]b2[7:0] [7:0]b1[7:0] [7:0]

b0[7:0] [7:0]

a3[7:0] [7:0]

a2[7:0] [7:0]

a1[7:0] [7:0]

a0[7:0] [7:0]

start

clk

图 10-5 串行化结构

Page 13: EDA 技术 实用教程

KKX康芯科技

10.2 速度优化

10.2.1 流水线设计

显然该设计从输入到输出需经过的时间至少为 Ta,就是说,时钟信号 clk 周期不能小于 Ta。

Page 14: EDA 技术 实用教程

KKX康芯科技

10.2.1 流水线设计

图 10-7 使用流水线

其最高频率为:

1

12max1maxmax T

FFF 1

12max1maxmax T

FFF

Page 15: EDA 技术 实用教程

KKX康芯科技

图 10-8 流水线工作图示

【例 10-7 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY adder4 IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(9 downto 0));END adder4; 接下页

Page 16: EDA 技术 实用教程

KKX康芯科技

ARCHITECTURE normal_arch OF adder4 IS signal t0,t1,t2,t3 : std_logic_vector(7 downto 0); signal addtmp0,addtmp1 : std_logic_vector(8 downto 0);BEGINprocess(clk) begin if(clk'event and clk='1') then t0 <= a0; t1 <= a1; t2 <= a2; t3 <= a3; end if;end process;addtmp0 <= '0'&t0 + t1;addtmp1 <= '0'&t2 + t3;process(clk) begin if(clk'event and clk = '1') then yout <= '0'&addtmp0 + addtmp1; end if;end process; END normal_arch;

接上页

Page 17: EDA 技术 实用教程

KKX康芯科技

【例 10-8 】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY pipeadd IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(9 downto 0));END pipeadd;ARCHITECTURE pipelining_arch OF pipeadd IS signal t0,t1,t2,t3 : std_logic_vector(7 downto 0); signal addtmp0,addtmp1 : std_logic_vector(8 downto 0);BEGINprocess(clk) begin if(clk'event and clk='1') then t0 <= a0; t1 <= a1; t2 <= a2; t3 <= a3; end if;end process;process(clk) begin if(clk'event and clk = '1') then addtmp0 <= '0'&t0 + t1; addtmp1 <= '0'&t2 + t3; yout <= '0'&addtmp0 + addtmp1; end if;end process;END pipelining_arch;

Page 18: EDA 技术 实用教程

KKX康芯科技

10.2.2 寄存器配平

如果其中的两个组合逻辑块的延时差别过大,如 T1大于 T2 ,于是其总体的工作频率 Fmax 取决于 T1 ,即最大的延时模块,从而导致设计的整体性能受到限制。

Page 19: EDA 技术 实用教程

KKX康芯科技

10.2.2 寄存器配平

图 10-10 设计的 Fmax 将由 t1决定,由于 t1<T1 ,显然设计的速度得到了提高。

Page 20: EDA 技术 实用教程

KKX康芯科技

10.2.3 关键路径法

Page 21: EDA 技术 实用教程

KKX康芯科技

10.3 使用 MAX+plusII 优化设计

10.3.1 全局逻辑综合选项

Page 22: EDA 技术 实用教程

KKX康芯科技

10.3.1 全局逻辑综合选项

1. 普通类型( Normal )

Page 23: EDA 技术 实用教程

KKX康芯科技

2. 快速类型( Fast )

3. 所见即所得类型( WYSIWYG )

10.3.1 全局逻辑综合选项

MAX+plusII 中对应于综合类型各设有 4 种器件系列( Device Family ):( 1 ) MAX5000 系列。( 2 ) MAX3000/MAX7000/MAX9000 系列。( 3 ) CLASSIC 系列。( 4 ) FLEX/ACEX 系列。

MAX+plusII 中对应于综合类型各设有 4 种器件系列( Device Family ):( 1 ) MAX5000 系列。( 2 ) MAX3000/MAX7000/MAX9000 系列。( 3 ) CLASSIC 系列。( 4 ) FLEX/ACEX 系列。

Page 24: EDA 技术 实用教程

KKX康芯科技

10.3.2 时间需求选项

建立时间 Tsu

输出时间 Tco

时钟最大频率 Fmax

保持时间 Thold

恢复时间 Tov

寄存器的时序参数寄存器的时序参数

组合电路的路径延时组合电路的路径延时

Page 25: EDA 技术 实用教程

KKX康芯科技

Tsu Tco

Fmax图 10-14 部分寄存器时序参数Tsu Thol d

Tco Fmax

图 10-15 部分寄存器参数时序图

Page 26: EDA 技术 实用教程

KKX康芯科技

图 10-16 时间需求设定

Page 27: EDA 技术 实用教程

KKX康芯科技

图 10-17 建立保持时间分析器

Page 28: EDA 技术 实用教程

KKX康芯科技

10.3.3 打包( Clique )

图 10-18 打包 Clique 设计示例

Page 29: EDA 技术 实用教程

KKX康芯科技

图 10-19 图 10-18 设计适配后的 Floorplan

Page 30: EDA 技术 实用教程

KKX康芯科技

图 10-20 使用 Clique

Page 31: EDA 技术 实用教程

KKX康芯科技

图 10-21 Clique 对话框

10.3.3 打包( Clique )

Page 32: EDA 技术 实用教程

KKX康芯科技

图 10-22 Clique 后的 Floorplan

10.3.3 打包( Clique )

Page 33: EDA 技术 实用教程

KKX康芯科技

10.3.3 打包( Clique )

Clique 的注意事项:

仅仅对关联的逻辑进行 Clique (打包到同一组)。

对速度有更高要求的模块使用打包,那些模块往往处于关键路径,改善它们的速度会提高系统的整体速度。

Clique 使用于层次化设计中,将大的、慢速的逻辑块分成小模块,便合理使用 Clique 。

对整个设计应用打包(同一组)等于没有应用,打包是一种局部的布局规划,适用于设计中的某些模块。

Page 34: EDA 技术 实用教程

KKX康芯科技

10.3.4 局部逻辑综合选项

图 10-23 使用局部逻辑选项

Page 35: EDA 技术 实用教程

KKX康芯科技

10.3.4 局部逻辑综合选项

Page 36: EDA 技术 实用教程

KKX康芯科技

图 10-25 分立逻辑选项

Page 37: EDA 技术 实用教程

KKX康芯科技

10.3.4 局部逻辑综合选项

图 10-26 清除工程选项设置

Page 38: EDA 技术 实用教程

KKX康芯科技

10.3.5 Probe 的使用

图 10-27是一个简单的设计(图形方式),假如需要观察节点 1( Q端)的波形。

图 10-27 未加 Probe 的设计

Page 39: EDA 技术 实用教程

KKX康芯科技

10.3.5 Probe 的使用

图 10-28 右键菜单

Page 40: EDA 技术 实用教程

KKX康芯科技

10.3.5 Probe 的使用

图 10-29 加入探针后

Page 41: EDA 技术 实用教程

KKX康芯科技

10.3.5 Probe 的使用

图 10-30 probe 的仿真波形

Probe 使用技巧

( 1)对 dff 的 Q、 D、 CLK 、 ENA 、 CLRN 、 PRN 可以使用 probe ,一般 dff 不会轻易被化简掉。( 2)对 LE的输出可以使用 probe( 3)对于不可使用 probe 的情况下,加一个 LCELL ,问题可能会得到解决,不过,逻辑会改变,会增加一个 LCELL Delay 。可以在测试( Debug )时加入,随后去掉 LCELL 。

Page 42: EDA 技术 实用教程

KKX康芯科技

10.4 其他设置10.4.1 Slow Slew Rate 设置

图 10-31 Slow Slew Rate 选择

Page 43: EDA 技术 实用教程

KKX康芯科技

10.4 其他设置

10.4.2 EPC 系列配置器件设置与编程

图 10-32 EPC2 的编程文件产生设置

Page 44: EDA 技术 实用教程

KKX康芯科技

图 10-33 EPC2 下载

图 10-34 SuperPro L+ 编程器的器件选择

Page 45: EDA 技术 实用教程

KKX康芯科技

10.4.2 EPC 系列配置器件设置与编程

图 10-35 在 SuperPro /Z 编程器中选择编程文件

Page 46: EDA 技术 实用教程

KKX康芯科技

10.4 其他设置10.4.3 编程文件转换

在 MAX+plusII 环境下可产生的编程、配置文件有下列几种:

SRAM 目标文件 SRAM Object File (.sof) ,用于 Altera 的 FPGA 器件(如 FLEX10K 系列)等,对于该类器件 MAX+plusII默认产生。

编程器目标文件 Programmer Object File (.pof) ,用于 Altera 的 CPLD 器件(如 MAX7000S 系列)和专用配置器件(如 EPC2 系列),默认产生。

Intel HEX格式文件 Hexadecimal (Intel-Format) File (.hex) 。用于第三方编程器对 Altera 的配置器件编程等用途。

表格文件 Tabular Text File (.ttf) ,用于单片机配置 FPGA 器件等用途。

JTAG链文件 JTAG Chain File (.jcf) 。 FLEX Chain File (.fcf) 。 Jam 编程文件 Jam Byte-Code File (.jbc) 、 Jam File (.jam) 。 其他格式编程文件 Raw Binary File (.rbf) 、 Serial Bitstream F

ile (.sbf) 、 JEDEC File (.jed) 、 Serial Vector Format File (.svf) 。

Page 47: EDA 技术 实用教程

KKX康芯科技

10.4.3 编程文件转换

图 10-36 编程文件转换

Page 48: EDA 技术 实用教程

KKX康芯科技

10.4 其他设置10.4.4 MAX+plusII 在 Windows 2000 上的安装设置

具体安装步骤如下:

( 1)首先安装 MAX+plusII;( 2)选择(“开始”→“设置”→“控制面板”);( 3)双击“游戏选项”,然后选择“添加”→“添加其他”→“从磁盘安

装”命令,再单击“浏览”浏览驱动所在目录: MAX+plusII 的安装目录 \drivers\win2000;( 4)选择 win2000.inf ,单击确定;

( 5)在“数字签名未找到”对话框中,选择是;( 6)在“选择一个设备驱动程序”窗口中,选择 Altera ByteBlaster ,并

单击“下一步”;( 7)在接下去的“数字签名未找到”对话框中,仍选择“是”;( 8)安装完成,依提示,重新启动计算机

Page 49: EDA 技术 实用教程

KKX康芯科技

实 验

( 1 )实验目的:设计一个在数字通信系统中常见的数字相关器,并利用流水线技术提高其工作速度,对其进行仿真和硬件测试。

( 2 )实验原理:数字相关器用于检测等长度的两个数字序列间相等的位数,实现序列间的相关运算。

一位相关器即是异或门,异或的结果可以表示两个 1位数据的相关程度。异或为 0表示数据位相同;异或为 1表示数据位不同。多位数字相关器可以由多个一位相关器构成,如 N位的数字相关器由 N个异或门和 N 个 1位相关结果统计电路构成。

( 1 )实验目的:设计一个在数字通信系统中常见的数字相关器,并利用流水线技术提高其工作速度,对其进行仿真和硬件测试。

( 2 )实验原理:数字相关器用于检测等长度的两个数字序列间相等的位数,实现序列间的相关运算。

一位相关器即是异或门,异或的结果可以表示两个 1位数据的相关程度。异或为 0表示数据位相同;异或为 1表示数据位不同。多位数字相关器可以由多个一位相关器构成,如 N位的数字相关器由 N个异或门和 N 个 1位相关结果统计电路构成。

实验 10-1 采用流水线技术设计高速数字相关器

Page 50: EDA 技术 实用教程

KKX康芯科技

实 验

( 3 )实验内容 1 :根据上述原理设计一个并行 4 位数字相关器(例 10-10 是样例程序)。提示:利用 CASE 语句完成4 个 1 位相关结果的统计。

( 3 )实验内容 1 :根据上述原理设计一个并行 4 位数字相关器(例 10-10 是样例程序)。提示:利用 CASE 语句完成4 个 1 位相关结果的统计。

实验 10-1 采用流水线技术设计高速数字相关器

【例 10-10 】stemp <= a XOR b;PROCESS(stemp) BEGIN

CASE stemp IS WHEN "0000" => c <= "100"; --4 WHEN "0001"|"0010"|"0100"|"1000" => c <= "011"; --3 WHEN "0011"|"0101"|"1001"|"0110"|"1010"|"1100" => c <= "0

10";--2 WHEN "0111"|"1011"|"1101"|"1110" => c <= "001"; --1

WHEN "1111" => c <= "000"; -- 0;WHEN OTHERS => c <= "000";

END CASE;END PROCESS;

Page 51: EDA 技术 实用教程

KKX康芯科技实 验

( 4 )实验内容 2 :利用实验内容 1 中的 4 位数字相关器设计并行 16位数字相关器。使用 MAX+plusII 估计最大延时,并计算可能运行频率。

( 5 )实验内容 3 :在步骤 4 的基础上,利用设计完成的 4 位数字相关器设计并行 16 位数字相关器,其结构框图见图 10-38 ,并利用 MAX+plusII计算运行速度。

( 4 )实验内容 2 :利用实验内容 1 中的 4 位数字相关器设计并行 16位数字相关器。使用 MAX+plusII 估计最大延时,并计算可能运行频率。

( 5 )实验内容 3 :在步骤 4 的基础上,利用设计完成的 4 位数字相关器设计并行 16 位数字相关器,其结构框图见图 10-38 ,并利用 MAX+plusII计算运行速度。

实验 10-1 采用流水线技术设计高速数字相关器

4位相关器

4位相关器

4位相关器

4位相关器

+3

3

3

3

a[3. . 0]b[3. . 0]

a[7. . 4]b[7. . 4]

a[11. . 8]b[11. . 8]

a[15. . 12]b[15. . 12]

4

4

5c[15. . 0]

图 10-38 16 位相关器结构

Page 52: EDA 技术 实用教程

KKX康芯科技

实 验

( 6 )实验内容 4 :上面的 16 位数字相关器是用 3 级组合逻辑实现的,在实际使用时,对其有高速的要求,试使用流水线技术改善其运行速度。在输入、输出及每一级组合逻辑的结果处加入流水线寄存器,提高速度,可参照本章内容进行设计。

( 7 )实验思考题:考虑采用流水线后的运行速度与时钟 clock 的关系,测定输出与输入的总延迟。若输入序列是串行化的,数字相关器的结构如何设计?如何利用流水线技术提高其运行速度?

( 8 )实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。

( 6 )实验内容 4 :上面的 16 位数字相关器是用 3 级组合逻辑实现的,在实际使用时,对其有高速的要求,试使用流水线技术改善其运行速度。在输入、输出及每一级组合逻辑的结果处加入流水线寄存器,提高速度,可参照本章内容进行设计。

( 7 )实验思考题:考虑采用流水线后的运行速度与时钟 clock 的关系,测定输出与输入的总延迟。若输入序列是串行化的,数字相关器的结构如何设计?如何利用流水线技术提高其运行速度?

( 8 )实验报告:根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。

实验 10-1 采用流水线技术设计高速数字相关器

Page 53: EDA 技术 实用教程

KKX康芯科技

实 验

( 1 )实验目的:学习用 VHDL 设计 LFSR ,掌握利用 FPGA 的特殊结构中高效实现 LFSR 的方法。

( 2 )实验原理: LFSR 即 Linear Feedback Shift Register 线性反馈移位寄存器,是一种十分有用的时序逻辑结构,广泛用于伪随机序列发生、可编程分频器、 CRC 校验码生成、 PN码等等。图 10-39 是典型的 LFSR 结构。

( 1 )实验目的:学习用 VHDL 设计 LFSR ,掌握利用 FPGA 的特殊结构中高效实现 LFSR 的方法。

( 2 )实验原理: LFSR 即 Linear Feedback Shift Register 线性反馈移位寄存器,是一种十分有用的时序逻辑结构,广泛用于伪随机序列发生、可编程分频器、 CRC 校验码生成、 PN码等等。图 10-39 是典型的 LFSR 结构。

实验 10-2 线性反馈移位寄存器( LFSR )设计

图 10-39 LFSR举例

Page 54: EDA 技术 实用教程

KKX康芯科技

实 验

( 3 )实验内容:依据图 10-39 设计一个 LFSR ,其生成多项式为 X4+X3+X0 。试在 EPF10K20TC144-4 器件上加以实现,并利用本章中提及的 MAX+plusII 优化选项,使之达到最高运行速度,并在 EDA开发系统上,对其产生的码序列进行观察。

( 4 )实验思考题:另有一种 LFSR 的结构,见图 10-40 ,试分析与图10-39 中 LFSR 结构的异同点。

( 3 )实验内容:依据图 10-39 设计一个 LFSR ,其生成多项式为 X4+X3+X0 。试在 EPF10K20TC144-4 器件上加以实现,并利用本章中提及的 MAX+plusII 优化选项,使之达到最高运行速度,并在 EDA开发系统上,对其产生的码序列进行观察。

( 4 )实验思考题:另有一种 LFSR 的结构,见图 10-40 ,试分析与图10-39 中 LFSR 结构的异同点。

实验 10-2 线性反馈移位寄存器( LFSR )设计

图 10-40 另一种 LFSR 结构

Page 55: EDA 技术 实用教程

KKX康芯科技

实 验

( 5 )实验思考题 2 :用 LFSR 设计可编程分频器,对电子琴实验中的音阶发生电路的可编程计数器(实现可编程分频功能)用 LFSR替代。

( 6 )实验思考题 3 :对图 10-40 结构的 LFSR 电路进行改进,设计成串行 CRC 校验码发生器(提示:反馈线上加入 xor ,xor 的一个输入端接待编码串行有效信息输入)。

( 7 )实验报告:作出本项实验设计的完整电路图,详细说明其工作原理,完成测试实验内容,对实验中的码序列进行记录,写出电路可达到的最高运行速度及修改的 MAX+plusII 选项。

( 5 )实验思考题 2 :用 LFSR 设计可编程分频器,对电子琴实验中的音阶发生电路的可编程计数器(实现可编程分频功能)用 LFSR替代。

( 6 )实验思考题 3 :对图 10-40 结构的 LFSR 电路进行改进,设计成串行 CRC 校验码发生器(提示:反馈线上加入 xor ,xor 的一个输入端接待编码串行有效信息输入)。

( 7 )实验报告:作出本项实验设计的完整电路图,详细说明其工作原理,完成测试实验内容,对实验中的码序列进行记录,写出电路可达到的最高运行速度及修改的 MAX+plusII 选项。

实验 10-2 线性反馈移位寄存器( LFSR )设计