精华内容
下载资源
问答
  • VHDL的TestBench仿真

    千次阅读 2019-10-20 21:26:41
    对于testbench文件,我是这样理解的:testbench文件实际上也是一个vhdl文件(后缀为.vhd)。我们将设计好的电路模块封装为一个元件,然后在testbench文件例化它,再通过映射的端口产生激励信号。这些激励信号模拟成待...

    本人是刚接触FPGA的小白,这也是我第一次写文章。如果文中有错误和不恰当的地方,还望大家提出建议和指导。以下就是我对testbench的理解和总结。
    对于testbench文件,我是这样理解的:testbench文件实际上也是一个vhdl文件(后缀为.vhd)。我们将设计好的电路模块封装为一个元件,然后在testbench文件例化它,再通过映射的端口产生激励信号。这些激励信号模拟成待测试的电路模块所需要的信号,以此验证我们设计的电路是否符合要求。
    testbench的基本格式如下:

    library ieee;  --也可以加入其它的库;
    use ieee.std_logic_1164.all; 
    entity testbench    --testbench是测试文件的名字;
    end testbench;
    architecture  arch_test of testbench is
    	signal clk : std_logic := '0';
    	signal rst : std_logic := '1';
    	......;
    	signal qout : std_logic_vector(3 downto 0);
    	......;
    	constant clk_period : time := 20 ns;
    	......;
    
    	component  sample_name  --待测试电路模块的名字;
    		port(
    		clk : in std_logic;
    		rst : in std_logic;
    		......;
    		qout : out std_logic_vector( 3 downto 0);
    		......);
    	end component sample_name;
    begin
    	UUT : sample_name
    		port map(clk,rst,...,qout,...);
    	clk <= not clk after clk_period/2;  --生成占空比为50%的时钟;
    	process        --产生激励源的模块;
    	begin
    	end process;
    end arch_test;
    

    (1) testbench文件中对实体的描述:
    在testbench文件的实体中,可以省略有关端口的描述。testbench文件名常以待测试的电路模块名加上“tb”命名,例如计数器(文件名为counter)的testbench名可以写为“counter_tb”。
    (2) 待测试电路模块的例化:
    对于待测试电路模块的例化和VHDL语法中例化的格式是一样的。但是testbench中,最好将映射的端口以信号量(signal)的形式定义,方便我们产生激励信号。另外,我们可以定义一个时间常量(如上面代码中的clk_period)来进行时钟和激励信号的生成。
    (3) 用VHDL产生激励信号:
    产生占空比为50%的时钟信号:
    clk <= not clk after clk_period/2; --以这种形式产生时钟信号,需要在定义clk的时候用“:=”赋初值。
    产生占空比为n/(n+m)的时钟信号:
    process
    begin
    clk <= ‘1’;
    wait for clk_period/n;
    clk <= ‘0’;
    wait for clk_period/m;
    end process;
    产生激励信号:
    激励信号可以在一个进程中,用“wait”关键字生成。在testbench中,可综合和不可综合的关键字(语法)都可以使用。没有什么限制,只要产生我们需要的激励信号即可。这里没有什么固定的格式要求。
    下面是一个测试文件的简单示例:
    模为10的计数器:

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity cnt_10 is
      port(
      clk : in std_logic;
      reset : in std_logic;
      dout : out std_logic_vector(3 downto 0));
    end cnt_10;
    architecture mybehave of cnt_10 is
      signal temp : std_logic_vector(3 downto 0);
    begin
      process(clk)
      begin
        if reset = '1' then
          temp <= (others =>'0');
        elsif clk'event and clk='1' then
          if temp ="1001" then
            temp <= (others =>'0');
          else
            temp <= temp +1;
          end if;
        end if;
      end process; 
      dout <= temp;
    end architecture mybehave;
    

    计数器的testbench文件:

    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;
    entity cnt_10_tb is
    end cnt_10_tb;
    architecture mybehave of cnt_10_tb is
      signal clk,reset : std_logic := '0';
      signal dout : std_logic_vector(3 downto 0):= "000";
      constant clk_period : time := 20 ns;
      component CNT_10
        port(
          clk: in std_logic;
          reset : in std_logic;
          dout : out std_logic_vector(3 downto 0));
       end component CNT_10; 
    begin
      UUT:CNT_10
        port map(clk,reset,dout);
        clk <= not clk after clk_period/2;
        process
        begin
            wait for clk_period;
              reset <= '1';
            wait for clk_period;
              reset <= '0';
            wait;
        end process; 
    end architecture mybehave;
    
    展开全文
  • vhdl timing requirements not met Assignment/timing wiard tool 中设置in的时钟周期等属性即可。 设置好了自己需要的参数,一直下一步下一步即可。

    vhdl timing requirements not met

    Assignment/timing wiard tool 中设置in的时钟周期等属性即可。
    timing wiard tool
    在这里插入图片描述
    设置好了自己需要的参数,一直下一步下一步即可。

    展开全文
  • modelsim进行VHDL仿真时问题“** is not globally static” 在使用modelsim进行VHDL仿真时遇到编译错误:“** is not globally static”。如下图所示: 解决办法: 1、选中该文件右击,选择->properties。在弹出...

    modelsim进行VHDL仿真时问题“** is not globally static”
    在使用modelsim进行VHDL仿真时遇到编译错误:“** is not globally static”。如下图所示:
    在这里插入图片描述
    解决办法:
    1、选中该文件右击,选择->properties。在弹出的页面点击 VHDL。出现如下图所示
    在这里插入图片描述
    2、将红色方框中,原来选择的“Use 1076-2002”,改为选择“Use 1076-2008”。如下图所示。
    在这里插入图片描述
    3、点击OK。重新编译即可。

    展开全文
  • vhdl运算符

    千次阅读 2019-03-14 09:26:53
    逻辑运算符:not,and,or,nand(no and),nor(no,or或非),xor(异或) 使用规则: 1,只有数据类型为std_logic,std_logic_vector,bit这三种类型可以调用这六种逻辑运算符注意不包括bit_vector,只能使用...

    赋值符“<=”左右两边的数据类型必须相同。
    逻辑运算符:not,and,or,nand(no and),nor(no,or或非),xor(异或)
    使用规则:
    1,只有数据类型为std_logic,std_logic_vector,bit这三种类型可以调用这六种逻辑运算符注意不包括bit_vector,只能使用数据类型转换函数TO_STDLOGICVECTOR()将bit_vector转化为std_logic_vector

    2,运算符的左边,右边以及代入的信号的数据类型必须相同。
    算术操作符:加减运算的两个操作数必须类型相同,且只能为INTEGER和REAL。

    3,关系运算符,结果为布尔数据类型,同样要求数据类型要相同,大于小于大于等于,小于等于适用于integer,real,bit,bit_vector以及数组类型的比较,如果要比较std_logic_vector必须调用std_logic_unsigned程序包。

    4,移位操作符:SLL:左移,跟进位补零;SRL:右移,跟进位补零;ROL,ROR:他们将移出的位依次填补移空的位,自循环。SLA,SRA是算术移位操作符,其移空位最处的首位来填补。
    移位操作符适用对象:BIT,BIT_VECTOR,BOOLEAN
    使用方法: 移位操作符 整数(移动的位数)
    eg:dout<=“00000001” ROL CONV_INTEGER(DIN); 自循环1

    展开全文
  • VHDL编译错误

    2021-10-24 15:52:49
    Error (10818): Can't infer register for "cnt[0]" at ctr.vhd(20) because it does not hold its value outside the clock edge 原因:vhdl报错Error (10818): Can't infer register for q[0] at dianzhen.vhd...
  • VHDL基础

    千次阅读 2020-05-14 00:30:45
    二、VHDL的基本结构 一、运算符 1.算数运算符 +,-,*,/ MOD: 取模,取模运算(a MOD b)的符号与b相同,其绝对值小于b的绝对值。如:-5 MOD 2 = 1,5 MOD -2 = -1。 REM: 取余,取余运算...
  • VHDL

    2020-07-10 22:22:35
    一、VHDL简介 VHDL VHDL(Very High Speed Hardware Description Language)超高速硬件描述语言。VHDL是工业标准的文本格式语言,支持仿真和综合,是一种并发执行的语言。VHDL支持结构化设计和TOP-DOWN设计方法。其...
  • VHDL入门基础——信号

    2020-07-19 19:32:40
    VHDL基础——信号赋值篇 信号与变量不同,对变量的赋值是立即执行的并且对后续语句有影响。对信号的赋值虽然也是立即执行的,但信号的带入却是有“延时”的,也就是,虽然赋值语句立即生效,但是其新值对于后续语句...
  • VHDL运算符

    千次阅读 2019-05-23 13:17:55
    and or not xor 位的拼接 & ('0' & diff(4 downto 1)) 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片...
  • VHDL语法学习笔记:一文掌握VHDL语法

    千次阅读 多人点赞 2020-08-12 09:14:38
    今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货。 VHDL语法学习笔记 一、VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware Description...
  • vhdl8三种方式实现38译码器

    万次阅读 多人点赞 2019-09-22 09:48:12
    之前用连接符&做过38译码器,觉得有点复杂。这次换几个方法: 1.when_else语句 ...ERROR:HDLCompiler:69 - “E:\vhdl\decoder38_3\decoder38_3.vhd” Line 33: <to_integer> is not declared.
  • Free Range VHDL

    2014-04-11 00:46:55
    As with all learning, once you have obtained and applied some useful information, it is much easier to build on what you know as opposed to continually adding information that is not directly ...
  • VHDL出错

    2019-05-10 16:39:55
    在用VHDL写加法器的时候遇到了这个问题: [Synth 8-944] 0 definitions of operator "+" match here 后来发现原来是VHDL不允许在不同数据类型的操作数之间进行直接操作或运算,需要调用运算符重载函数。而VHDL的...
  • VHDL数据取反操作

    千次阅读 2019-03-19 15:51:47
    对于数据取反,通常需要加入use ieee.std_logic_signed.all程序包。这里举例,对8位宽的数据进行取反操作。 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all;...use ieee.std_logic_signed...
  • VHDL程序结构

    千次阅读 2020-06-02 15:24:10
    其中实体和结构体是VHDL程序的必要部分,他们可以构成最基本的VHDL程序。通常,一个VHDL程序还包含库和程序包,比如最常用的IEEE库中的STD_LOGIC_1164程序包。一个实用的VHDL程序也可以由一个或多个实体构成,可以将...
  • VHDL学习-FIFO

    2021-06-29 23:19:24
    -- ASSERTION LOGIC - Not synthesized -- synthesis translate_off p_ASSERT : process (i_clk) is begin if rising_edge(i_clk) then if i_wr_en = '1' and w_FULL = '1' then report "ASSERT FAILURE - MODULE_...
  • vhdl 函数

    2021-01-25 19:51:13
    not 对信号取反,类似Verilog的 ~ int2slv(n,p),将十进制数据n转换为位宽p的std_logic_vector 结构体的使用及结构体初值定义,这个在一个结构体体量很大时,有很大优势。 无需像verilog一样定义一堆名字机构类似的...
  • VHDL入门学习

    千次阅读 2018-06-07 18:17:53
    一、VHDL优点:覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言; VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解; VHDL语言可以与工艺无关编程; VHDL语言已做为一种IEEE的工业...
  • VHDL——JK触发器

    千次阅读 2021-04-19 20:29:20
    3.VHDL语言 library ieee; use ieee.std_logic_1164.all; entity jkff is port(j,k,clk : in std_logic; q,nq : out std_logic); end jkff; architecture behave of jkff is signal q_s,nq_s : std_logic; ...
  • (1)D触发器VHDL描述

    千次阅读 2020-11-19 16:14:38
    2.01 D触发器VHDL描述 2.1.1 本节目录 第一,章节目录; 第二,前言; 第三,FPGA简介; 第四,VHDL简介; 第五,D触发器VHDL描述实例; 第六,结束语; 2.1.2 本节引言 给FPGA一个支点,它可以撬动整个...
  • VHDL实现计数器

    万次阅读 多人点赞 2019-04-17 11:37:40
    qd<=NOT d; END IF; END PROCESS; END dtrigger_behavior; --顶层文件,元件例化 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY count16 IS PORT(clk:IN STD_LOGIC; r:IN STD_LOGIC; q:OUT STD_...
  • VHDL快速入门

    千次阅读 多人点赞 2021-04-09 20:43:22
    VHDL是一门硬件语言,没学过硬件语言,挺感兴趣,还可以用在计组的实验中,花了点时间学习整理了一下VHDL的基本语法,方便查看。本blog所用到的所有图片都引用自 VHDL语言的基本语法参考文档 一、VHDL语言的基本...
  • Random binary sequence generator using four flip-flops. It does not require any external input except clock.
  • vhdl按键消抖

    2013-05-10 19:35:15
    关于vhdl的消抖程序, library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity shift is port(sin,cp:in std_logic;f:out std_logic); end shift; ...
  • this is serial divider model vhdl file and testbench not included
  • VHDL奇分频偶分频

    2020-12-15 18:43:42
    一、用VHDL写一个20分频程序 Entity div20 is Port(rst,clk:in_std_logic; div:out_std_logic); end div20; Architecture behavior of div20 is signal cnt10:std_logic_vector(3 downto 0); signal divt:std_...
  • 举个例子:对10001011取反: NOT 10001011;这样写就行了 结果是:01110100 如果你一开始使用了USE IEEE.STD_LOGIC_UNSIGNED.ALL;这个库那么数据就是没有符号的就都是正数 如果你一开始使用了USE IEEE.STD_LOGIC_...
  • FPGA之道(27)VHDL的操作符号

    千次阅读 2020-02-12 16:22:35
    一网打尽VHDL操作符

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,525
精华内容 1,010
关键字:

notvhdl