找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1544|回复: 1
打印 上一主题 下一主题
收起左侧

基于fpga的方波,三角波信号发生器

[复制链接]
跳转到指定楼层
楼主
ID:452522 发表于 2018-12-29 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LIBRARY IEEE;-- 选择器USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Xuanzeqi IS PORT (  sel: in std_logic_vector(1 downto 0); d1,d2:in std_logic_vector(7 downto 0); clk,reset:in std_logic;q:out std_logic_vector(7 downto 0)); END ENTITY Xuanzeqi; ARCHITECTURE behave OF Xuanzeqi IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN "00"=>q<=d1;-- 方波

WHEN "11"=>q<=d2;-- 三角波
WHEN OTHERS=>null; END CASE; END PROCESS; END ARCHITECTURE behave; LIBRARY IEEE;-- 方波USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Fangbo IS  PORT ( clk,reset:in std_logic; q: out std_logic_vector(7 DOWNTO 0)); END ENTITY Fangbo; ARCHITECTURE behave OF Fangbo IS SIGNAL temp : std_logic ; BEGIN     PROCESS(clk,reset)     VARIABLE tmp: std_logic_vector(7 downto 0);  BEGIN IF reset='0' THEN   temp<='0'; ELSIF rising_edge(clk) THEN IF tmp="11111111" THEN    tmp:="00000000"; ELSE    tmp:=tmp+1; END IF; IF tmp<="10000000" THEN    temp<='1'; ELSE    temp<='0'; END IF; END IF; END PROCESS; PROCESS(clk,temp) BEGIN IF rising_edge(clk) THEN IF temp='1' THEN    q<="10000000";         -- 占空比?ELSE    q<="11111111";    END IF; END IF;
END PROCESS; END ARCHITECTURE behave;



LIBRARY IEEE;-- 三角波USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Sanjiaobo IS PORT (   clk,reset:in std_logic;  q:out std_logic_vector(7 downto 0)); END ENTITY Sanjiaobo; ARCHITECTURE behave OF Sanjiaobo IS BEGIN PROCESS(clk,reset)    VARIABLE temp1:std_logic_vector(7 downto 0);    VARIABLE temp2:std_logic;       BEGIN IF reset='0' THEN    temp1:="00000000"; ELSIF rising_edge(clk) THEN    IF temp2='0' THEN IF  temp1="11111110" THEN    temp1:="11111111" ;    temp2:='1'; ELSE    temp1:=temp1+1; END IF;    ELSE IF temp1="00000001" THEN     temp1:="00000000";     temp2:='0'; ELSE     temp1:=temp1-1; END IF;    END IF; END IF; q<=temp1; END PROCESS; END ARCHITECTURE behave;

  LIBRARY IEEE;-- 函数发生器USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY hanshu IS PORT (  clock,sw:in std_logic; clr:IN STD_LOGIC; s:IN STD_LOGIC_VECTOR ( 1 DOWNTO 0); qq:OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END ENTITY hanshu; ARCHITECTURE behave of hanshu IS        component Xuanzeqi PORT (  sel: in std_logic_vector(1 downto 0); d1,d2:in std_logic_vector(7 downto 0); clk,reset:in std_logic;q:out std_logic_vector(7 downto 0)); END component Xuanzeqi;         component Fangbo  port ( clk,reset:in std_logic; q: out std_logic_vector(7 downto 0)); end component Fangbo;           component Sanjiaobo PORT (   clk,reset:in std_logic;  q:out std_logic_vector(7 downto 0));  end component Sanjiaobo; SIGNAL t1, t2: std_logic_vector ( 7 downto 0); SIGNAL clk,clk1: std_logic;
begin u0: xuanzeqi port map ( sel =>s, d1 =>t1, d2=>t2,clk=>clk1,reset=>clr,q =>qq) ; u1: Fangbo port map ( clk =>clk1, reset =>clr,q=>t1);   
u2: Sanjiaobo port map ( clk =>clk1, reset=>clr, q =>t2);
process(clock)beginif clock'event and clock='1' thenclk<=not clk;end if;end process;
process(sw,clock)beginif sw='1' thenclk1<=clk;elseclk1<=clock;end if;end process;
end behave;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-12-29 16:28 | 只看该作者
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表