• 基于BASYS2的VHDL程序与仿真——50%占空比8分频器


     转帖请注明转自http://www.cnblogs.com/connorzx/p/3547673.html

    一、新建工程

    1.点击File->New Project,

     

    2.点击Next

    注:此处的simulator已经和modelsim关联,未关联可以先选默认。

    3.点击Next,点击Finish。

            

    二、新建源文件

    右击程序文件,点击New Source。选择VHDL Module。

    输入端口设置,如下图所示

    三、编写程序代码

     1 library IEEE;                                --库引用
     2 use IEEE.STD_LOGIC_1164.ALL;
     3 use IEEE.STD_LOGIC_ARITH.ALL;
     4 use IEEE.STD_LOGIC_UNSIGNED.ALL;
     5 
     6 entity freq_div_pro is              --实体,端口定义
     7     Port ( clk : in  STD_LOGIC;
     8            rst : in  STD_LOGIC;
     9            clk_8d : out  STD_LOGIC);
    10 end freq_div_pro;
    11 
    12 architecture Behavioral of freq_div_pro is    --结构体定义
    13 signal cnt:STD_LOGIC_VECTOR(1 downto 0);
    14 signal tmp:STD_LOGIC;                         --定义两个信号
    15 begin
    16     process(rst,clk)                           --主进程
    17     begin
    18         if(rst = '1')then                       --异步清零
    19             cnt(1 downto 0) <= "00";
    20             tmp <= '0';
    21             elsif(clk'event and clk ='1')then    --上升沿有效
    22                 cnt(1 downto 0) <=    cnt(1 downto 0) + 1;  --计数
    23                 if(cnt(1 downto 0)="11")then
    24                     tmp <= not tmp;                                 --输出翻转,可以用T'触发器实现
    25                     cnt(1 downto 0) <= "00";                     --计数器复位
    26                 end if;
    27         end if;
    28     end process;
    29     clk_8d <= tmp;                                         --输出
    30 
    31 end Behavioral;

    进行语法检查

    然后点击Synthesize –XST 和Implement Design。

    四、编写测试基准

    选择simulation窗口,新建一个VHDL testbench,

    编写代码如下:

     1 library IEEE;
     2 use IEEE.STD_LOGIC_1164.ALL;
     3 use IEEE.STD_LOGIC_ARITH.ALL;
     4 use IEEE.STD_LOGIC_UNSIGNED.ALL;
     5   
     6 ENTITY freq_div_test IS
     7 END freq_div_test;
     8  
     9 ARCHITECTURE behavior OF freq_div_test IS 
    10  
    11     -- Component Declaration for the Unit Under Test (UUT)
    12  
    13     COMPONENT freq_div_pro
    14     PORT(
    15          clk : IN  std_logic;
    16          rst : IN  std_logic;
    17          clk_8d : OUT  std_logic
    18         );
    19     END COMPONENT;
    20     
    21 
    22    --Inputs
    23    signal clk : std_logic := '1';
    24    signal rst : std_logic := '1';
    25 
    26      --Outputs
    27    signal clk_8d : std_logic;
    28    -- Clock period definitions
    29    constant clk_period : time := 20 ns;
    30  
    31 BEGIN
    32     -- Instantiate the Unit Under Test (UUT)
    33    uut: freq_div_pro PORT MAP (
    34           clk => clk,
    35           rst => rst,
    36           clk_8d => clk_8d
    37         );
    38    -- Clock process definitions
    39    clk_process :process
    40    begin
    41         clk <= '0';
    42         wait for clk_period/2;
    43         clk <= '1';
    44         wait for clk_period/2;
    45    end process;
    46  
    47    -- Stimulus process
    48    stim_proc: process
    49    begin        
    50       -- hold reset state for 100 ns.     
    51         rst<='0' after 100 ns;
    52       wait;
    53    end process;
    54 END;

    选择仿真程序文件,点击Simulate Behavioral Model,弹出Modelsim程序,可以看到如下结果

    波形如下,

    注:本实验采用Modelsim进行仿真分析,Modelsim软件以及Xilinx和Modesim关联方法请参照以下链接操作。

    链接: http://pan.baidu.com/s/1eQj5rrW 密码: c1ca

  • 相关阅读:
    C语言基于单链表得学生成绩管理系统
    C语言实现扫雷小程序外挂,棒棒的
    小白学习C语言一定要掌握的那些知识点!
    C语言快速入门教程之10分钟快速掌握数据类型
    神奇的C语言,这才是C语言大牛操作,作为面试题,怕是秒杀众人
    多线程
    java基础- Collection和map
    String 和 new String
    idea快捷键
    用bootstrap 分页插件问题
  • 原文地址:https://www.cnblogs.com/connorzx/p/3547673.html
Copyright © 2020-2023  润新知