EDA和CPLD实例程序总结

EDA和CPLD实例程序总结
EDA和CPLD实例程序总结

1、CPLD与FPGA比较

基于乘积项技术、Flash工艺的PLD叫CPLD;把基于查找表技术、SRAM工艺、需要外挂配置E2PROM的PLD叫FPGA。

尽管FPGA和CPLD都是可编程ASIC器件,有很多共同特点,但由于CPLD和FPGA结构上的差异,具有各自的特点:

①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。

②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。

③在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。

④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。

⑤CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。

⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且LB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。

⑦CPLD的功耗一般比FPGA大,且集成度越高越明显。

2、D触发器

ENTITY mux1 IS

PORT (d0,d1,sel: IN BIT;

q : OUT BIT);

END mux1;

ARCHITECTURE connect OF mux1 IS

BEGIN

P1: PROCESS(d0,d1,sel)

BEGIN

if sel=‘1’ then

q<=d0;

else

q<=d1;

end if;

END PROCESS P1;

END connect;

3、根据真值表,编程实现4选1多路选择器,用时序图验证。a,b都为8位位矢量。(附加中文注释)

Sel y

00 0

01 a

10 b

11 Z

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY mux41a IS

PORT(sel:IN BIT_VECTOR(1 DOWNTO 0);

a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ENTITY mux41a;

ARCHITECTURE one OF mux41a IS

BEGIN

PROCESS(a,b,sel)

BEGIN

IF sel="00" THEN y<="00000000";

ELSIF sel="01" THEN y<=a;

ELSIF sel="10" THEN y<=b;

ELSIF sel="11" THEN y<="ZZZZZZZZ";

END IF;

END PROCESS;

END ARCHITECTURE one;

4、操作符举例

SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 DOWNTO 0) ;

SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ;

SIGNAL h,I,j,k : STD_LOGIC ;

SIGNAL l,m,n,o,p : BOOLEAN ;

a<=b AND c; --b、c 相与后向a赋值,a、b、c的数据

类型同属4位长的位矢量

d<=e OR f OR g ; -- 两个操作符OR相同,不需括号

l<=(m XOR n)AND(o XOR p); -- 操作符不同,必须加括号

h<=i AND j AND k ; -- 两个操作符都是AND,不必加括号

h<=i AND j OR k ; -- 两个操作符不同,未加括号,表达错误 a<=b AND e ; -- b与e的位矢长度不一致,表达错误

h<=i OR l ; -- i 的数据类型是位STD_LOGIC,而l的数据类型是布尔量BOOLEAN,因而不能相互作用,表达错误。

5、进程注意事项

●进程本身是并行语句,但内部为顺序语句;

●进程在敏感信号发生变化时被激活,在使用了敏感表的进程中

不能含wait语句;

●在同一进程中对同一信号多次赋值,只有最后一次生效;

●在不同进程中,不可对同一信号进行赋值;

●一个进程不可同时对时钟上、下沿敏感。

●进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时

生效。

●相对于结构体而言,信号具有全局性,是进程间进行并行联系

的重要途径。

进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于进程的硬件结构对进程中所有可读入信号

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

ENTITY test IS

PORT (clock: IN BIT;

A: IN Integer RANGE 0 TO 7;

B: OUT Integer RANGE 0 TO 7);

END test;

ARCHITECTURE a OF test IS

Signal C: Integer RANGE 0 TO 7;

BEGIN

PROCESS(clock)

BEGIN

IF clock'event and clock='1' THEN

C<=A+1;

B<=C;

C<=3; --将其与第一句互换位置判断有什么影响?

END IF;

END PROCESS;

END;

6、分频器

LIBRARY IEEE;

USE IEEE.Std_Logic_1164.ALL;

ENTITY FreDevider IS

PORT

( Clock: IN Std_logic;

Clkout: OUT Std_logic);

END;

ARCHITECTURE Behavior OF FreDevider IS

SIGNAL Clk: Std_Logic; --这里之所以要定义Clk是因为输出信号不能被赋值,在最后有一句Clk<=NOT Clk若改为Clkout则输出就被赋值了,所以要引用内部信号

BEGIN

PROCESS (Clock) --将时钟作为进程的敏感信号

BEGIN

IF rising_edge (Clock) THEN

Clk<=NOT Clk; --在时钟上升沿执行Clk<=NOT Clk

END IF;

END PROCESS;

Clkout<=Clk;

END;

7、双进程选择器

ENTITY mul IS --实现了一个选择器

PORT (a, b, c, selx, sely : IN BIT;

data_out : OUT BIT );

END mul;

ARCHITECTURE ex OF mul IS

SIGNAL temp : BIT;

BEGIN

p_a : PROCESS (a, b, selx)

BEGIN

IF (selx = '0') THEN temp <= a;

ELSE temp <= b;

END IF;

END PROCESS p_a;

p_b: PROCESS(temp, c, sely)

BEGIN

IF (sely = '0') THEN data_out <= temp;

ELSE data_out <= c;

END IF;

END PROCESS p_b;

END ex;

8、敏感表举例

PROCESS(oe,a)

BEGIN

IF oe=‘1’ THEN

y <= a;

END IF;

END;

如果敏感表中没有a则结果如下

9、信号赋值与变量赋值

ENTITY TEST_Signal IS

PORT

( Reset, Clock: IN Std_logic;

NumA, NumB: OUT Integer RANGE 0 TO 255); END;

ARCHITECTURE TEST OF TEST_Signal IS

SIGNAL A, B: Integer RANGE 0 TO 255;

BEGIN

PROCESS (RESET,Clock)

VARIABLE C: Integer RANGE 0 TO 255;

BEGIN

IF RESET=‘1’ THEN

A<=0; B<=2;C:=0;

ELSIF rising_edge(Clock) THEN

C:=C+1;A<=C+1;B<=A+2;

END IF;

END PROCESS;

NumA<=A; NumB<=B;

END;

1,变量的值存在于同一进程内,并且不会在进程结束时清零,但不能用于不同进程间数据的传递;

2,程序中的变量C改为信号,程序结果不变;

3,内部信号可赋初值并有效,端口信号可赋初值但无效。

4,变量可赋初值,只在进程第一次启动时有作用,后面不再起作用。

10、8-3优先编码器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY coder IS

PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7);

output : OUT STD_LOGIC_VECTOR(0 TO 2) );

END coder;

ARCHITECTURE behav OF coder IS

SIGNAL SINT : STD_LOGIC_VECTOR(4 DOWNTO 0);

BEGIN

PROCESS (din)

BEGIN

IF (din(7)='0') THEN output <= "000" ;

ELSIF (din(6)='0') THEN output <= "100" ;

ELSIF (din(5)='0') THEN output <= "010" ;

ELSIF (din(4)='0') THEN output <= "110" ;

ELSIF (din(3)='0') THEN output <= "001" ;

ELSIF (din(2)='0') THEN output <= "101" ;

ELSIF (din(1)='0') THEN output <= "011" ;

ELSE output <= "111" ;

END IF ;

END PROCESS ;根据程序写真值表

END behav;

11、case-when语句(取代elsif then)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY v4 IS

PORT(a,b,i0 : IN STD_LOGIC;

i1,i2,i3 : IN STD_LOGIC;

q : OUT STD_LOGIC);

END v4;

ARCHITECTURE v4_behave OF v4 IS

