【VHDL】VHDL设计一个分频器
1. 实验任务
- 尝试用两种或以上方式设计并实现一个分频器
2. 如何实现
二进制分频器的设计
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 ;
偶分频器(占空比为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;
奇分频器(占空比为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;
使用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设计一个分频器相关推荐
- 实验二 基于FPGA的分频器的设计(基本任务:设计一个分频器,输入信号50MHz,输出信号频率分别为1KHz、500Hz及1Hz。拓展任务1:用按键或开关控制蜂鸣器的响与不响。拓展任务2:用按键或开)
实验二 基于FPGA的分频器的设计 1. 实验目的: (1) 掌握QuartusⅡ软件的层次型设计方法: (2) 掌握元件封装及调用方法: (3) 熟悉FPGA实验平台,掌握引脚锁定及下载. 2. 实 ...
- 用vhdl语言设计一个小游戏_用最直白的设计语言营造梦想的办公空间
两间室内设计新工作室位于钱塘江西侧,毗邻西湖山脉.建筑原本是一幢地处村落中心的4层民居房,建筑外围有一个绿化大庭院,可休闲可聚会活动,具备良好的天然条件.由于此次设计项目是我们自己的办公空间,所以希望 ...
- 设计一个8位双向循环移位寄存器vhdl
设计一个8位双向循环移位寄存器vhdl 状态表如下: CLK RESET LOAD M 工作状态 × 0 × × 复位 ↑ 1 1 × 置数 ↑ 1 0 1 左移 ↑ 1 0 0 右移 (4)不考虑串 ...
- VHDL设计一个同步置数、异步清零的D触发器
设计一个同步置数.异步清零的D触发器,其引脚名称和逻辑功能如下表所示. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ddddd IS PORT ...
- VHDL设计一个同步清零的JK触发器
1.设计一个同步清零的JK触发器,其引脚名称和逻辑功能如下表所示. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY jk IS PORT (clk, ...
- QuartsII-基于VHDL的设计以及基于VHDL和原理图的混合设计
一.基于VHDL的设计 之前介绍的都是基于原理图的设计,且调用的都是软件自带的模块:虽然它已经集成很多模块,但还是不能满足所有设计要求,这时就需要自己编写VHDL代码进行设计. 选择File-> ...
- EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器
EDA 电子设计自动化VHDL系列课程7 – 分频器和计数器 本EDA系列介绍的系统环境是: 软件: VHDL编程语言 : 工具: Quartus13.0 FPGA 芯片是: Cyclone III ...
- (萌新的数电学习)用VHDL语言设计CPU
一.目的: 完整.连贯地运用<数字逻辑>所学到的知识,熟练掌握 EDA 工具基本使用方法,为学习好后续<计算机原理>课程做铺垫. 二.设计内容 (一) 按照给定的数据通路.数据 ...
- 数字逻辑结课实验 VHDL语言设计洗衣机控制系统
实验题目 洗衣机控制系统设计与实现 实验目的 熟悉数字系统的组成. 2. 掌握自顶向下的设计方法. 3. 了解洗衣机的工作原理. 4. 掌握建立状态机和实现状态机的方法. 5. 了解状态机在洗衣机控制 ...
- (135)Verilog HDL:设计一个加法器之Adder100i
(135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...
最新文章
- 比尔·盖茨:我对投资比特币没有兴趣
- 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新
- 面试中一个暴露能力等级的问题
- C语言Huffman Encode霍夫曼编码的算法(附完整源码)
- Server.UrlEncode UrlDecode 动态绑定gridview列发送接收乱码的问题
- C++类和new、delete操作符和堆和栈内存的分配
- 正在成为史上最全分类 Android 开源大全
- github上markdown文件编写笔记
- [转]短篇小说《来》
- win11如何显示所有应用图标 Windows11显示所有应用图标的设置方法
- hdu 1284 dp
- python 官方中文文档百度云_python中文官方手册等手册链接地址
- 直播app源码开发,聊天服务器的搭建教程
- 微信小程序的转发分享功能
- mac pycharm如何打开setting
- 计算机原理学习(2)-- 存储器和I/O设备和总线
- Python学习 | 2022-01-15 Python基础复习(一)
- 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
- 读取linux内核内存,devmem读写物理内存和devkmem读取内核虚拟内存
- 计算机考研数学一用哪些书,2019计算机考研数学:常见三类参考书的使用方法...