發表文章

目前顯示的是 6月, 2024的文章

我決定改變這10個生活習慣 I'm Charlie

https://youtu.be/9Q0BDhHJL1o?si=ECZjanEW4plyEUAH 我決定改變這10個生活習慣 I'm Charlie 1不用紙杯喝熱飲 2不用塑膠袋裝食物 3少吃外食(或自備餐具) 4盡量吃有機食品 5慎選精油 6不要熬夜 7減少工作壓力 8多吃抗氧化物(少吃加工食品,多吃原型食物) 9物理性防曬(外套、帽子、陽傘、口罩、太陽眼鏡) 真的自己帶保溫杯去買咖啡才是最環保又安全又可以折價

4位數7段顯示器移位暫存控制器VHDL20240611_door_locks (半成品)

圖片
4位數7段顯示器移位暫存控制器 https://youtu.be/yuStxpw-Cvo 能夠用莫爾機Moore做解彈跳, 個位等於指撥開關輸入(BCD) 按下set時,4位數7段顯示器往左移位 設有清除,一鍵清成0000 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240611_door_locks is port( clk_4M:in std_logic; sw_in:in std_logic_vector(3 downto 0); set:in std_logic; rst:in std_logic; seg7_scan:out std_logic_vector(3 downto 0); seg7_out:out std_logic_vector(6 downto 0); seg7_sec:out std_logic:='1'); end VHDL20240611_door_locks; architecture aa of VHDL20240611_door_locks is signal cnt1:integer range 0 to 1999:=0; signal clk_2k:std_logic:='0'; signal cnt2:std_logic_vector(1 downto 0):="00"; signal v3:std_logic_vector(3 downto 0):="0000"; signal v2:std_logic_vector(3 downto 0):="0000"; signal v1:std_logic_vector(3 downto 0):="0000"; signal v0:std_logic_vector(3 downto 0):="0000"; signal seg7_reg:std_lo

按鈕解彈跳計數7段LED顯示器VHDL20240611_seg7_controller

圖片
 按鈕解彈跳記數7段LED顯示器VHDL20240611_seg7_controller https://youtube.com/shorts/PQcoAYN7H8I clk_4M訊號被控制時脈輸入,用於觸發時脈邊緣的過程。 counting和訊號分別控制是否rst進行計數和重置計數。countingrst seg7_scan是用於掃描選擇七段顯示器的訊號,seg7_out用於輸出七段顯示器的選擇訊號,seg7_sec用於控制秒的訊號。 v2和v3訊號分別用來儲存兩個四位的整數的值。 button_1是一個狀態機,idle用於處理按鈕的狀態pressed。訊號為高電平,則切換回狀態。idlepressedpressedcnt2countingidle cnt4訊號在時脈的clk_2k上升沿選擇翻轉。cnt4seg7_reg 透過seg7_reg中儲存的值來選擇要顯示的七段數碼管的段,將其儲存在seg7_out中輸出。 最後,透過將v2和v3中的值分別賦給BCD訊號的低四位元和高四位,輸出到外部。 實現一個控制七段顯示器的狀態機,它按鈕控制計數開始/停止和重設功能,並根據計數結果選擇要顯示的數字。 題 背景: 在數位電路設計中,按鍵的彈跳問題是一個常見的挑戰。 要 設計一個按鍵去振動計數器和七段LED顯示器控制器。 功能描述: 按鍵按下時,計數開始並在七段 LED 顯示器上顯示計數值。 當按鍵釋放時,計數停止並保持顯示最後 可以透過另一個按鍵清除 使用七段LED顯示器顯示計數值,使用 提 使用狀態機來實現關鍵的穩定檢測和計數的控制。 考慮使用投票來針對按鈕 考 VHDL設定 按鍵去搖晃 狀態 七段LED library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity VHDL20240611_seg7_controller is port( clk_4M:in std_logic; counting:in std_logic; rst:in std_logic; seg7_scan:out std_logic_vector(3 downto 0); seg7_out:out std_log

以莫爾機控制0~3上下數計數器VHDL20240608_counting_moore

圖片
 以莫爾機控制0~3上下數計數器VHDL20240608_counting_moore https://youtube.com/shorts/NGUJQK7pRxM 利用莫爾機完成一個0~3上下數計數器 當按下rst,計數器輸出為0 放開rst,計數器正常計數 當mode為0,為下數計數器,0, 3, 2, 1, 0 當mode為1,為上數計數器,0, 1, 2, 3, 0 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240608_counting_moore is port( clk_4M:in std_logic; rst:in std_logic; mode:in std_logic; BCD:out std_logic_vector(3 downto 0)); end VHDL20240608_counting_moore; architecture aa of VHDL20240608_counting_moore is signal cnt1:integer range 0 to 1999999:=0; signal clk_sec:std_logic:='0'; type state_type is (s0, s1, s2, s3); signal state: state_type:=s0; begin process(clk_4M) begin if rising_edge(clk_4M) then if cnt1=1999999 then cnt1<=0; clk_sec<=not clk_sec; else cnt1<=cnt1+1; end if; end if; end process; process(rst,clk_sec,state,mode) begin if rst='0' then state<=s0;