BEGIN

PROCESS(a,b,i0,i1,i2,i3)

VARIABLE sel: INTEGER RANGE 0 TO 3;

BEGIN

sel:=0;

IF (a='1') THEN

sel:=sel+1;

END IF;

IF (b='1') THEN

sel:=sel+2;

END IF;

CASE sel IS

WHEN 0 =>q<=i0;

WHEN 1 =>q<=i1;

WHEN 2 =>q<=i2;

WHEN 3 =>q<=i3;

END CASE;

END PROCESS;

END;

12、loop奇偶校验

LIBRARY IEEE;---奇偶校验

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY V5 IS

PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

y : OUT STD_LOGIC);

END V5;

ARCHITECTURE behave OF V5 IS

BEGIN

PROCESS(a)

VARIABLE tmp: STD_LOGIC;

BEGIN

tmp:='0';

FOR i IN 0 TO 7 LOOP

tmp:=tmp XOR a(i);

END LOOP;

y<=tmp;

END PROCESS;

END;

13、元件例化

①LIBRARY ieee;--半加器

USE ieee.std_logic_1164.all;

ENTITY half IS

PORT (a, b: IN std_LOGIC;

s, co : OUT std_LOGIC);

END half;

ARCHITECTURE example OF half IS

signal c,d:std_logic;

BEGIN

c<=a or b;

d<=a nand b;

co<=not d;

s<=c and d;

end example;

②LIBRARY ieee;--全加器用①的元件

USE ieee.std_logic_1164.all;

ENTITY v10 IS

PORT (a, b,cin: IN std_LOGIC;

s,co: OUT std_LOGIC);

END v10;

ARCHITECTURE example OF v10 IS

component half

PORT (a, b: IN std_LOGIC;

s,co: OUT std_LOGIC);

end component;

signal u0_co,u0_s,u1_co:std_logic;

begin

u0:half port map(a,b,u0_s,u0_co);

u1:half port map(u0_s,cin,s,u1_co);

co<=u0_co or u1_co;

end example;

14、一般有限状态机的设计

①LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY s_machine IS

PORT ( clk,reset : IN STD_LOGIC;

state_inputs : IN STD_LOGIC_VECTOR (0 TO 1);

comb_outputs : OUT INTEGER RANGE 0 TO 15 ); END s_machine;

ARCHITECTURE behv OF s_machine IS

TYPE FSM_ST IS (s0, s1, s2, s3);

SIGNAL current_state, next_state: FSM_ST;

BEGIN

REG: PROCESS (reset,clk)

BEGIN

IF reset = '1' THEN current_state <= s0;

ELSIF clk='1' AND clk'EVENT THEN

current_state <= next_state;

END IF;

END PROCESS;

COM:PROCESS(current_state, state_Inputs)

BEGIN

CASE current_state IS

WHEN s0 => comb_outputs<= 5;

IF state_inputs = "00" THEN next_state<=s0;

ELSE next_state<=s1;

END IF;

WHEN s1 => comb_outputs<= 8;

IF state_inputs = "01" THEN next_state<=s1;

ELSE next_state<=s2;

END IF;

WHEN s2 => comb_outputs<= 12;

IF state_inputs = "10" THEN next_state <= s2;

ELSE next_state <= s3;

END IF;

WHEN s3 => comb_outputs <= 14;

IF state_inputs = "11" THEN next_state <= s3;

ELSE next_state <= s0;

END IF;

END case;

END PROCESS;

END behv;

②LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY two_process_state_machine IS

PORT (clk, reset : IN STD_LOGIC;

state_inputs : IN STD_LOGIC;

comb_outputs : OUT STD_LOGIC_VECTOR(0 TO 1));

END ENTITY two_process_state_machine;

ARCHITECTURE behv OF two_process_state_machine IS

TYPE states IS (st0,st1,st2,st3); --定义states为枚举型数据类型,构造符号化状态机SIGNAL current_state, next_state: states;

BEGIN

REG: PROCESS (reset, clk) --时序逻辑进程

BEGIN

IF reset = '1' THEN--异步复位

current_state <= st0;

ELSIF clk = '1' AND clk'EVENT THEN--出现时钟上升沿时进行状态转换

current_state <= next_state;

END IF;

END PROCESS;

COM: PROCESS(current_state, state_inputs) --组合逻辑进程

BEGIN

CASE current_state IS

WHEN st0 => comb_outputs <= "00"; --系统输出及其初始化

IF state_inputs = '0' THEN --根据外部输入条件决定状态转换方向

next_state <= st0;

ELSE next_state <= st1;

END IF;

WHEN st1=> comb_outputs <= "01";

IF state_inputs = ‘0’ THEN next_state <= st1;

ELSE next_state <= st2;

END IF;

WHEN st2=> comb_outputs <= "10";

IF state_inputs = ‘0’ THEN next_state <= st2;

ELSE next_state <= st3;

END IF;

WHEN st3=>comb_outputs <= "11";

IF state_inputs = ‘0’ THEN next_state <= st3;

ELSE next_state <= st0;

END IF;

END CASE;

END PROCESS;

END ARCHITECTURE behv;

15、摩尔状态机

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY v20 IS

PORT(

en,clk,rst: IN STD_LOGIC;

today: OUT STD_LOGIC_VECTOR(2 downto 0)); END v20;

ARCHITECTURE abc OF v20 IS

type state is (SUN,MON,TUE,WEN,THU,FRI,SAT);

signal pstate: state;

signal nstate: state;

BEGIN

process(en,clk,rst)

begin

if rst='1' then

pstate<=SUN;

nstate<=SUN;

elsif clk'event and clk='1' then

if en='1' then

case pstate is

when SUN => nstate<=MON;today<="111";

when MON => nstate<=TUE;today<="001";

when TUE => nstate<=WEN;today<="010";

when WEN => nstate<=THU;today<="011";

when THU => nstate<=FRI;today<="100";

when FRI => nstate<=SAT;today<="101";

when SAT => nstate<=SUN;today<="110";

when others=> nstate<=MON;today<="111";

end case;

pstate<=nstate;

end if;

end if;

end process;

END abc;

16、米里状态机

LIBRARY IEEE;

USE IEEE.Std_ Logic_1164.ALL;

ENTITY MealyMachine IS

PORT

(Reset ,Clock,DIN:IN Std_Logic;

DOUT:OUT Std_Logic_Vector(2 DOWNTO 0));

END;

ARCHITECTURE Statemachine OF

MealyMachine IS

TYPE State_type IS (S0,S1,S2,S3);

SIGNAL State:State_type;

BEGIN

Change_State: PROCESS (Reset,Clock)

BEGIN

IF Reset=‘1’ THEN

State<=S0;

ELSIF rising_edge(Clock) THEN

CASE State IS

WHEN S0=〉IF DIN=‘1’ THEN

State<=S1;END IF;

WHEN S1=〉IF DIN=‘1’ THEN

State<=S2;END IF;

WHEN S2=〉IF DIN=‘1’ THEN

State<=S3;END IF;

WHEN S3=〉IF DIN=‘1’ THEN State<=S0;

ELSE State<=S1; END IF ;

END CASE;

END IF;

END PROCESS;

Output_Process:PROCESS(State,DIN)

BEGIN

CASE State IS

