1. 实验任务

  • 尝试用两种或以上方式设计并实现一个分频器

2. 如何实现

  1. 二进制分频器的设计

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    use ieee.std_logic_unsigned.all;
    ENTITY DIV IS
    generic (N:integer :=2);--进行2的N次幂分频
    PORT (fin:in std_logic;
    fout:out std_logic);
    end entity DIV;architecture behav of DIV is
    signal count :std_logic_vector(N-1 downto 0);
    begin
    process (fin) begin
    if(fin'event and fin='1') then count<=count+1;--计数值加一end if;
    end process;
    fout<=count(N-1);
    end ;
  2. 偶分频器(占空比为50%)

    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.std_logic_unsigned.all;
    Use ieee.std_logic_arith.all;Entity fdiv isgeneric(N: integer:=6);      --rate=N,N是偶数port(clkin: IN std_logic;clkout: OUT std_logic);
    End fdiv;
    Architecture a of fdiv issignal cnt: integer range 0 to n-1;
    Beginprocess(clkin)  --计数beginif(clkin'event and clkin='1') thenif(cnt<n-1) thencnt <= cnt+1;elsecnt <= 0;end if;end if;end process;process(cnt)  --根据计数值,控制输出时钟脉冲的高、低电平beginif(cnt<n/2) thenclkout <= '1';elseclkout <= '0';end if;end process;End a;
  3. 奇分频器(占空比为50%)

    Library ieee;
    Use ieee.std_logic_1164.all;
    Use ieee.std_logic_unsigned.all;
    Use ieee.std_logic_arith.all;Entity fdiv isgeneric(N: integer:=5);        --rate=N,N是奇数port(clkin: IN std_logic;clkout: OUT std_logic);
    End fdiv;
    architecture a of fdiv issignal cnt1, cnt2: integer range 0 to N-1;
    beginprocess(clkin)beginif(clkin‘event and clkin=’1‘) then  --上升沿计数if(cnt1<N-1) thencnt1 <= cnt1+1;elsecnt1 <= 0;end if;end if;end process;process(clkin)beginif(clkin‘event and clkin=’0‘) then  --下降沿计数if(cnt2<N-1) thencnt2 <= cnt2+1;elsecnt2 <= 0;end if;end if;end process;clkout <= '1' when cnt1<(N-1)/2 or cnt2<(N-1)/2 else'0';end a;
    
  4. 使用LPM 和绘图方式来实际N分频器
      选择Tools中的MegaWizard Plug-In Manager命令,选择Creat a new custom megafunction variation,定制一个新的模版,在左侧栏中选择算术项Arthmetic下的LPM_COUNTER,进而一步步配置,得到一定位数,预制功能可定制的LPM计数器。
      
      
      二进制分频器可视作一个n位的计数器和一个D触发器相连接,当计数器溢出时,D触发器翻转,从而构成分频器。
      LPM_COUNTER配置好之后,可以编写D触发器,或者使用系统提供的D触发器。
      最后通过原件例化语句或者画图的方式将两者连接在一起。

    • D触发器
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;ENTITY DDFF IS
    PORT (CLK_D,D:IN STD_LOGIC;Q:OUT STD_LOGIC);
    END;ARCHITECTURE bhv OF DDFF IS
    SIGNAL Q1:STD_LOGIC;
    BEGIN
    PROCESS (CLK_D,Q1) BEGINIF CLK_D'EVENT AND CLK_D='1' THEN Q1<=D;END IF;
    END PROCESS;
    Q<=Q1;
    END bhv;
    • LPM_COUNTER(具有同步加载、异步清零、加减控制)N进制计数器
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    use ieee.std_logic_unsigned.all;
    ENTITY CNT4BIT IS
    generic (N:integer :=4);--进行2的N次幂分频
    PORT (
    CLK,RST,ENA,SLD,UD:IN STD_LOGIC;
    DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    COUT:OUT STD_LOGIC;
    DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
    END ENTITY CNT4BIT;ARCHITECTURE behav OF CNT4BIT IS
    SIGNAL TRANS :STD_LOGIC;component LPM_MD
    port(
    aclr,clk_en,clock,sload,updown:in std_logic;
    data:in std_logic_vector(3 downto 0);
    cout:out std_logic;
    q:out std_logic_vector(3 downto 0));
    end component;component DDFF
    PORT (CLK_D,D:IN STD_LOGIC;Q:OUT STD_LOGIC);
    END component ;begin
    U1:LPM_MD PORT MAP(sload=>SLD,
    clk_en=>ENA,
    aclr=>RST,
    cout=>TRANS,
    clock=>CLK,
    data=>DIN,
    updown=>UD,
    q=>DOUT);U2:DDFF port map(
    CLK_D=>CLK,
    D=>TRANS,
    Q=>COUT
    );END ARCHITECTURE behav;

3. 实验结果

  • 仿真波形图

  • LPM_DIV(16分频分频器)

【VHDL】VHDL设计一个分频器相关推荐

  1. 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)

    实验二 基于FPGA的分频器的设计 1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法: (2) 掌握元件封装及调用方法: (3) 熟悉FPGA实验平台,掌握引脚锁定及下载. 2. 实 ...

  2. 用vhdl语言设计一个小游戏_用最直白的设计语言营造梦想的办公空间

    两间室内设计新工作室位于钱塘江西侧,毗邻西湖山脉.建筑原本是一幢地处村落中心的4层民居房,建筑外围有一个绿化大庭院,可休闲可聚会活动,具备良好的天然条件.由于此次设计项目是我们自己的办公空间,所以希望 ...

  3. 设计一个8位双向循环移位寄存器vhdl

    设计一个8位双向循环移位寄存器vhdl 状态表如下: CLK RESET LOAD M 工作状态 × 0 × × 复位 ↑ 1 1 × 置数 ↑ 1 0 1 左移 ↑ 1 0 0 右移 (4)不考虑串 ...

  4. VHDL设计一个同步置数、异步清零的D触发器

    设计一个同步置数.异步清零的D触发器,其引脚名称和逻辑功能如下表所示. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ddddd IS PORT ...

  5. VHDL设计一个同步清零的JK触发器

    1.设计一个同步清零的JK触发器,其引脚名称和逻辑功能如下表所示. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY jk IS PORT (clk, ...

  6. QuartsII-基于VHDL的设计以及基于VHDL和原理图的混合设计

    一.基于VHDL的设计 之前介绍的都是基于原理图的设计,且调用的都是软件自带的模块:虽然它已经集成很多模块,但还是不能满足所有设计要求,这时就需要自己编写VHDL代码进行设计. 选择File-> ...

  7. EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器

    EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器 本EDA系列介绍的系统环境是: 软件: VHDL编程语言 : 工具: Quartus13.0 FPGA 芯片是: Cyclone III ...

  8. (萌新的数电学习)用VHDL语言设计CPU

    一.目的: 完整.连贯地运用<数字逻辑>所学到的知识,熟练掌握 EDA 工具基本使用方法,为学习好后续<计算机原理>课程做铺垫. 二.设计内容 (一) 按照给定的数据通路.数据 ...

  9. 数字逻辑结课实验 VHDL语言设计洗衣机控制系统

    实验题目 洗衣机控制系统设计与实现 实验目的 熟悉数字系统的组成. 2. 掌握自顶向下的设计方法. 3. 了解洗衣机的工作原理. 4. 掌握建立状态机和实现状态机的方法. 5. 了解状态机在洗衣机控制 ...

  10. (135)Verilog HDL:设计一个加法器之Adder100i

    (135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...

最新文章

  1. 比尔·盖茨:我对投资比特币没有兴趣
  2. 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新
  3. 面试中一个暴露能力等级的问题
  4. C语言Huffman Encode霍夫曼编码的算法(附完整源码)
  5. Server.UrlEncode UrlDecode 动态绑定gridview列发送接收乱码的问题
  6. C++类和new、delete操作符和堆和栈内存的分配
  7. 正在成为史上最全分类 Android 开源大全
  8. github上markdown文件编写笔记
  9. [转]短篇小说《来》
  10. win11如何显示所有应用图标 Windows11显示所有应用图标的设置方法
  11. hdu 1284 dp
  12. python 官方中文文档百度云_python中文官方手册等手册链接地址
  13. 直播app源码开发,聊天服务器的搭建教程
  14. 微信小程序的转发分享功能
  15. mac pycharm如何打开setting
  16. 计算机原理学习(2)-- 存储器和I/O设备和总线
  17. Python学习 | 2022-01-15 Python基础复习(一)
  18. 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
  19. 读取linux内核内存,devmem读写物理内存和devkmem读取内核虚拟内存
  20. 计算机考研数学一用哪些书,2019计算机考研数学:常见三类参考书的使用方法...

热门文章

  1. librdkafka自动源码编译
  2. 更新cuda驱动10.0==>11.2
  3. RSD的遥感图像合成工具
  4. 自建网盘教程之:使用可道云搭建私有云网盘,无需数据库
  5. 铺铜需要把agnd和dgnd分开_AGNDDGND 分析
  6. ARM汇编程序——加法
  7. 即时通讯开发资料分享
  8. 设置谷歌浏览器翻译插件
  9. HAWQ技术解析(八) —— 大表分区
  10. Date类与DateFormat类