紅綠燈控制電路VHDL20240608_RYG

圖片
 完成一個十字路口紅綠燈控制電路 https://youtube.com/shorts/F2PGvyhlvCQ 有RYG1與RYG2共兩組紅綠燈,紅綠燈的週期是10秒,綠燈4秒,黃燈1秒,紅燈5秒。 電源打開時起始狀態是RYG1亮綠燈,RGY2亮紅燈 設rst鈕,按下回到RYG1亮綠燈,RGY2亮紅燈繼續 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8 LED1不使用 LED2=R1 LED3=Y1 LED4=G1 LED5不使用 LED6=R2 LED7=Y2 LED8=G2 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240608_RYG is port( clk_4M:in std_logic; rst:in std_logic; RYG:out std_logic_vector(7 downto 0)); end VHDL20240608_RYG; architecture aa of VHDL20240608_RYG is signal cnt1:integer range 0 to 1999999:=0; signal clk_sec:std_logic:='0'; signal cnt2:integer range 0 to 9:=0; begin process(clk_4M) begin if rising_edge(clk_4M) then if cnt1=1999999 then cnt1<=0; clk_sec<=not clk_sec; else cnt1<=cnt1+1; end if; end if; end process; process(clk_sec) begin if rst='0' then cnt2<=0; elsif rising_edge(clk_s

碼表,顯示分與秒VHDL20240608_clock_mmss

圖片
 碼表,顯示分與秒VHDL20240608_clock_mmss https://youtube.com/shorts/CG_sV1ZLDdM library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240608_clock_mmss is port ( clk_4M:in std_logic; rst:in std_logic; clk_555:in std_logic; seg7_out:out std_logic_vector(6 downto 0); seg7_scan:out std_logic_vector(3 downto 0); BCD:out std_logic_vector(3 downto 0); seg7_sec:out std_logic ); end VHDL20240608_clock_mmss; architecture aa of VHDL20240608_clock_mmss is signal cnt1:integer range 0 to 1999:=0; signal clk_2k:std_logic:='0'; signal clk_D5:std_logic:='0'; signal cnt2:std_logic_vector(1 downto 0):="00"; signal m1,m0,s1,s0:std_logic_vector(3 downto 0):="0000"; signal seg7_reg:std_logic_vector(3 downto 0):="0000"; begin process(clk_4M) begin if rising_edge(clk_4M) then if cnt1=1999 then cnt1<=0; clk_2k<=not clk_2k; els

4位元計數器0000to9999 VHDL20240608_0000to9999

圖片
 4位元計數器0000to9999 VHDL20240608_0000to9999 https://youtube.com/shorts/GxH4fG-qXik library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240608_0000to9999 is port ( clk_4M:in std_logic; rst:in std_logic; clk_555:in std_logic; seg7_out:out std_logic_vector(6 downto 0); seg7_scan:out std_logic_vector(3 downto 0); seg7_sec:out std_logic:='1' ); end VHDL20240608_0000to9999; architecture aa of VHDL20240608_0000to9999 is signal cnt1:integer range 0 to 1999:=0; signal clk_2k:std_logic:='0'; signal cnt2:std_logic_vector(1 downto 0):="00"; signal clk_555_2:std_logic:='0'; signal v0,v1,v2,v3:std_logic_vector(3 downto 0):="0000"; signal seg7_reg:std_logic_vector(3 downto 0):="0000"; begin process(clk_4M,rst) begin if rising_edge(clk_4M) then if cnt1=1999 then cnt1<=0; clk_2k<=not clk_2k; else cnt1

數位電子乙級第1題CPLD VHDL_20240608_DE1 顯示POSE.

圖片
 數位電子乙級第1題CPLD VHDL_20240608_DE1 顯示POSE. library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL_20240608_DE1 is port( clk_4M:in std_logic; seg7_out:out std_logic_vector(7 downto 0); seg7_scan:out std_logic_vector(3 downto 0)); end VHDL_20240608_DE1; architecture aa of VHDL_20240608_DE1 is signal cnt1:integer range 0 to 1999:=0; signal cnt2:std_logic_vector(1 downto 0):="00"; signal seg7_v3:std_logic_vector(7 downto 0):="01110011";--P signal seg7_v2:std_logic_vector(7 downto 0):="00111111";--O signal seg7_v1:std_logic_vector(7 downto 0):="01101101";--S signal seg7_v0:std_logic_vector(7 downto 0):="11111001";--E. begin process(clk_4M) begin if rising_edge(clk_4M) then if cnt1=1999 then cnt1<=0; cnt2<=cnt2+1; else cnt1<=cnt1+1; end if; end if; end process; seg7_scan<= "0001&q

數位電子乙級第2題腳位E顯示M CPLD 20240606