WHEN S0=>IF DIN=‘0’ THEN DOUT <=“000”;

ELSE DOUT<=“001”;END IF;

WHEN S1=>IF DIN=‘0’ THEN DOUT <=“010”;

ELSE DOUT<=“011”;END IF;

WHEN S2=> IF DIN=‘0’ THEN DOUT <=“100”;

ELSE DOUT<=“101”;END IF;

WHEN S3=> IF DIN=‘0’ THEN DOUT <=“110”;

ELSE DOUT<=“111”;END IF;

END CASE;

END PROCESS;

END;

17、交通灯

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY state_machine IS

PORT (clock, reset: IN std_logic;

timer1, timer2, timer3: IN std_logic;

r, y, g: OUT std_logic);

END state_machine;

ARCHITECTURE arch_1 OF state_machine IS

TYPE traffic_states IS (red, yellow, green);

SIGNAL sm: traffic_states;

BEGIN

PROCESS (clock, reset)

BEGIN

IF reset = '1' THEN sm <= red;

ELSIF rising_edge(clock) THEN

CASE sm IS

WHEN red => IF timer1=‘1’ THEN sm <= green; END IF

WHEN green => IF timer2=’1' THEN sm <= yellow; END IF;

WHEN yellow => IF timer3=’1' THEN sm <= red; END IF;

WHEN others => sm <= red;

END CASE;

END IF;

END PROCESS fsm;

r <= '1' WHEN (sm = red) ELSE '0';

g <= '1' WHEN (sm = green) ELSE '0';

y <= '1' WHEN (sm = yellow) ELSE '0';

END arch_1;

18、JK触发器

LIBRARY ieee;

use ieee.std_logic_1164.all;

entity v17 is

port(clk,j,k,reset,set: in std_logic;

q,qb: out std_logic);

end v17;

architecture jk_behave of v17 is

signal q_s,qb_s: std_logic;

begin

process(clk,reset,set,j,k)

begin

if (set='0')and (reset='1') then

q_s<='1';

qb_s<='0';

elsif (set='1')and (reset='0') then q_s<='0';

qb_s<='1';

