首 页   关于我们   行业资讯   PCB设计   PCB抄板   芯片解密   SMT加工   成功案例   联系我们
【我们在同行业中的地位: 技术与实力最强、规模与影响最大的PCB设计、PCB抄板和样机制作之典范企业】★★【我们专著的是反向研究: 我们解决了诸多的绝大部分同行不能解决的关键技术难题,我们已经服务了诸多的知名企业和知名的研究机构】 ★★★【我们的发展目标和愿望: 因为中国有了我们这样的企业,所以大大缩短了中国制造和外国制造的在技术领先方面的差距】 ★★★★【我们创立工作室出发点: 通过对北美、欧洲、日韩等企业新技术产品之核心技术的研究,为中国企业提供合法、专业和快速的技术服务帮助他们快速开发出极具杀伤力的---中国制造】
     
  [产品与服务]
  PCB设计
  PCB抄板
  SMT加工
  高速PCB设计与电磁兼容
  PCB布线设计与样板制造
  ATEPCB布线设计与样板制造
  样板PCBA
  样机制作
  芯片解密
  服务推荐
  仿真与咨询服务
[技术交流]
 
  设计工具
  下载专区
  技术文献
  PCB论坛
  专业指南
 
 
     
 
  [服务指南]  
 
 
  PCB 设计服务流程
 
  PCB 抄板服务流程
  SMT 加工服务流程
  样机制作服务流程
  芯片解密服务流程
  用户需求表
  售后服务/如何报价
   首页 > 技术交流 > 技术文献 > EDA技术
 
 
 「FPGA系统的仿真和测试」
 
 

关键字: EDA EDA技术 EDA工艺 EDA软件 EDA设计 抄板 电磁干扰 主板维修 PCB生产 PCB加工 PCB设计 ATE电路板设计 手机PCB板 PCB抄板 PCB改板 电路板抄板 PCB制板 单面板 双层板 样机制作 设计软

1概述

FPGA仿真方法:

(1) 交互式仿真方法:利用EDA工具的仿真器进行仿真,使用方便,但输入输出不便于记录规档,当输入量较多时不便于观察和比较。

(2) 测试平台法:为设计模块专门设计的仿真程序,可以实现对被测模块自PCB抄板动输入测试矢量,并通过波形输出文件记录输出,便于将仿真结果记录归档和比较。

2仿真程序的设计方法

1.仿真的三个阶段:

(1)行为仿真:目的是验证系统的数学模型和行PCB抄板为是否正确,对系统的描述的抽象程度较高。在行为仿真时,VHDL的语法语句都可以执行。

(2)RTL仿真:目的是使被仿真模块符PCB抄板合逻辑综合工具的要求,使其能生成PCB抄板门级逻辑电路。在RTL仿真时,不能使用VHDL中一些不可综合和难以综合的语句和数据类型。该级仿真不考虑惯性延PCB抄板时,但要仿真传输延时。

(3)门级仿真:门级电路的仿真主要是验证系统的工作速度PCB抄板t="_blank">PCB抄板,惯性延时PCB抄板仅仅是仿真的时候有用在综合的时候将被忽略。

2.仿真程序的内容

(1)被测实PCB抄板体的引入。

(2)被测实体仿真信号的输入。

(3)被测实体PCB抄板工作状态的激活。

(4)被测实体信号的输出

(5)被测实体功能仿真的结果比较,并给出辨别信息PCB抄板

(6)被测实体的仿真波形比较处理

3.仿真要注意的地方

(1)仿真信号可以由程序直接产生,也可以用TEXTIO文件产生后读入。

(2)仿真程序中可以简化实体描述,省略有关端口的描述。仿真程序实体描述的简化形式为:

ENTITY测试平台名IS

END测试平台名;

(3)对于功能仿真结果的判断,可以用断言语句(ASSORT)描述

(4)为了比较和分析电子系统的功能,寻求实现指标的最佳结构,往往利用一个测试平台对实体的不同结构进行仿真,一般是应用配置语句为同一被测实体选用多个结构体。

CONFIGURATION测试平台名OF被测实体名ISPCB抄板

FOR被测实体的A的结构体名

END FOR;

END测试平台名;

同样,若选用结构体B,则配置语句可写为:

CONFIGURATION测试平台名OF被测实体名IS

FOR被测实体的B的结构体名

END FOR;

END测试平台名;

4.VHDL仿真程序结构

测试平台仅仅是用于仿真,因此可以利用所有的行为描述语言进行描述PCB抄板,下表表示了一个测试平台所包含的部分,典型的测试平台将包括测试结果和错误报告结果。

(1)产生时钟信号

-- Declare a clock period constant.

Constant ClockPeriod : TIME := 10 ns;

-- Clock Generation method 1:

Clock <= not Clock after ClockPeriod / 2;

-- Clock Generation method 2:

GENERATE CLPCB抄板OCK: process

begin

wait for (ClockPeriod / 2)

Clock <= ’1’;

wait for (ClockPeriod / 2)

Clock <= ’0’;

end process;

(2)提供仿真信号

提供仿真信号可以有两种方法:绝对时间仿真和相对时PCB抄板间仿真。在绝对时间仿真方法中,仿真时间只是相对于零时刻的仿真时间。在相对时间仿真方法中,仿真的时间首先提供一个初值,在后继的时间设置中相对于该初始时间进行事件动作。

绝对时间仿真:

MainStimulus: process begin

ResPCB抄板et <= ’1’;

Load <= ’0’;

CounPCB抄板t_UpDn <= ’0’;

waiPCB抄板t for 100 ns;

Reset <= ’0’;

waitPCB抄板 for 20 ns;

Load <= ’1’;

wait PCB抄板PCB抄板_UpDn <= ’1’;