圖片
 數位電子乙級第2題腳位E顯示M CPLD 20240606 VHDL_20240606_DE2_E_M https://youtube.com/shorts/Ykl7OLIymv0 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL_20240606_DE2_E_M is port( clk_4M:in std_logic; key_col:in std_logic_vector(2 downto 0); key_row:buffer std_logic_vector(3 downto 0); seg7_out:out std_logic_vector(6 downto 0)); end VHDL_20240606_DE2_E_M; architecture aa of VHDL_20240606_DE2_E_M is signal cnt1:integer range 0 to 1999:=0; signal clk_2k:std_logic:='0'; signal cnt2:std_logic_vector(1 downto 0):="00"; signal temp:std_logic_vector(6 downto 0):="1111111"; signal cnt3:std_logic_vector(6 downto 0):="0000000"; begin process(clk_4M) begin if rising_edge(clk_4M) then if cnt1=1999 then cnt1<=0; clk_2k<=not clk_2k; else cnt1<=cnt1+1; end if; end if; end process; process(clk_2k,key_col) begin

數位電子乙級第2題腳位E顯示M LAYOUT 20240605

 數位電子乙級第2題腳位E顯示M LAYOUT 20240605 https://youtu.be/BVg1rqAOhpA 打開chrome 測試參考資料 勞動部網站gov.tw 搜尋 數位電子 下載術科題本PDF 下載到 桌面(老師SD卡),學號(老師class1110XX) 建立新資料夾 DE2_20240605 進入DE2_20240605資料夾 存檔 下載術科library 及燒錄檔 預設的位置 SAVE 進入de2_20240605資料夾 解壓縮至此117002B12.7z 解壓縮至此KiCAD_Library(2).zip 解壓縮至此燒錄檔.7z 進入kicad_library New_Library.kicad_sym改成New_Library20240605.kicad_sym New_Library.pretty資料夾改成New_Library20240605.pretty 回到DE2_20240605資料夾,打開術科題本 腳位E顯示M LAYOUT 在術科題本PDF P4 打開kicad 關掉舊專案 file, close project 建立新專案 file, new project 位置 桌面(老師SD卡),學號(老師class1110XX),DE2_20240605 第一個資料夾名稱為:崗位編號_Layout,放置電路圖與佈線圖設計專案 崗位編號_Layout,在學校設定為座號_Layout 老師座號設為78號 建立資料夾 78_Layout 進入78_Layout資料夾 專案名稱設為 DE2_20240605 SAVE 匯入勞動部資料庫 打開symbol editor file, add library, Global, ok 桌面(老師SD卡),學號(老師class1110XX),DE2_20240605,KiCAD_Library 選New_Library20240605.kicad_sym檔案 open 資料庫置頂 3x4keypad改腳位 左鍵點一下3x4keypad,再點右鍵 save as 3x4_Keypad_mod 7seg_CA改腳位 左鍵點一下7seg,再點右鍵 save as CPLD3064改圖 打開題本PDF P4 腳位E P8 P9 P11 P12 P14 P28 P29 P31 P33 P34 回到CPLD3

PWM 波形產生器VHDL20240601_PWM_Generator

圖片
  https://youtu.be/hOhVjwcwOTY 題目:PWM 波形產生器 設計一個脈衝寬度調變(PWM)波形產生器,具有可變佔空比: 輸入 duty_cycle 為 8 位元數據,代表佔空比的百分比(0-255)。 clk 為時鐘信號, reset 為重置信號。 輸出 pwm_out 為 PWM 波形輸出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240601_PWM_Generator is port( duty_cycle:in std_logic_vector(7 downto 0); clk_4M:in std_logic; reset:in std_logic; pwm_out:out std_logic); end VHDL20240601_PWM_Generator; architecture aa of VHDL20240601_PWM_Generator is signal cnt1:std_logic_vector(7 downto 0):="00000000"; begin process(clk_4M, reset) begin if reset='0' then cnt1<="00000000"; elsif rising_edge(clk_4M) then cnt1<=cnt1+1; end if; end process; pwm_out<='1' when cnt1<duty_cycle else '0'; end aa;

4 位元同步計數器VHDL20240601_SyncCounter4Bits

圖片
  https://youtu.be/hAPd00hCYbs 題目:4 位元同步計數器 設計一個 4 位元同步二進制計數器,具有上數和下數功能: 當 reset 為高電位時,計數器重置為 0。 當 up_down 為高電位時,計數器上數;當 up_down 為低電位時,計數器下數。 當計數器到達 15(上數)或 0(下數)時,溢出或借位,循環計數。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; use ieee.numeric_std.all; entity VHDL20240601_SyncCounter4Bits is port( clk_4M:in std_logic; reset:in std_logic; up_down:in std_logic; seg7_out:out std_logic_vector(6 downto 0); seg7_scan:out std_logic_vector(3 downto 0); seg7_sec:out std_logic:='1'; BCD:buffer std_logic_vector(3 downto 0):="0000"); end VHDL20240601_SyncCounter4Bits; architecture aa of VHDL20240601_SyncCounter4Bits is signal cnt1:integer range 0 to 1999999:=0; signal clk_sec:std_logic:='0'; signal cnt2:integer range 0 to 1999:=0; signal clk_2k:std_logic:='0'; signal cnt3:std_logic_vector(1 downto 0):="00"; signal digit0:std_logic_vector(3 downto 0); signal digit1:std_logic_vector(3