elsif (clk'event and clk='1') then

if (j='0') and (k='1') then

q_s<='0';

qb_s<='1';

elsif (j='1') and (k='0') then

q_s<='1';

qb_s<='0';

elsif (j='1') and (k='1') then

q_s<=not q_s;

qb_s<=not qb_s;

end if;

end if;

q<=q_s;

qb<=qb_s;

end process;

end jk_behave;

19、计数器

LIBRARY ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity v19 is

port(clk,reset,en: in std_logic;

qa,qb,qc,qd: out std_logic);

end v19;

architecture behave of v19 is

signal count_4: std_logic_vector(3 downto 0);

begin

qa<=count_4(0);

qb<=count_4(1);

qc<=count_4(2);

qd<=count_4(3);

process(clk,reset)

begin

if (reset='0') then

count_4<="0000";

elsif(clk'event and clk='1') then

if(en='1') then

if(count_4="1011") then

count_4<="0000";

else

count_4<=count_4+'1';

end if;

end if;

end if;

end process;

end behave;

基于CPLD的七段显示译码器设计实验说明

基于CPLD的七段显示译码器设计 1.新建工程。 ①为便于工程管理在桌面新建文件夹。 双击桌面Quartus Ⅱ图标,点击Greate a New Project—>Next—>弹出窗口 ②new of project:seg7_4 ③entity name:seg7_4(软件默认与上述new of project一致) ④next—>弹出“目标器件设置”窗口 Family:MAXⅡ(MAX7000S) 器件型号:EPM240T100C5 (EPM7128SLC84-15) ⑤next—>next—>finish 或者进入主界面,File—>New Project Wizard—>Next—>弹出窗口重复上述②③④⑤。 2.编辑七段显示译码器的VHDL文件。 主菜单File—>New—>选择VHDL File —>OK—>进入VHDL文本编辑窗,在其中键入下列设计文件(Copy即可)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; Entity seg7_4 is PORT ( BCD_in : IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入四位BCD码 SG_out : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); --输出七位字形码 END; ARCHITECTURE one OF seg7_4 IS BEGIN PROCESS(BCD_in) BEGIN CASE BCD_in IS WHEN "0000" => SG_out <= "0111111"; WHEN "0001" => SG_out <= "0000110"; WHEN "0010" => SG_out <= "1011011"; WHEN "0011" => SG_out <= "1001111"; WHEN "0100" => SG_out <= "1100110"; WHEN "0101" => SG_out <= "1101101"; WHEN "0110" => SG_out <= "1111101";

CPLD可编程数字信号发生器实验

课程: 通信原理 CPLD可编程数字信号发生器实验报告 系电子信息与计算机科学系 专业电子信息科学与技术 班级 姓名 学号 指导教师 实验地点 学年学期

一、实验目的 1、熟悉各种时钟信号的特点及波形。 2、熟悉各种数字信号的特点及波形。 二、实验内容 1、熟悉CPLD可编程信号发生器各测量点波形。 2、测量并分析各测量点波形及数据。 三、实验模块 1、通信原理0 号模块一块 2、示波器一台 四、实验原理 CPLD可编程模块用来产生实验系统所需要的各种时钟信号和各种数字信号。它由CPLD可编程器件ALTERA公司的EPM240T100C5、下载接口电路和一块晶振组成。晶振JZ1用来产生系统内的32.768MHz主时钟。本实验要求参加实验者了解这些信号的产生方法、工作原理以及测量方法,才可通过CPLD可编程器件的二次开发生成这些信号,理论联系实验,提高实际操作能力。 1、CPLD数字信号发生器,包括以下五个部分: ①时钟信号产生电路; ②伪随机码产生电路; ③帧同步信号产生电路; ④NRZ码复用电路及码选信号产生电路; ⑤终端接收解复用电路。 2、24位NRZ码产生电路 本单元产生NRZ信号,信号速率可根据输入时钟不同自行选择,帧结构如下图所示。帧长为24位,其中首位无定义,第2位到第8位是帧同步码(7位巴克码1110010),另外16路为2路数据信号,每路8位。此NRZ信号为集中插入帧同步码时分复用信号。LED亮状态表示1码,熄状态表示0码。 五、实验步骤 1、观测时钟信号输出波形。 信号源输出两组时钟信号,对应输出点为“CLK1”和“CLK2”,拨码开关S4的作用是改变第一组时钟“CLK1”的输出频率,拨码开关S5的作用是改变第二组时钟“CLK2”的输出频率。拨码开关拨上为1,拨下为0,拨码开关和时钟的对应关系如下表所示拨码开关时钟拨码开关时钟 000032.768M1000128K 000116.384M100164K 00108.192M101032K 0011 4.096M101116K

合肥工业大学EDA课程总结报告

EDA课程总结报告 一、EDA技术简介 1.EDA技术的概念 EDA即Electronic Design Automation的缩写,直译为:电子设计自动化 EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术。 2.EDA技术的目的和意义 EDA技术以规模巨大的可编程逻辑器件(PLD)作为进行电子设计的载体,硬件描述语言(HDL)作为系统逻辑描述的一种主要表达方式,通过它来完成对系统逻辑的描述,再依托具有强大功能的计算机,通过运用与 EDA 技术相应的工具软件,完成电子系统的自动化设计。这种技术的应用使设计人员得以高效快速地完成设计任务,使设计所用周期时间得以缩短,减少了设计所需的投入成本。 20 世纪70年代由于计算机及集成电路的急剧发展,使电子技术受到剧烈

的冲击,其更新换代的周期不断缩减,而专用的集成电路却不断提升其设计难度,致使两者之间的矛盾逐渐扩大,这就使得电子技术要不断地更新,从而满足电子产品生产的需要,经过近几十年的发展,电子设计技术大致经历了三个主要的发展阶段,从初期的 CAD 阶段到CAE 阶段再到现在的 EDA 阶段,电子设计技术取得了飞跃性的发展。EDA技术最特别之处在于它的设计流程,与传统自下而上的电子设计流程恰恰相反,EDA技术选择使用自上而下的设计流程,它从电子系统设计的整体出发,在进行设计之前就将系统中各部分之间的结构规划好,在对方框图进行划分时完成相关的仿真和纠错工作,使用 HDL 对高层次逻辑进行描述,并运用综合优化方法完成所有有关工作,然后通过使用 EDA 技术,可以帮助用户实现对系统中任意一项硬件功能进行系统描述,最后再利用现场可编程门阵列(FPGA)或复杂可编程逻辑器件(CPLD)来实现电子系统设计的结果。这种先进的电子技术有效地解决了传统电子设计技术的弊端,减少了实际应用中出现故障的几率,从而使设计效率得以大幅度提升。 二、EDA技术发展现状 EDA 技术发展迅猛, 逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。 在教学方面: 几乎所有理工科( 特别是电子信息) 类的高校都 开设了EDA 课程。主要是让学生了解EDA 的基本原理和基本概念、掌握用VHDL 描述系统逻辑的方法、使用EDA 工具进行电子电路课程

计算机组成原理实验报告

实验报告书 实验名称:计算机组成原理实验 专业班级:113030701 学号:113030701 姓名: 联系电话: 指导老师:张光建 实验时间:2015.4.30-2015.6.25

实验二基本运算器实验 一、实验内容 1、根据原理图连接实验电路

3、比较实验结果与手工运算结果,如有错误,分析原因。 二、实验原理 运算器可以完成算术,逻辑,移位运算,数据来自暂存器A和B,运算方式由S3-S0以及CN来控制。运算器由一片CPLD来实现。ALU的输入和输出通过三态门74LS245连接到CPU内总线上。另外还有指示灯进位标志位FC和零标志位FZ。 运算器原理图: 运算器原理图 暂存器A和暂存器B的数据能在LED灯上实时显示。进位进位标志FC、零标志FZ 和数据总线D7…D0 的显示原理也是如此。 ALU和外围电路连接原理图:

ALU和外围电路连接原理图运算器逻辑功能表:

三、实验步骤 1、按照下图的接线图,连接电路。 2、将时序与操作台单元的开关KK2 置为‘单拍’档,开关KK1、KK3 置为‘运行’档。 3、打开电源开关,如果听到有‘嘀’报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。然后按动CON 单元的CLR 按钮,将运算器的A、B 和FC、FZ 清零。 4、用输入开关向暂存器A 置数。 ①拨动CON 单元的SD27…SD20 数据开关,形成二进制数01100101 (或其它数值),数据显示亮为‘1’,灭为‘0’。 ②置LDA=1,LDB=0,连续按动时序单元的ST 按钮,产生一个T4 上沿,则将二进制数01100101 置入暂存器A 中,暂存器A 的值通过ALU 单元的 A7…A0 八位LED 灯显示。 5、用输入开关向暂存器B 置数。 ①拨动CON 单元的SD27…SD20 数据开关,形成二进制数10100111 (或其它数值)。 ②置LDA=0,LDB=1,连续按动时序单元的ST 按钮,产生一个T4 上沿,则将二进制数10100111 置入暂存器B 中,暂存器B 的值通过ALU 单元的 B7…B0 八位LED 灯显示。 6、改变运算器的功能设置,观察运算器的输出。置ALU_B=0 、LDA=0、LDB=0,然后按表2-2-1 置S3、S2、S1、S0 和Cn的数值,并观察数据总线LED 显示灯显示的结果。如置S3、S2、S1、S0 为0010 ,运算器作逻辑与运算,置S3、S2、

eda课程设计心得体会

eda课程设计心得体会 写心得体会是困扰很多人的问题,心中有很多想法,想说却不知道怎么写下来。下面本栏目搜集了eda课程设计心得体会,欢迎查看,希望帮助到大家。 eda课程设计心得体会一这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,数字秒表开始计数,但是始终看不到秒和小时的循环计数。后来,在数十次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比较合适的输入数值:时钟周期设置在15秒左右比较合适。另外,Endtime的值需要设置的长一点:500us左右,这样就可以观察到完整的仿真结果。

其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了合适当前电路所适合的器件,编译才能得到完满成功。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

(解密)TDN CM++ CPLD实验资料2

P24:2.2 并行加法器设计实验 一.实验目的 1. 掌握并行加法器的原理及其设计方法。 2. 熟悉CPLD应用设计及EDA软件的使用。 二.实验设备 1. TDN-CM+或TDN-CM++教学实验系统一套。 2. PC微机一台。 三.实验原理 本节实验使用大规模可编程逻辑器件MAXII EPM570T100C5来设计实现一个4位的并行进位加法器。传统的数字系统设计只能是通过设计电路板来实现系统功能,而采用可编程逻辑器件,则可以通过设计芯片来实现系统功能。从而有效地增强了设计的灵活性,提高了工作效率。并能够缩小系统体积,降低能耗,提高系统的性能和可靠性。 对该器件的逻辑系统设计是通过使用硬件描述语言或原理图输入来实现的,硬件描述语言有ABEL、VHDL等多种语言,本节实验是使用原理图输入来进行编程的。 下面是一个用原理图输入设计一个四位并行加法器加法器的例子。该加法器采用并行进位,有两组四位加数A3~A0、B3~B0输入,四位本地和F3~F0输出,一个低位进位C0输入及一个本地进位CY输出。 系统采用Quartus II软件来对可编程逻辑器件MAXII EPM570T100C5进行编程设计实验。Quartus II可采用原理图或硬件描述语言来进行设计输入,并能对所设计的数字电子系统进行功能仿真和时序仿真。其编译器是此软件的核心,它能进行逻辑优化,并将逻辑映射到器件中去,自动完成布局与布线并生成编程所需要的熔丝图文件。该软件支持多种可编程逻辑器件。 四.实验步骤 1.如图 2.2-1所示,运行Quartus II软件。 2.选择菜单File?New Project Wizard,如图2.2-2所示,建立一个新工程。出现如图 2.2-3所示New Project Wizard对话框界面。 3.点击“Next”出现如图2.2-4所示的ADDERFILE对话框界面,在FILE NAME 栏 中输入“ADDER”。 4.点击“Next”出现如图2.2-5所示的器件设置对话框界面,选择CPLD开发板使用的 MAXII系列EPM570T100C5芯片,一直点击“Next”按钮,完成新工程的建立。 5.建立新工程后,选择菜单File?New,弹出如图2.2-6所示的新建设计文件选择窗口。 创建图形设计文件,选择图2.2-6所示对话框中的“Device Design Files”页下的“Block Diagram/Schematic File”;若要创建VHDL描述语言设计文件则可选择图2.2-6所示

CPLD课程实验报告

CPLD课程学习报告 八周的CPLD及电子CAD实验结束了,回忆着过去八周的学习,收获很多。这八周的学习,是我从一个对CPLD完全没有概念的人变得能完成数字时钟及其扩展,其中虽然遇到了很多困难,但当困难被克服,实验结果出来是的喜悦是难以言状的。下面,分别讲述这八次课的收获和心得。 学习上,学到了知识,肯定是不小的收获,但在学习之外,我也收获了很多,首先,做实验的时候是既有分组又有合作的的,说道合作,我们了解了一个团队协作的重要性,开始的时候,由于和搭档不认识,出现过一些矛盾,但后来,我们明白了,只有协作,才能更好的完成一项工作。所以,这是我的一个很重要的收获。 回归正题,讲讲学习的收获。 首先,实验所使用的软件是:MAX+PLUSII,共完成了数字时钟及其调时,整点报时,秒表和闹钟的应用等,分别应用了文字及图形的编程方法,将所设计的电路功能下载到EPIK30TC144-1器件,以实现我们所需要的功能。 数字时钟可实现的功能 1、时、分、秒六位数码管显示(标准时间23点59分59秒); 2、具有小时、分钟校准功能; 整点报时:55,56,57,58,59低音响,整点高音,间断振铃(嘟--嘟--嘟--嘟--嘟--嘀)。

3、跑表:最大计时99秒99毫秒。独立的跑表功能,不影响数字钟正常工作。 4、定时闹钟:可在00:01到23:59之间由用户设定任一时间,到时报警。 第一课:10进制、6进制计数器 对于以上计数器,采用VHDL代码书写,(截屏如下) 图一:10进制VHDL文本 在书写VHDL文本时,应当注意文字的准确性和无错误,最值得注意的是:保存文本时应注意其文件扩展名一定要为VHD,且要注意前后文件明要保持一致。文本通过调试无错误后,接着要分配管脚, 启动MAX+PLUS~Floorplan Editor菜单命令,分别通过老师所给的管

EDA实验报告

电子科技大学成都学院 实验报告册 课程名称:EDA实验与实践 姓名:魏亮 学号:2940710618 院系:微电子技术系 专业:集成电路设计与集成系统(嵌入式) 教师:李海 2011 年12 月12 日

实验一:计数器 一、实验目的: 学习计数器的设计,仿真和硬件测试; 进一步熟悉Verilog HDL的编程方法。 二、实验原理和内容: 本实验的原理是利用复位信号rst,时钟信号clk,输出cout ,实现由0自加到学号(即18)。 本实验的内容是利用Quartus Ⅱ建立一个自加至18的计数器,并进行仿真测试。 三、实验步骤: 1. 启动Quartus Ⅱ建立一个空白工程,然后命名为count . qpf 。 2. 新建Verilog HDL源程序文件count.v,输入程序代码并保存, 然后进行综合编译,若在编译过程中发现错误,则找出并更正错误, 直到编译成功为止。 3. 建立波形仿真文件并进行仿真验证。 四、实验数据和结果: module count (clk,rst,cout); input clk,rst; output[5:0] cout; reg[5:0] cout; always @ (posedge clk) begin if(rst) begin cout=cout+1; if(cout==5'b10011) cout=0; end end endmodule

五、实验总结: 进一步熟悉仿真测试和Verilog HDL 编程方法。

实验二:流水灯 一、实验目的: 通过次试验进一步了解、熟悉和掌握CPLD/FPGA开发软件的使用方法及Verilog HDL的编程方法;学习简单的时序电路的设计和硬件 测试。 二、实验原理和内容: 本实验的内容是建立可用于控制LED流水灯的简单硬件电路,要求在实验箱上时间LED1~LED8发光二极管流水灯显示。 原理:在LED1~LED8引脚上周期性的输出流水数据,如原来输出的数据是11111100则表示点亮LED1、LED2。流水一次后,输出数据应 该为11111000,而此时则应点亮LED1~LED3三个LED发光二极管,这 样就可以实现LED流水灯,为了方便观察,在源程序中加入了一个分频 程序来控制流水速率。 三、实验步骤: (1)启动QuartusII建立空白工程,然后命名为led.qpf。 (2)新建Verilog HDL源程序文件led.v,输入程序代码并保存(源程序参考实验内容),进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。 (3)FPGA引脚分配,在Quartus II主界面下,选择Assignments→Pins,按照实验课本附录进行相应的引脚分配,引脚分配好以后保存。 (4)对该工程文件进行最后的编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。 (5)打开试验箱的电源开关,执行下载命令,把程序下载到FPGA试验箱中,观察流水灯的变化。 四、实验数据和结果: module led(led,clk); input clk; output[7:0] led; reg[7:0] led_r; reg[31:0] count; assign led=led_r[7:0]; always @ (posedge clk) begin count<=count+1';

CPLD实验报告计数器及时序电路

内蒙古工业大学信息工程学院实验报告 课程名称: CPLD/FPGA 应用开发技术 实验名称:组合逻辑电路的设计 实验类型:验证性□ 综合性□ 设计性■ 实验室名称:信息学院机房 班级:电子09-1班学号:200920203061 姓名:张佳兴组别: 同组人:成绩: 实验日期: 2012年5月2日

预习报告成绩:指导教师审核(签名):年月日 预习报告 实验二计数器及时序电路 一、实验目的: 1、了解时序电路的VHDL语言设计方法。 2、了解同步计数器的使用方法。 3、理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器。 二、实验设备: 1、PC机 2、EDA实验箱(主芯片是ALTERA EPM7128SLC84-15)。 三、实验内容: 1、用VHDL语言输入法设计一个同步四位二进制加法计数器和六进制同步计 数器。 2、用74LS161两个宏连接成八位二进制同步计数器。 3、用74LS161宏,同时采用清零和置数法组成六进制和十二进制计数器。 四、实验步骤: 1、采用文本编辑器输入VHDL语言源程序,或采用原理图输入法从MF库中 调用器件74161,生成原理图,之后建立工程。 2、编译。 3、仿真。 4、对芯片进行编程。 5、根据管脚分配情况连线。 (1)根据芯片特点,管脚分配时一般将时钟信号分配给83脚,复位信号分配给1脚。若有使能信号,使能信号分配给84脚。 (2)时钟信号的连接:将实验板上提供的时钟与芯片的83脚相连。 (3)复位信号的连接:将实验板上的某按键开关输出与芯片的1脚相连。 (4)将计数器的输出端分别与LED灯相连。 6、按动复位键,观察实验结果。 7、改变输入时钟信号的频率,观察实验结果。

EDA复习总结

一.名词解释 EDA 电子自动化设计electronic design automation FPGA 现场可编程门阵列field programmable gate array CPLD 复杂可编程逻辑器件complex programmable logic device ASIC 特定用途集成电路application specific integrated circuit IP 知识产权intellectual property SOC 片上系统system on a chip FSM 有限状态机finite state machine MPW 多用途晶圆multi project wafer DSP 数字信号处理器digital signal processor MCU 微程序控制器micro control unit HDL 硬件表述语言hardware description language VHDL 超高速集成电路硬件描述语言 very high speed integrated circuit hardware description language 二.简答题 1.top-down方法:从系统硬件的高层次抽象描述向低层次物理描述的一系列转化过程。从顶向下设计由功能级,行为级描述开始;寄存器传输(RTL)级描述为第一个中间结果,再将RTL级描述由逻辑综合网表或电路图;利用EDA工具将网表自动转换换成目标文件下载到现场可编程门阵列|复杂可编程逻辑器件或通过自动布局布线设计成专用集成电路,从而得到电路与系统的物理实现。 2.逻辑综合主要通过综合工具,依据设计人员设定的时序,面积等约束条件,将与工艺无关的RTL级的电路逻辑描述程序,转化为与工艺相关的电路,是将程序设计转化为硬件实现的重要环节。 3.简述可编程器件与ASIC在设计应用成本等方面的优缺点 面向可编程逻辑器件的设计其设计投入资金小,风险小,开发周期短,调试灵活,易学易用,而ASIC设计的设计资金投入大,流片费用都很昂贵,研发投片制作其有一定的失败风险,且其开发周期较长,调试改动设计都比较困难,不过,产品进入大批量生产后,ASIC 成品的成本往往低于可编程器件成本。 4.top-down过程分为:行为级描述,寄存器传输(RTL)级描述,逻辑综合,物理实现。 5.VHDL描述方式:行为级描述,RTL级描述方式,结构级描述方式。 6.仿真过程:行为级仿真,RTL仿真,门级仿真,后仿真。 7.Top-down设计方法特点: 1)在系统设计早期就能发现设计中存在的问题,并尽可能在早期设计阶段就能解决问题。 2)自动化 8.top-down优势 1)在系统设计早期发现设计中存在的问题,提高设计的一次成功率。

