为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ADC0809-VHDL程序并显示

2017-10-19 10页 doc 28KB 57阅读

用户头像

is_079973

暂无简介

举报
ADC0809-VHDL程序并显示ADC0809-VHDL程序并显示 --编程软件:ISE 10.1 --10年北京市电设比赛准备程序,调了半天的程序,绝对能用,但是说不考了 --后面有引脚配置代码 --程序 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity adcok is PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,...
ADC0809-VHDL程序并显示
ADC0809-VHDL程序并显示 --编程软件:ISE 10.1 --10年北京市电设比赛准备程序,调了半天的程序,绝对能用,但是说不考了 --后面有引脚配置代码 --程序 library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity adcok is PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,EOC:IN STD_LOGIC; ALE,START,OE:OUT STD_LOGIC; ADDA:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); clockout:out std_logic; seg7 : out STD_LOGIC_VECTOR (6 downto 0); an : out STD_LOGIC_VECTOR (3 downto 0); dp : out STD_LOGIC); end adcok; architecture Behavioral of adcok is TYPE STATES IS(ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7); SIGNAL CURRENT_STATE,NEXT_STATE:STATES:=ST0; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL REG : STD_LOGIC_VECTOR(15 DOWNTO 0):="0000000000000000"; SIGNAL LOCK : STD_LOGIC; signal cclk,clkseg:std_logic; signal s : std_logic_vector(1 downto 0):="00"; signal digit : std_logic_vector(3 downto 0); signal aen : std_logic_vector(3 downto 0); signal qat,qbt,qct,qdt: STD_LOGIC_VECTOR (3 downto 0); signal b : STD_LOGIC_VECTOR (13 downto 0):="00000000000000"; signal p : STD_LOGIC_VECTOR (16 downto 0):="00000000000000000"; begin ADDA<="000";--LOCK1<=LOCK; clockout <=cclk; REG(7 DOWNTO 0) <= REGL; Q<=REGL; dp<='0'; aen(0)<=qdt(3) or qdt(2) or qdt(1) or qdt(0); aen(1)<=qdt(3) or qdt(2) or qdt(1) or qdt(0) or qct(3) or qct(2) or qct(1) or qct(0); aen(2)<=qdt(3) or qdt(2) or qdt(1) or qdt(0) or qct(3) or qct(2) or qct(1) or qct(0) or qbt(3) or qbt(2) or qbt(1) or qbt(0); aen(3)<='1'; b(7 downto 0)<=REGL(7 DOWNTO 0); ------------------------------------------ qat <= P(3 downto 0); qbt <= P(7 downto 4); qct <= P(11 downto 8); qdt <= "0000"; ------------------------------------------ process(b) variable z : std_logic_vector(32 downto 0); begin for i in 0 to 32 loop z(i):='0'; end loop; z(16 downto 3) := b; for j in 0 to 10 loop if(z(17 downto 14)>"0100") then z(17 downto 14):= z(17 downto 14) + "0011"; end if; if(z(21 downto 18)>"0100") then z(21 downto 18):= z(21 downto 18) + "0011"; end if; if(z(25 downto 22)>"0100") then z(25 downto 22):= z(25 downto 22) + "0011"; end if; if(z(29 downto 26)>"0100") then z(29 downto 26):= z(29 downto 26) + "0011"; end if; z(32 downto 1):=z(31 downto 0); end loop; p<=z(30 downto 14); end process; PROCESS(CLK) VARIABLE q:INTEGER:=0; BEGIN IF CLK'EVENT AND CLK='1' THEN q:=q+1; IF q<=199 THEN clkseg<='0'; ELSIF q<399 THEN clkseg<='1'; ELSE q:=0; END IF; END IF; END PROCESS; -------------------------------------------- PROCESS(CLK) VARIABLE q4:INTEGER:=0; BEGIN IF CLK'EVENT AND CLK='1' THEN q4:=q4+1; IF q4<=49 THEN cclk<='0'; ELSIF q4<99 THEN cclk<='1'; ELSE q4:=0; END IF; END IF; END PROCESS; ------------------------------------------------- PROCESS(cclk) BEGIN IF(cclk'EVENT AND cclk='1') THEN CURRENT_STATE<=NEXT_STATE; END IF; END PROCESS; --------------------------------------------- PROCESS(LOCK) BEGIN IF LOCK='1' AND LOCK' EVENT THEN REGL<=D; END IF; END PROCESS; ------------------------------ process(CURRENT_STATE,EOC) BEGIN CASE CURRENT_STATE IS WHEN ST0=>ALE<='0';START<='0';OE<='0';LOCK<='0'; NEXT_STATE<=ST1; WHEN ST1=>ALE<='1';START<='0';OE<='0';LOCK<='0'; NEXT_STATE<=ST2; WHEN ST2=>ALE<='1';START<='1';OE<='0';LOCK<='0'; NEXT_STATE<=ST3; WHEN ST3=>ALE<='0';START<='1';OE<='0';LOCK<='0'; NEXT_STATE<=ST4; WHEN ST4=>ALE<='0';START<='0';OE<='0';LOCK<='0'; IF(EOC='1')THEN NEXT_STATE<=ST4; ELSE NEXT_STATE<=ST5; END IF; WHEN ST5=>ALE<='0';START<='0';OE<='0';LOCK<='0'; IF(EOC='0')THEN NEXT_STATE<=ST5; ELSE NEXT_STATE<=ST6; END IF; WHEN ST6=>ALE<='0';START<='0';OE<='1';LOCK<='0'; NEXT_STATE<=ST7; WHEN ST7=>ALE<='0';START<='0';OE<='1';LOCK<='1'; NEXT_STATE<=ST0; WHEN OTHERS=>ALE<='0';START<='0';OE<='0';LOCK<='0'; NEXT_STATE<=ST0; END CASE; END PROCESS ; ------------------------------------------------------------------ process(s,qat,qbt,qct,qdt) begin case s is when "00" =>digit<=qdt(3 downto 0); when "01" =>digit<=qct(3 downto 0); when "10" =>digit<=qbt(3 downto 0); when "11" =>digit<=qat(3 downto 0); when others =>null; end case; end process; -------------------------------------------------------------------------- process(digit) begin case digit is when x"0" => seg7 <= "1111110";--"0000001"; when x"1" => seg7 <= "0110000";--"1001111"; when x"2" => seg7 <= "1101101";--"0010010"; when x"3" => seg7 <= "1111001";--"0000110"; when x"4" => seg7 <= "0110011";--"1001100"; when x"5" => seg7 <= "1011011";--"0100100"; when x"6" => seg7 <= "1011111";--"0100000"; when x"7" => seg7 <= "1110000";--"0001111"; when x"8" => seg7 <= "1111111";--"0000000"; when x"9" => seg7 <= "1111011";--"0000100"; when x"A" => seg7 <= "1110111";--"0001000"; when x"B" => seg7 <= "0011111";--"1100000"; when x"C" => seg7 <= "1001110";--"0110001"; when x"D" => seg7 <= "0111101";--"1000010"; when x"E" => seg7 <= "1001111";--"0110000"; when others => seg7 <= "1000111";--"0111000"; end case; end process; -------------------------------------------------------------------------- process(aen,s) begin an<="0000"; if(aen(conv_integer(s))='1') then an(conv_integer(s))<='1'; end if; end process; -------------------------------------------------------------------------- process(clkseg) begin if(rising_edge(clkseg)) then s<=s+"01"; end if; end process; end Behavioral; --引脚配置文件 #PACE: Start of Constraints generated by PACE #PACE: Start of PACE I/O Pin Assignments NET "CLK" LOC = "p80" ; NET "ADDA<0>" LOC = "p147" ; NET "ADDA<1>" LOC = "p145" ; NET "ADDA<2>" LOC = "p140" ; NET "ALE" LOC = "p146" ; NET "clockout" LOC = "p119" ; NET "D<0>" LOC = "p132" ; NET "D<1>" LOC = "p128" ; NET "D<2>" LOC = "p126" ; NET "D<3>" LOC = "p122" ; NET "D<4>" LOC = "p133" ; NET "D<5>" LOC = "p129" ; NET "D<6>" LOC = "p127" ; NET "D<7>" LOC = "p123" ; NET "EOC" LOC = "p150" ; NET "OE" LOC = "p138" ; NET "Q<0>" LOC = "p33" ; NET "Q<1>" LOC = "p31" ; NET "Q<2>" LOC = "p30" ; NET "Q<3>" LOC = "p29" ; NET "Q<4>" LOC = "p28" ; NET "Q<5>" LOC = "p25" ; NET "Q<6>" LOC = "p24" ; NET "Q<7>" LOC = "p23" ; NET "START" LOC = "p139" ; NET "an<0>" LOC = "p39" ; NET "an<1>" LOC = "p36" ; NET "an<2>" LOC = "p35" ; NET "an<3>" LOC = "p34" ; NET "dp" LOC = "p40" ; NET "seg7<0>" LOC = "p49" ; NET "seg7<1>" LOC = "p42" ; NET "seg7<2>" LOC = "p45" ; NET "seg7<3>" LOC = "p41" ; NET "seg7<4>" LOC = "p48" ; NET "seg7<5>" LOC = "p50" ; NET "seg7<6>" LOC = "p47" ; #PACE: Start of PACE Area Constraints #PACE: Start of PACE Prohibit Constraints #PACE: End of Constraints generated by PACE
/
本文档为【ADC0809-VHDL程序并显示】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索