end PCB抄板process;

相对时间仿真:

Process (PCB抄板Clock)

Begin

If rising_edge(Clock) then

TB_Count <= TB_Count + 1;

end if;

end process;

SecondStimulus: process begin

if (TB_Count <= 5) then

Reset <= ’1’;

Load <= ’0’;

Count_UpDn <= ’0’;

Else

Reset <= ’0’;

Load <= ‘1’;

Count_UpDn <= ‘1’;

end process;

FinalStimulus: prPCB抄板ocess begin

if (Count = "1100") then

Count_UpDn <= '0';

report "Terminal Count

Reached, now counting down."

end if;

end process;

(3)显示结果

VHDL提供标准的std_textio函数包把输入输出结果显示在终端上。

5.简单的仿真程序

library IEEE;

use IEEE.std_logic_1164.all;

entity testbench is

end entity testbench;

architecture test_reg of testbench

component shift_reg is

port (clock : in std_logic;

reset : in std_logic;

load : in std_logic;

sel : in std_logic_vector(1 downto 0);

data : in std_logic_vector(4 downto 0);

shiftreg : out std_logic_vector(4 downto 0));

end component;

signal clock, reset,PCB抄板load: std_logic;

signal shiftreg, data: std_logic_vector(4 downto 0);

signal sel: std_logic_vector(1 downto 0);

constant ClockPeriod : TIME := 50 ns;

begin

UUT : shift_reg port map (clock => clock, reset => reset,

load => load, data => data,

shiftreg => shiftreg);

process begin

clock <= not clock after (ClockPeriod / 2);

end process;

process begin

reset <= ’1’;

data <= "00000";

load <= ’0’;

set <= "00";

wait for 200 ns;

reset <= ’0’;

load <= ’1’;

wait for 200 ns;

data <= "00001";

wait for 100 ns;

sel <= "01";

load <= ’0’;

wait for 200 ns;

sel <= "10";

wait for 1000 ns;

end process;

end architecture test_reg;

6.3.3TEXTIO建立测试程序

在由仿真程序直接产生输入信号的方PCB抄板PCB抄板PCB抄板法中,测试矢量是仿真程序的一个部分,如果系统比较PCB抄板复杂,测试矢量的数目非常大,修改测试矢量时就必须修改程序,重新编译和仿真。工作量大。因此,在测试PCB抄板矢量非常大的时候可以用TEXTIO的方法来进行仿真。

TEXTIO仿真方法:测试矢量从仿真PCB抄板程序中分离出来,单独存于一个文件中(即TEXTIO文件),在仿真时,根据定时要求按行读出,并赋予相应的输入信号PCB抄板。这种方法允许采用同一个测试平台,通过不同的测试矢量文件进行不同的仿真。值得注意的是,测试矢量文件的读取,PCB抄板需要利用TEXTIO程序包的功能。在TEXTIO程序包中,包含有对文本文件进行读写的PCB抄板过程和函数。

LIBRARY IEEE;

USE IEEE.std_logic_1164.all;

LIBRARY ieee;

USE IEEE.STD_LOGIC_TEXTIO.ALL;

USE STD.TEXTIO.ALL;

ENTITY testbench IS

END testbench;

ARCHITECTURE testbench_arch OF testbench IS

COMPONENT stopwatch

PORT (

CLK : in STD_LOGIC;

RESET : in STD_LOGIC;

STRTSTOP : in STD_LOGIC;

TENTHSOUT : out STD_LOGIC_VECTOR (9 DOWNTO 0);

ONESOUT : out STD_LOGIC_VECTOR (6 DOWNTO 0);

TENSOUT : out STD_LOGIC_VECTOR (6 DOWNTO 0)

);

END COMPONENT;

SIGNAL CLK : STD_LOGIC;

SIGNAL RESET : STD_LOGIC;

SIGNAL STRTSTOP : STD_LOGIC;

SIGNAL TENTHSOUT : STD_LOGIC_VECTOR (9 DOWNTO 0);

SIGNAL ONESOUT : STD_LOGIC_VECTOR (6 DOWNTO 0);

SIGNAL TENSOUT : STD_LOGIC_VECTOR (6 DOWNTO 0);

constant ClockPeriod : Time := 60 ns;

FILE RESULTS: TEXT IS OUT "results.txt";

signal i: std_logic;

BEGIN

UUT : stopwatch

PORT MAP (

CLK => CLK,

RESET => RESET,

STRTSTOP => STRTSTOP,

TENPCB抄板THSOUT => TENTHSOUT,

ONESOUT => ONESOUT,

TENSPCB抄板OUT => TENSOUT

);

stimulus: PROCESS

begin

reset <= ’1’;

stPCB抄板rtstop <= ’1’;

wait for 240 ns;

reset <= ’0’;

strtstop <= ’0’;

wait for 5000 ns;

strtstop <= ’1’;

wait for 8125 ns;

strtsPCB抄板top <= ’0’;

wait for 500 ns;

strtstop <= ’1’;

wait fPCB抄板or 875 ns;

reset <= ’1’;

wait for 375 ns;

resePCB抄板t <= ’0’;

waitPCB抄板 for 700 ns;


录入PCB抄板时间:2007-09-29  来源:PCB抄板EDA中国门户网站 

 

 
 
 
 
 
 
 
 
 
 
友情链接  
关于我们  网站地图  友情链接  联系我们
电话(北京):+8610-68420866 68472161 68428501/02/03     电话(PCB抄板深圳):+86-83676393/6323,83346919/39
地址:北京市海淀区紫竹院路31号华澳中心B座19层 地址:公司地址(Add):深圳市福田区福虹路PCB抄板世界贸易广场B座12F/13F