实验九 QPSK调制与解调实验报告

实验九QPSK/OQPSK 调制与解调实验 一、实验目的 1、了解用CPLD 进行电路设计的基本方法。 2、掌握QPSK 调制与解调的原理。 3、通过本实验掌握星座图的概念、星座图的产生原理及方法,了解星座图的作用及工程上的作用。 二、实验内容 1、观察QPSK 调制的各种波形。 2、观察QPSK 解调的各种波形。 三、实验器材 1、信号源模块 一块 2、⑤号模块 一块 3、20M 双踪示波器 一台 4、 连接线 若干 四、实验原理 (一)QPSK 调制解调原理 1、QPSK 调制 QPSK 信号的产生方法可分为调相法和相位选择法。 用调相法产生QPSK 信号的组成方框图如图12-1(a )所示。图中,串/并变换器将输入的二进制序列依次分为两个并行的双极性序列。设两个序列中的二进制数字分别为a 和b ,每一对ab 称为一个双比特码元。双极性的a 和b 脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图12-1(b )中虚线矢量。将两路输出叠加,即得如图12-1(b )中实线所示的四相移相信号,其相位编码逻辑关系如表12-1所示。 (a ) a(0)b(0) b(1) a(1) (b ) 图12-1 QPSK 调制 /并变换。串/并变换器将输入的二进制序列分为两个并行的双极性序列110010*********和

