eda課程設計速度表
Ⅰ EDA速度表的課程設計報告
Ⅱ 能給出一個EDA課程設計速度表的方案呀謝謝!
傻蛋,自己寫啊!
Ⅲ eda課程設計 16路彩燈6種花式 快慢兩只節奏 自動循環
6種花色可以通過直接給LED送電平,快慢2種節奏,可通過一個分頻模塊然後輸出2中不同的頻率
程序如下
分頻模塊(得到1HZ和2HZ頻率)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY fenpin IS
PORT(CLK : IN STD_LOGIC;
CLK1 : OUT STD_LOGIC;
CLK2 : OUT STD_LOGIC);
END fenpin ;
ARCHITECTURE a OF fenpin IS
SIGNAL cou : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
IF (clk'event and clk='1') THEN
cou <= cou+1;
END IF;
END PROCESS;
CLK1 <= cou(8);
CLK2 <= cou(7);
END a;
頻率選擇模塊(選擇不同的模塊實現快慢不同節奏)(相當於一個2選一)
library ieee;
use ieee.std_logic_1164.all;
entity fenpin1 is
port(clk1,clk2,s: in std_logic;
q : out std_logic);
end fenpin1;
architecture a of fenpin1 is
--signal sel: std_logic;
begin
process(clk1,clk2,s)
begin
if (s='0') then
q<=clk1;
else
q<=clk2;
end if;
--sel<=s;
end process;
end a;
記數模塊(當選擇的頻率上升沿來的時候記數器加1)
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY led IS
PORT(q : IN STD_LOGIC;
h : out std_logic;
di : out integer range 0 to 21) ;
END led;
ARCHITECTURE a OF led IS
signal jp : std_logic;
signal temp :INTEGER RANGE 0 TO 21;
BEGIN
PROCESS (q)
BEGIN
IF (q'event AND q='1') THEN
if(temp<21) then
temp<= temp+1;
else
temp<=0;
jp<=not jp;
end if;
end if;
END PROCESS ;
h<=jp;
di<=temp;
END a;
直接給LED送電平模塊(下面所用的LED為低電平點亮)
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY led1 IS
PORT( led: in integer range 0 to 18;
di:out std_logic_vector( 15 downto 0));
END led1;
ARCHITECTURE a OF led1 IS
begin
process (led)
begin
case led is
when 0=>di<="1111111100000000";----第一種花色
when 1=>di<="0000000011111111";
when 2=>di<="0111111101111111";----第二種
when 3=>di<="1101111111011111";
when 4=>di<="1111011111110111";
when 5=>di<="1111110111111101";
when 6=>di<="0111111001111110";----第三種
when 7=>di<="1011110110111101";
when 8=>di<="1101101111011011";
when 9=>di<="1110011111100111";-----第四種
when 10=>di<="1101101111011011";
when 11=>di<="1011110110111101";
when 12=>di<="0111111001111110";
when 13=>di<="0000111100001111";----第五種
when 14=>di<="1111000000001111";
when 15=>di<="0011111111111100";---第6種
when 16=>di<="1100111111110011";
when 17=>di<="1111001111001111";
when 18=>di<="1111110000111111";
when others =>di<="1111111111111111";
end case;
end process;
end a;
Ⅳ EDA課程設計——數字電子鍾
1、基本要求:能利用現有的硬體系統設計一個至少能顯示分、秒的控制電路。分和秒均用兩位數碼管指示,並具有調時、復位功能;
2、擴展要求:能同時顯示小時(兩位數碼管)並能調節小時功能;具有鬧鍾定時功能。
3、設計方法:採用模塊化描述方法,可分為分頻模塊、調時控制模塊、數碼顯示模塊、復位等模塊,每個模塊既可以編輯成獨立的HDL文件或GDF文件,也可以作為HDL程序中的一個進程模塊,最後進行系統模擬加以驗證,在此基礎上下載到硬體上進行現場測試。
4、輸入、輸出埠描述:輸入信號——時鍾信號clk、復位信號clr、時間設置鍵set、時間上調鍵tup、時間下調鍵tdown;輸出信號——掃描式七段數碼管段選輸出端led[7..0]、位選輸出端ctrlbit[3..0]。
我來幫他解答
2011-6-1 17:06
滿意回答
設計原理
計數時鍾由模為60的秒計數器模塊、模為60的分計數模塊、模為24的小時計數器模塊、指示燈與報警器的模塊、分/小時設定模塊及輸出顯示模塊等組成。秒計數器模塊的進位輸出為分計數器模塊的進位輸入,分計數器模塊的進位輸出為小時計數器模塊的進位輸入。其中秒計數器模塊中應有分鍾的設定,分計數器模塊中應有小時的設定。
內容
設計一個計數時鍾,使其具有24小時計數功能。通過「多功能復用按鍵F1-F12」信號接線組「F1_12(T)」的F9~F12的任意引線插孔可設置小時和分鍾的值,並具有整點報時的功能。
電路原理圖
模塊說明:計數時鍾由60秒計數器模塊XSECOND、60分計數器模塊XMINUTE、24小時計數器模塊XHOUR等六個模塊構成。秒計數器模塊的進位輸出為分計數器模塊的進位輸入,分計數器模塊中有小時的設定。通過SW1、SW2、SW3、SW4可設定小時和分鍾的值,並具有整點報時的功能。
輸入信號:SETMIN為分鍾設置信號;SETHOUR為小時設置信號;RESET為全局復位信號;CLK為全局時鍾信號;CKDSP為數碼管動態掃描信號。
輸出信號:SPEAK為蜂鳴器報時信號;LAMP[2..0]為指示燈信號;A~G為數碼管七個段位信號;SS[2..0]為數碼管段位解碼控制信號。
說明與電路連線
指示燈信號LAMP2~LAMP0為獨立擴展下載板上CPLD器件的第11、10、9腳,內部已連接並已鎖定,無需外接連線。
蜂鳴器報時信號SPEAK為獨立擴展下載板CPLD器件的第31腳,內部已連接並已鎖定,無需外接連線。
撥碼開關SW1~SW7內部已連接並已鎖定,無需外接連線。
數碼管七個段位信號A~G為獨立擴展下載板上CPLD器件的第86、87、88、89、90、92、93腳,應接數碼管段位引線接線組KPL_AH,從左到右依次對應的A、B、C、D、E、F、G引線插孔。
數碼管段位解碼控制信號SS0、SS1、SS2為獨立擴展下載板上CPLD器件的第68、69、70腳,為數碼管的位選掃描信號,分別接信號接線組DS1-8A(T)的SS0、SS1、SS2引線插孔(即在電源引線插孔組GND孔處)。
復位信號RESET為獨立擴展下載板上CPLD器件的第71腳,應接「多功能復用按鍵F1-F12」信號接線組「F1_12(T)」的F9~F12的任意一個插孔。
小時設置信號SETHOUR為獨立擴展下載板CPLD器件的第73腳,應接「多功能復用按鍵F1-F12」信號接線組「F1_12(T)」的F9~F12的任意一個插孔。
分鍾設置信號SETMIN為獨立擴展下載板上CPLD器件的第74腳,應接「多功能復用按鍵F1-F12」信號接線組「F1_12(T)」的F9~F12的任意一個插孔。
時鍾信號CLK為獨立擴展下載板上CPLD器件的183腳(即GCLK2),應接時鍾信號接線組「CLOCK(T)」的「FRQ(21)」引線插孔。
數碼管動態掃描信號CKDSP為獨立擴展下載板上CPLD器件的79腳(即GCLK1),應接時鍾信號接線組「CLOCK(T)」的「FRQ(11)」引線插孔。
參考源程序
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xsecond is
port (
clk: in STD_LOGIC;
clkset: in STD_LOGIC;
setmin: in STD_LOGIC;
reset: in STD_LOGIC;
secout: out STD_LOGIC_VECTOR (6 downto 0);
enmin: out STD_LOGIC
);
end xsecond;
architecture xsecond_arch of xsecond is
signal sec : std_logic_vector(6 downto 0);
signal emin : std_logic;
signal sec1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,sec,emin,setmin,clkset)
begin
if reset='0' then
enmin<='0';
secout<="0000000";
sec1<='1';
else
sec1<='0';
secout<=sec;
if clkset='1' and clkset'event then
if setmin='0' then
enmin<='1';
else
enmin<=emin;
end if;
end if;
end if;
end process;
process(clk,sec1)
alias lcount : std_logic_vector(3 downto 0) is sec(3 downto 0);
alias hcount : std_logic_vector(2 downto 0) is sec(6 downto 4);
begin
if sec1='1' then
sec<="0000000";
else
if (clk='1' and clk'event) then
if lcount=9 then
lcount<="0000";
if hcount/=5 then
hcount<=hcount+1;
emin<='0';
else
hcount<="000";
emin<='1';
end if;
else
lcount<=lcount+1;
emin<='0';
end if;
end if;
end if;
end process;
end xsecond_arch;
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xminute is
port (
clkmin: in STD_LOGIC;
reset: in STD_LOGIC;
sethour: in STD_LOGIC;
clk: in STD_LOGIC;
minout: out STD_LOGIC_VECTOR (6 downto 0);
enhour: out STD_LOGIC
);
end xminute;
architecture xminute_arch of xminute is
signal min : std_logic_vector(6 downto 0);
signal ehour : std_logic;
signal min1 : std_logic;
begin
-- <<enter your statements here>>
process(reset,clk,sethour,min,ehour)
begin
if reset='0' then
enhour<='0';
minout<="0000000";
min1<='0';
else
min1<='1';
minout<=min;
if clk='1' and clk'event then
if sethour='0' then
enhour<='1';
else
enhour<=ehour;
end if;
end if;
end if;
end process;
process(clkmin,min1)
alias lcountm : std_logic_vector(3 downto 0) is min(3 downto 0);
alias hcountm : std_logic_vector(2 downto 0) is min(6 downto 4);
begin
if min1='0' then
min<="0000000";
else
if (clkmin='1' and clkmin'event) then
if lcountm=9 then
lcountm<="0000";
if hcountm/=5 then
hcountm<=hcountm+1;
ehour<='0';
else
hcountm<="000";
ehour<='1';
end if;
else
lcountm<=lcountm+1;
ehour<='0';
end if;
end if;
end if;
end process;
end xminute_arch;
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xhour is
port (
clkhour: in STD_LOGIC;
reset: in STD_LOGIC;
hourout: out STD_LOGIC_VECTOR (5 downto 0)
);
end xhour;
architecture xhour_arch of xhour is
signal hour : std_logic_vector(5 downto 0);
begin
-- <<enter your statements here>>
process(reset,clkhour,hour)
alias lcount : std_logic_vector(3 downto 0) is hour(3 downto 0);
alias hcount : std_logic_vector(1 downto 0) is hour(5 downto 4);
begin
if reset='0' then
hourout<="000000";
hour<="000000";
else
if (clkhour='1' and clkhour'event) then
if lcount=9 then
lcount<="0000";
hcount<=hcount+1;
else
if hour="100011" then
hour<="000000";
else
lcount<=lcount+1;
end if;
end if;
end if;
hourout<=hour;
end if;
end process;
end xhour_arch;
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xalert is
port (
clk: in STD_LOGIC;
d_in: in STD_LOGIC_VECTOR (6 downto 0);
speak: out STD_LOGIC;
d_out: out STD_LOGIC_VECTOR (2 downto 0)
);
end xalert;
architecture xalert_arch of xalert is
type state is (s1,s2,s3,s4);
signal next_state,current_state : state;
begin
-- <<enter your statements here>>
process(clk,current_state,d_in)
begin
if d_in/="0000000" then
speak<='0';
next_state<=s1;
current_state<=s1;
d_out<="000";
else
if clk='1' and clk'event then
speak<='1';
current_state<=next_state;
end if;
case current_state is
when s1 =>
d_out<="000";
next_state<=s2;
when s2 =>
d_out<="001";
next_state<=s3;
when s3 =>
d_out<="010";
next_state<=s4;
when s4 =>
d_out<="100";
next_state<=s1;
when others =>
d_out<="000";
null;
end case;
end if;
end process;
end xalert_arch;
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity xsettime is
port (
hour: in STD_LOGIC_VECTOR (5 downto 0);
min: in STD_LOGIC_VECTOR (6 downto 0);
sec: in STD_LOGIC_VECTOR (6 downto 0);
reset: in STD_LOGIC;
clk: in STD_LOGIC;
sel: out STD_LOGIC_VECTOR (2 downto 0);
d_out: out STD_LOGIC_VECTOR (3 downto 0)
);
end xsettime;
architecture xsettime_arch of xsettime is
signal sel1 : std_logic_vector(2 downto 0);
begin
-- <<enter your statements here>>
process(clk,reset,sel1,hour,min,sec)
begin
if reset='0' then
sel<="000";
d_out<="0000";
sel1<="000";
else
if (clk='1' and clk'event) then
if sel1<5 then
sel1<=sel1+1;
else
sel1<="000";
end if;
end if;
sel<=sel1;
case sel1 is
when "000" =>
d_out(3)<='0';
d_out(2)<='0';
d_out(1)<=hour(5);
d_out(0)<=hour(4);
when "001" =>
d_out<=hour(3 downto 0);
when "010" =>
d_out(3)<='0';
d_out(2)<=min(6);
d_out(1)<=min(5);
d_out(0)<=min(4);
when "011" =>
d_out<=min(3 downto 0);
when "100" =>
d_out(3)<='0';
d_out(2)<=sec(6);
d_out(1)<=sec(5);
d_out(0)<=sec(4);
when "101" =>
d_out<=sec(3 downto 0);
when others =>
null;
end case;
end if;
end process;
end xsettime_arch;
library IEEE;
use IEEE.std_logic_1164.all;
entity xdeled is
port (
d_in: in STD_LOGIC_VECTOR (3 downto 0);
a: out STD_LOGIC;
b: out STD_LOGIC;
c: out STD_LOGIC;
d: out STD_LOGIC;
e: out STD_LOGIC;
f: out STD_LOGIC;
g: out STD_LOGIC
);
end xdeled;
才五分啊,太少了吧
哥剛的
Ⅳ 求高手修改一下EDA的課程設計 題目:數字秒錶;控制模塊出了問題
s0已經被用過了 給它起個別的名字 ss0
Ⅵ EDA課程設計——數字電子鍾 設計一個電子時鍾,要求可以顯示時、分、秒,用戶可以設置時間。 擴展功能:秒
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity code is
port( clk: in std_logic;--電路工作時的時鍾信號
clk1: in std_logic;--鬧鈴產生需要的時鍾信號
k: in std_logic;--高電平表示輸入1
led: out std_logic;--輸入正確時亮
led1: out std_logic;--輸入錯誤時亮
reset: in std_logic;-- 按下時復位
want: in std_logic;--是否修改密碼
alarm: out std_logic;--輸出鬧鈴聲
show: out std_logic_vector(3 downto 0));--提示作用
end;
architecture a of code is
signal temp: std_logic_vector(3 downto 0);--輸入一位加1
signal code: std_logic_vector(7 downto 0);--儲存密碼
signal getcode: std_logic_vector(7 downto 0);--儲存修改後的密碼
signal counter: std_logic_vector(3 downto 0);--計數
signal allow: std_logic;--是否允許修改密碼
signal ring:std_logic;--是否接通鬧鈴
begin
process(clk)
begin
if ring='1' then
alarm<=clk1;--鬧鈴接通
else
alarm<='0';--鬧鈴截至
end if;
if reset='1' then--按下reset後,密碼歸為初始密碼
getcode<="00000000";--初始密碼
counter<="0000";--內部計數
code<="11001000";--密碼
led<='0';
led1<='0';
allow<='0';
elsif clk'event and clk='1' then--輸入clk脈沖,則接收1位密碼
getcode<=getcode(6 downto 0)&k;--將這1位密碼並入getcode中的最後一位
if counter="1000" then--輸入為8位數碼時比較
if code=getcode then
led<='1';--正確燈亮
led1<='0';
ring<='0';
allow<='1';--允許修改密碼
elsif allow='1' and want='1' then--如果允許輸入且想輸入
code<=getcode;--輸入新密碼
led<='0';
led1<='0';
else
allow<='0';
led<='0';
led1<='1';--錯誤燈亮
ring<='1';--鬧鈴響
end if;
counter<="0000";--重新計數
else
counter<=counter+1; --累加
temp<=temp+1;--為防止泄露密碼,特別設置
end if;
end if;
show <= temp;
end process;
end;
Ⅶ 哥,有木有EDA設計的速度表課程設計啊
EDA的 速度表。。。
來取。
Ⅷ 用EDA設計一個速度表。1.PWM調速模塊的設計。2.速度測量模塊的設計。3.顯
前言 1
1.總體設計方案抄 2
(一)方案一:PWM波調速 2
(二)方案二:晶閘管調速 2
2.單元模塊設計 3
(一) H橋驅動電路設計方案 3
(二) 調速設計方案 5
(三)系統硬體電路設計 6
1.電源電路 6
2.H橋驅動電路 6
3.基於霍爾感測器的測速模塊 7
4.LCD顯示模塊 8
(四) 調速設計模塊 9
1.PWM波軟體軟體設計 9
2.測速軟體設計 12
3.系統功能調試 13
(一)調試軟體介紹 13
(二)直流電機的調速功能模擬 14
1.調速前的波形圖 14
2.調速後的波形圖 14
(三)電機速度的測量並顯示功能模擬 15
(四)系統的電路原理圖 15
(五)系統的PCB圖 16
4.設計總結 17
5.參考文獻 17
附錄 17
Ⅸ EDA課程設計
用單片機或者存儲器.
如果不允許用,可以這樣,整個過程分成24步,每步0.5秒。用幾回個個4017計數器,完成計答數,然後用二極體矩陣完成解碼,而且單片機的I/O就有鎖存功能一般不用加,你可以用164來擴展I/O口,他也可以鎖存的,宏晶的網站上有參考的電路圖,你可以去看看.