111101*********。双极性的a 和b 脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,然后将两路输出叠加,即得到QPSK 调制信号。 2、QPSK 解调 图12-2 QPSK 相干解调器 由于四相绝对移相信号可以看作是两个正交2PSK 信号的合成,故它可以采用与2PSK 信号类似的解调方法进行解调,即由两个2PSK 信号相干解调器构成,其组成方框图如图12-2所示。图中的并/串变换器的作用与调制器中的串/并变换器相反,它是用来将上、下支路所得到的并行数据恢复成串行数据的。 (二)OQPSK 调制解调原理 OQPSK 又叫偏移四相相移键控,它是基于QPSK 的改进型,为了克服QPSK 中过零点的相位跃变特性,以及由此带来的幅度起伏不恒定和频带的展宽(通过带限系统后)等一系列问题。若将QPSK 中并行的I ,Q 两路码元错开时间(如半个码元),称这类QPSK 为偏移QPSK 或OQPSK 。通过I ,Q 路码元错开半个码元调制之后的波形,其载波相位跃变由180°降至90°,避免了过零点,从而大大降低了峰平比和频带的展宽。 下面通过一个具体的例子说明某个带宽波形序列的I 路,Q 路波形,以及经载波调制以后相位变化情况。 若给定基带信号序列为1 -1 -1 1 1 1 1 -1 -1 1 1 -1 对应的QPSK 与OQPSK 发送波形如图12-3所示。 1-1-11111-1-111-1111-11-111-11-1-111-11-1 基基基基I 基基Q P S K ,O Q P S K Q 基基 Q P S K Q 基基O Q P S K -1 图12-3 QPSK,OQPSK 发送信号波形 图12-3中,I 信道为U (t )的奇数数据单元,Q 信道为U (t )的偶数数据单元,而OQPSK 的Q 信道与其I 信道错开(延时)半个码元。 QPSK ,OQPSK 载波相位变化公式为 {}()33arctan ,,,()44 44j i j i Q t I t ππ?ππ? ????? =--???? ?????? ?@ QPSK 数据码元对应的相位变化如图12-4所示,OQPSK 数据码元对应相位变化如图 12-5所示

EDA实验总结报告

CPLD与电子CAD报告 班号: XXXXXXXXX 序号: XXXXX 学号: XXXXXXX 姓名: XXXXXXX 同组同学姓名: XXXXXXX 三峡大学电气与新能源学院 1

CPLD及电子CAD ?前言 VDHL初步理解和软件常规操作 ?第一章 VHDL中的进程、信号与变量 ?第二章并行语句、顺序语句 ?第三章循环语句、双向口 ?第四章数字钟综合设计 ?第五章Protel原理图、PCB图 ?总结学习CPLD心得和体会 前言 VDHL初步理解和软件常规操作 一,VHDL的历史 1982年,诞生于美国国防部赞助的vhsic项目 1987年底,vhdl被IEEE和美国国防部确认为标准硬件描述语言,即IEEE-1076(简称87版) 1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL,即IEEE标准的1076-1993(1164)版本 1996年,IEEE-1076.3成为VHDL综合标准 二,VHDL软件Max+plusⅡ的常规操纵方法 1)新建文件后,输入项目文件名(File-Project-Name)(此时save as名称如果是程序则需要用vhd结尾保存文件) 2)输入源文件(图形、VHDL、波形输入方式) (Max+plusⅡ-graphic Editor;Max+plusⅡ-Text Editor;Max+plusⅡ-Waveform Editor) 3)指定CPLD型号,选择器件(Assign-Device)(应选择EP1K 30TC144-1)4)设置管脚、下载方式和逻辑综合的方式 (Assign-Global Project Device Option,Assign-Global Logic Synthesis) 5)保存并检查源文件(File-project-Save & Check) 6)指定管脚(Max+plusⅡ-Floorplan Editor)(具体的管脚应该参考 2

CPLD入门教程

目录 前言 (2) 第一章 MAX+plusII 软件和license的获得 (6) 第二章 MAX+plusII 软件的安装和license及驱动的设置 2.1 MAX+plusII 软件的安装 (7) 2.2 MAX+plusII 软件的license设置 (8) 2.3 MAX+plusII 软件的驱动设置 (12) 第三章用VHDL语言设计三人表决器 3.1打开MAX+plusII (22) 3.2新建VHDL文档 (23) 3.3输入设计文件 (24) 3.4保存文件 (25) 3.5检查编译 (27) 3.6创建symbol (32) 3.7波形防真 (33) 3.8下载验证 (40) 第四章用原理图输入的方式设计三人表决器 (47) 第五章用verilog-HDL语言设计三人表决器 (51)

前言 编写本入门教程(V1.2)的目点是为了让FPGA/CPLD初学者快速地入门。该教程的特点是通过基本概念讲解和实际的例子来让初学者迅速了解FPGA/CPLD。该教程是共享文件,可以复制、下载、转载,如果转载该文章请注明出处:https://www.360docs.net/doc/0114641195.html,;该教程未经许可,不得用于商业用途。 FPGA/CPLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。 FPGA/CPLD的基本知识: 1.什么是FPGA/CPLD FPGA (Field Programmable Gate Array)是现场可编程门阵列,CPLD是复杂的可编程逻辑器件(Complex Programmable Logic Device)的简称,不同厂家有不同的称呼,Xilinx把SRAM工艺,要外挂配置用的EEPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺),乘积项结构的PLD叫CPLD; Altera把自己的PLD产品MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD),由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA. 但由于FPGA和CPLD功能基本相同,只是工艺和实现形式不同,所以初学者可以不要详细区分,我们可以统称为FPGA/CPLD。 2.FPGA/CPLD的用途:

实验九QPSK调制与解调实验报告

实验九Q P S K/O Q P S K调制与解调实验 一、实验目的 1、了解用CPLD进行电路设计的基本方法。 2、掌握QPSK调制与解调的原理。 3、通过本实验掌握星座图的概念、星座图的产生原理及方法,了解星座图的作用及工程上的作用。 二、实验内容 1、观察QPSK调制的各种波形。 2、观察QPSK解调的各种波形。 三、实验器材 1、信号源模块一块 2、⑤号模块一块 3、20M双踪示波器一台 4、连接线若干 四、实验原理 (一)QPSK调制解调原理 1、QPSK调制 QPSK信号的产生方法可分为调相法和相位选择法。 用调相法产生QPSK信号的组成方框图如图12-1(a)所示。图中,串/并变换器将输入的二进制序列依次分为两个并行的双极性序列。设两个序列中的二进制数字分别为a和b,每一对ab称为一个双比特码元。双极性的a和b脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图12-1(b)中虚线矢量。将两路输出叠加,即得如图12-1(b)中实线所示的四相移相信号,其相位编码逻辑关系如表12-1所示。 (a) (b) 图12-1 QPSK调制 2、QPSK解调 图12-2 QPSK相干解调器 由于四相绝对移相信号可以看作是两个正交2PSK信号的合成,故它可以采用与2PSK信号类似的解调方法进行解调,即由两个2PSK信号相干解调器构成,其组成方框图如图12-2所示。图中的并/串变换器的作用与调制器中的串/并变换器相反,它是用来将上、下支路所得到的并行数据恢复成串行数据的。(二)OQPSK调制解调原理 OQPSK又叫偏移四相相移键控,它是基于QPSK的改进型,为了克服QPSK中过零点的相位跃变特性,以及由此带来的幅度起伏不恒定和频带的展宽(通过带限系统后)等一系列问题。若将QPSK中并行的I,Q两路码元错开时间(如半个码元),称这类QPSK为偏移QPSK或OQPSK。通过I,Q路码元错开半个码元调制之后的波形,其载波相位跃变由180°降至90°,避免了过零点,从而大大降低了峰平比和频带的展宽。 下面通过一个具体的例子说明某个带宽波形序列的I路,Q路波形,以及经载波调制以后相位变化情况。 若给定基带信号序列为1 -1 -1 1 1 1 1 -1 -1 1 1 -1 对应的QPSK与OQPSK发送波形如图12-3所示。 图12-3 QPSK,OQPSK发送信号波形 图12-3中,I信道为U(t)的奇数数据单元,Q信道为U(t)的偶数数据单元,而OQPSK的Q信道

EDA基础知识总结

设计过程中的仿真有三种:行为仿真、功能仿真、时序仿真 数字系统的两个模块(子系统):数据处理子系统、控制子系统 数据处理子系统主要完成数据的采集、存储、运算、传输,主要由存储器、运算器、数据选择器等功能电路组成。 数字系统设计方法:模块设计方法、自顶向下设计法、自底向上设计法。一般采用自顶向下、由粗到细、逐步求精的方法。 数字系统的设计准则:1)分割准则2)系统的可观测性3)同步和异步电路4)最优化设计5)系统设计的艺术 数字系统的设计步骤:1)系统任务分析2)确定逻辑算法3)建立系统及子系统模型4)系统(或模块)逻辑描述5)逻辑电路级设计及系统仿真6)系统的物理实现 VHDL语言要素:数据对象、数据类型、各类操作数及运算操作符 标识符规则:以英文字母开头,不连续使用下划线“_”,不以下划线结尾的,由26个大小写英文字母、数字0~9及下划线“_”组成的字符串,英文字母不区分大小写,VHDL的保留字不能用于作为标识符使用。 在进程中,只能将信号列到敏感表,而不能将变量列入敏感表。可见进程对信号敏感。 VHDL中的数据类型:标量型(包括:实数型、整数型、枚举型、时间类型)、复合类型(数组型、记录型)、存取型、文件类型 VHDL四大类数据类型又可分为两类:预定义数据类型、用户自定义数据类型(基于预定义数据类型) 预定义数据类型:1)布尔型2)位数据类型(BIT)3)位矢量(BIT_VECTOR)4)字符型5)整数型6)自然数和正整数型7)实数型8)字符串型9)时间型10)错误等级 数据类型:标准逻辑位STD_LOGIC、标准逻辑矢量STD_LOGIC_VECTOR VHDL中六类基本顺序语句:赋值语句、转向控制语句、等待语句、子程序调用语句、返回语句、空操作语句。 在信号赋值时,当统一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值,其前面相同的赋值目标则不作任何变化。 转向控制语句五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT 语句 当执行WAIT等待语句,程序将被挂起,知道满足结束条件后,程序重新开始执行。已列出敏感量的进程不能使用任何形式的WAIT语句过程调用:执行一个给定名字和参数的过程 过程名[([形参名=>] 实参表达式 {,[形参名=>]实参表达式})];过程调用步骤:1)将IN和INOUT的形参值赋给调用过程中与之对应的

选做实验(CPLD)

实验十、总线控制实验(选做) 一、实验目的: 1. 了解总线的概念及其特性。 2. 掌握总线的传输控制特性。 二、实验连线 见连线图。(连线时应按如下方法:对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上) 三、实验说明 在本实验中,挂接在数据总线上的有输入设备、输出设备、存储器和堆寄存器。为了使它们的输出互不干扰,就需要这些设备都有三态输出控制,且任意两个输出控制信号不能同时有效。本实验的流程为: 1、输入设备将一个数打入R0寄存器。 2、输入设备将另一个数打入地址寄存器。 3、将R0寄存器中的数写入当前地址的存储器中。

4、将当前地址的存储器中的数用数码管显示出来。 四、实验步骤 1、按照上图所示将所有连线接好。 2、总线初始化。关闭所有三态门置控制开关PC-G=1(寄存器堆控制信号), CA1=1(显示输出),CA2=1(数据输入),CE=1(存储器片选)。其它控制信号为LOAD=0,LAR=0,C=1,WE=1,A=1,B=1。 3、将D15—D8拨至“11110000”,置CA2=0,LOAD=1,然后置LOAD=0,将 “11110000”打入R0寄存器。 4、将D15—D8拨至“00000001”,置LAR=1,然后置LAR=0,将“00000001”打 入地址寄存器。 5、置CA2=1,PC-G=0,CE=0,WE=0,将R0寄存器中的数写入当前地址的存储 器中。然后置WE=1,CE=1。 6、置PC-G=1,CE=0,CA1=0,C=0,将当前地址的存储器中的数输出至数码管, 然后置C=1,CE=1,CA1=1。 五、实验结果 照以上六步操作完成后,输出显示电路LED的低8位显示“F0”。

光纤通信实验报告

一、实验目的 1.了解数字光发端机平均输出光功率的指标要求 2.掌握数字光发端机平均输出光功率的测试方法 3.了解数字光发端机的消光比的指标要求 4.掌握数字光发端机的消光比的测试方法 二、实验仪器 1.ZYE4301G型光纤通信原理实验箱1台 2.光功率计1台 3.FC/PC-FC/PC单模光跳线1根 4.示波器1台 5.850nm光发端机1个 6.ST/PC-FC/PC多模光跳线1根 三、实验原理 四、实验内容 1.测试数字光发端机的平均光功率 2.测试数字光发端机的消光比 3.比较驱动电流的不同对平均光功率和消光比的影响 五、实验步骤 A、1550nm数字光发端机平均光功率及消光比测试 1.伪随机码的产生:伪随机码由CPLD下载模块产生,请参看系统简介中的CPLD下载模块。将PCM编译码模块的4.096MH Z时钟信号输出端T661与CPLD下载模块的NRZ信号产生电路的信号输入端T983连接,NRZ信号输出端T980将产生4M速率24-1位的伪随机信号,用示波器观测此信号。将此信号与1550nm光发模块输入端T151连接,作为信号源接入1550nm光发端机。 2.用FC-FC光纤跳线将光发端机的输出端1550T与光功率计连接,形成平均光功率测试系统,调整光功率计,使适合测1550nm信号。 3.用K60、K90和K15接通PCM编译码模块、CPLD模块和光发模块的电源。 4.用光功率计测量此时光发端机的光功率,即为光发端机的平均光功率。 5.测消光比用数字信号源模块输出的NRZ码作为信号源。用K60接通电源,用用示波器从T504观测此信号,将K511接1、2或2、3可观测到速率的变化,将此信号接到T151,作为伪随机信号接入光发端机。 6.用数字信号源模块的K501、K502、K503将数字信号拨为全“1”,测得此时光功率为P1,将数字信号拨为全“0”,测得此时光功率为P0。 7.将P1,P0代入公式2-1式即得1550nm数字光纤传输系统消光比。 B、1310nm数字发端机平均光功率及消光比测试 8.信号源仍用4M速率24-1位的伪随机信号,与1310nm光发模块输入端T101连接。 9.用FC-FC光纤跳线将1310nm光发模块输出端1310T与光功率计连接,形成平均光功率测试系统,调整光功率计,使适合测1310nm信号。 10.将BM1拨至数字,BM2拨至1310nm。 11.接通PCM编译码模块、CPLD模块和1310nm光发模块(用K10)的电源。 12.用万用表在T103和T104监控R110(阻值为1Ω)两端电压,调节电位器W101,使半导体激光器驱动电流为额定值25mA。 13.用光功率计测量此时光发端机的光功率,即为光发端机的平均光功率。 14.测消光比用数字信号源模块输出的NRZ码作为信号源,请参看系统简介中的数字信号源模块部分。用示波器从T504观测此信号,连接T504与T101,将数字信号拨为全“1”,测得此时光功率为P1,将数字信号拨为全“0”,测得此时光功率为P0。

eda技术课程总结与心得--整理版

1、FPGA芯片的发展主要体现在哪几个方面?未来的发展趋势是什么? (1) 大容量、低电压、低功耗 (2) 系统级高密度 (3) FPGA和ASIC出现相互融合。 (4) 动态可重构 2、EDA技术的优势是什么? 缩短开发周期,有各类库的支持,简化逻辑设计,有利于设计文档的管理,能仿真测试,开发者有自主权,将所有开发环节纳入统一的自顶向下的设计中,有效的利用了计算机的自动设计能力。 3、EDA的设计流程包括哪几个环节? ①设计输入(原理图/HDL文本编辑)②综合③FPGA/CPLD 适配④时序仿真与功能仿真⑤FPGA/CPLD编程下载⑥FPGA/CPLD器件电路硬件检测。 4、硬件描述语言的种类有哪些? VHDL 、Verilog HDL、SystemVerilog、System C 等 5、自顶向下设计方法的优点是什么? 过程大部分由计算机完成,可植性强,便于系统的优化和升级,以及对模型进行及时的修改,以改进系统或子系统的功能,更正设计错误,提高目标系统的工作速度,减小面积耗用,降低功耗和成本等。在EDA技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。高效,高稳定性,省时省力,成本较低。 6、ip核可分为哪几类? ①软IP 、②固IP、③硬IP 7、ip在EDA技术的应用和发展中的意义是什么? IP就是将某些功能固化,而当EDA设计也需要这些功能的时候,就可以直接将植入了此功能的IP拿过来直接用,而不用再重新设计。这样既可以提高效率又可以减少设计风险。IP 核具有规范的接口协议,良好的可移植与可测试性,为系统开发提供了可靠的保证。

1、可编程逻辑器件经历哪些发展过程? PLD,PLA,PAL,GAL,EPLD,CPLD/FPGA 2、FPGA的配置方式有哪些? PS(被动串行)、PPS(被动并行同步)、PPA(被动并行异步)、PSA(被动串行异步)、JTAG模式、AS(主动串行) 3、JTAG? JTAG是英文“Joint Test Action Group(联合测试行为组织)”的词头字母的简写。JTAG边界扫描技术。 【第三章】 1、verilog中标示符的命名规则是什么? a.标识符 Verilog HDL中的标识符(Identifier)是由任意字母、数字、$符号和_(下划线)符号的组成的字符序列,但标识符的第一个字符必须是字母或者下划线。此外,标识符是区分大小写的。 转义表示符(Escaped Identifier)为在标识符中包含任何可打印字符提供了一条途径。转义标识符\(反斜线)符号开头,以空白结尾(空白可以是空格、制表符或换行符)。在转义标识符中,反斜线和结束空格并不是转义标识符的一部分。 Verilog HDL语言中定义了一系列保留标识符,叫做关键词,仅用于表示特定的含义。注意只有小写的关键词才是保留字。 指导原则:不能用大小写混用字符串表示关键词,也不能把转义的关键词作为标识别符。 b.注释 在Verilog HDL中有2种形式的注释: /*开始,直到*/ //第二种形式:到本行结束为止 c.格式 Verilog HDL是大小写敏感的,也就是说,字符相同而字体(大小写)不同的两个标识符是不同的。此外,Verilog HDL语句的格式很自由,即语句结构既可以跨越多行编写,也可以在一行内编写。空白(空白行、制表符和空格)没有特殊含义。 指导原则:行的长度必须小于132个字符。

相关文档
最新文档