---
# System prepended metadata

title: 數位電子乙級檢定課程

---

# 術科題本 
## 技術士技能檢定數位電子乙級術科測試試題說明
技檢中心試題本 [載下](https://techbank.wdasec.gov.tw/owInform/DLowFile/117002B13.pdf?6)
### 本套試題共有 2 題（試題編號：11700-110201 及 11700-110202），測試時間均為 6小時（含檢查材料時間）。
### 試題抽題規定：
1. 每一場次術科測試均應包含試題所列 2 題，術科測試辦理單位之試務人員依應檢人數準備試題套數，並事先將 2 題試題***交錯置於崗位上***，應依時間配當表辦理抽題，並將電腦設置到抽題操作介面，會同監評人員、代表抽籤之應檢人及其第 2 順位編號應檢人為見證，全程參與抽題，處理電腦操作及列印簽名事項。應檢人依抽題結果進行測試，遲到者或缺席者不得有異議。
2. 籤條項目分 3 次抽選：
* 抽試題編號：
測試當場由已報到術科測試編號最小號之應檢人為代表抽籤，抽出其中 1 題試題應試，並依該試題所對應之崗位順序入座，其餘應檢人則依術科測試編號之順序（含遲到及缺考）接續依各該崗位所對應之試題進行測試（例如：奇數崗位為試題一，偶數崗位為試題二，代表抽籤之應檢人抽到試題二，即入座第 2 崗位；次號入座第 3 崗位，餘依此類推）。
* **抽子板 CPLD 指定接腳**：
由 A－E 共 5 種組合抽 1 組測試，當場次應檢人測試同一組；非指定接腳由應檢人自行規劃。
![image](https://hackmd.io/_uploads/B1_LN32Uyx.png)

* **抽七段顯示器顯示內容**：
由 J－N 共 5 種組合抽 1 組測試，當場次應檢人測試同一組。
![image](https://hackmd.io/_uploads/Bkft4hhLJe.png)
![image](https://hackmd.io/_uploads/rya2E32Lye.png)



## 技術士技能檢定數位電子乙級術科測試工作規則
### 各規則的規定項次前加註之符號意義為：
![image](https://hackmd.io/_uploads/HyTkVphIkg.png)
* **電腦製圖規則：**
![image](https://hackmd.io/_uploads/rJxX4ThIyl.png)

* **焊接規則：**
![image](https://hackmd.io/_uploads/ByPL4a2L1x.png)

* **裝配規則：**
![image](https://hackmd.io/_uploads/rJ1cV6hUJg.png)


## 技術士技能檢定數位電子乙級術科測試試題
### 試題一
#### 一、試題編號：11700-110201
#### 二、試題名稱：四位數顯示裝置
#### 三、測試時間：6 小時
#### 四、試題說明：
本試題依檢定電子電路圖分為兩部分，第一部分稱為母電路板，內容包括：（1）以電腦輔助電路佈線軟體**繪製佈線圖**、（2）依所繪製之佈線圖，以萬用電路板進行**裝配及焊接**；第二部分稱為子電路板，內容包括：（1）以蝕刻好的電路板進行**裝配及焊接**工作、（2）以電子設計自動化（EDA）軟體完成可程式晶片之電路設計。並將母電路板與子電路板組合**完成試題動作要求**。
#### 五、試題動作要求：
##### (一) 子板接上電源後，LED1 指示燈應亮，未亮者扣 5 分。
##### (二) 未依下列動作要求進行者，依規定扣分：
1.  抽定之子板接腳使用者，少一個接腳扣 10 分。
2.  應檢人應於資料碟（如 D 槽）中，建立兩個資料夾，否則每項扣 10 分：
第一個資料夾名稱為：崗位編號_Layout，放置電路圖與佈線圖設計專案。
第二個資料夾名稱為：崗位編號_CPLD，放置 CPLD 電路設計專案。
##### (三) 七段顯示器內容要求，其字型呈現如下：
![image](https://hackmd.io/_uploads/Bkey5anL1l.png)
1. 七段顯示器未依測試當日抽籤指定的題組顯示其內容（例如：當日抽到的是 J組，但七段顯示器顯示的是 K 組或其他組別的內容），則不予評分。
2. 若 4 位數七段顯示器每一個數字符號對應之七段顯示器同一個節段顯示不正確，則每一節段扣 25 分，如：a 節段在 4 個位數都不正確，扣 25 分；不同位數不同段顯示不正確，則每字扣 25 分，如：第一位數 a 節段不正確、第二位數 dp 節段不正確，二字共扣 50 分；若第一位數 a，d 二節段不正確，其餘位數各節段均正確，則以一字扣 25 分。一個錯誤僅扣一次不重複扣分。
#### 六、試題參考圖表（試題一：四位數顯示裝置）
##### (一) 檢定電子電路圖
![image](https://hackmd.io/_uploads/H1sKca38Jx.png)
#### 七、供給材料表（試題一：四位數顯示裝置）
母電路板
![image](https://hackmd.io/_uploads/H1EyoThUyg.png)

### 試題二
#### 一、試題編號：11700-110202
#### 二、試題名稱：鍵盤輸入顯示裝置
#### 三、測試時間：6 小時
#### 四、試題說明：
本試題依檢定電子電路圖分為兩部分，第一部分稱為母電路板，內容包括：（1）以電腦輔助電路佈線軟體**繪製佈線圖**、（2）依所繪製之佈線圖，以萬用電路板進行**裝配及焊接**；第二部分稱為子電路板，內容包括：（1）以蝕刻好的電路板進行**裝配及焊接**工作、（2）以電子設計自動化（EDA）軟體完成可程式晶片之電路設計。並將母電路板與子電路板組合**完成試題動作要求**。
#### 五、試題動作要求：
##### (一) 子板接上電源後，LED1 指示燈應亮，未亮者扣 5 分。
##### (二) 未依下列動作要求進行者，依規定扣分：
1.  抽定之子板接腳使用者，少一個接腳扣 10 分。
2.  應檢人應於資料碟（如 D 槽）中，建立兩個資料夾，否則每項扣 10 分：
第一個資料夾名稱為：崗位編號_Layout，放置電路圖與佈線圖設計專案。
第二個資料夾名稱為：崗位編號_CPLD，放置 CPLD 電路設計專案。
##### (三) 按下鍵盤，七段顯示器應出現對應之數字符號並須栓鎖於顯示器上，顯示內容要求，其中“＊”及“＃”顯示內容為由當日抽籤指定（下表為範例），顯示內容要求：
![image](https://hackmd.io/_uploads/rk5o3a3IJl.png)
1. 七段顯示器未依測試當日抽籤指定的題組顯示其內容（例如：當日抽到的是 J組，但七段顯示器顯示的是 K 組或其他組別的內容），則不予評分。
2. 鍵盤每一個數字符號應顯示並栓鎖於七段顯示器，若未能栓鎖則扣 25 分。同一個節段內容顯示不正確，則每一節段扣 25 分，如：a 節段在 12 個數字符號的顯示都不正確，扣 25 分；不同數字符號不同段顯示不正確，則每字扣 25 分，如：數字符號 3 的 b 節段不正確、數字符號 5 的 f 節段不正確，其餘數字符號均正確，則二字共扣 50 分。一個錯誤僅扣一次不重複扣分。
#### 六、試題參考圖表（試題二：鍵盤輸入顯示裝置）
##### (一) 檢定電子電路圖
![image](https://hackmd.io/_uploads/S198TThIJl.png)
#### 七、供給材料表（試題二：鍵盤輸入顯示裝置）
![image](https://hackmd.io/_uploads/SJ49TThLkx.png)
### 子電路板  
#### 子電路板設計圖  
![image](https://hackmd.io/_uploads/BJIXsPAi1e.png)  
#### 子電路板材料

# 術科解題實作
## 實務規劃流程
![image](https://hackmd.io/_uploads/HkRPmAn8yl.png)
## 軟體安裝
1. Kicad EDA 軟安裝
* Kicad EDA [軟體下載](https://www.kicad.org/download/windows/)          ，註此網站為最新版本
* 符號庫參考檔案[下載](https://techbank.wdasec.gov.tw/owInform/DLowFile/117002B14.7z?16)  ，將KiCAD_Library 資料放置桌面(檢視考場電腦是否放置在桌面)
2. Quartus-Web-13.0軟體 [下載](https://www.intel.com/content/www/us/en/software-kit/711791/intel-quartus-ii-web-edition-design-software-version-13-0sp1-for-windows.html)
## 原理圖設計
1. 點選桌面快捷鍵![image](https://hackmd.io/_uploads/r1gq6Sfw1e.png)或從桌面左下開始點程式集開啟。
2. 檔案 -> 新建工程 -> 應於資料碟（如 D 槽）建立兩個資料夾中**崗位編號_Layout**，放置電路圖與佈線圖設計專案工程名稱(建議如試題一編輯no1) 
![image](https://hackmd.io/_uploads/H17ibUMPyl.png)

3. 產生專案檔，包含
* .kicad_sch：包含所有電路和元件本身的原理圖檔。
* .kicad_pcb：包含的所有原理圖檔內資訊的電路板檔。
* .backups：是設計回復檔
![image](https://hackmd.io/_uploads/HJsQMLfPye.png)

4. 開啟原理圖檔設計(點選    ![image](https://hackmd.io/_uploads/SJwczUfPke.png))
 ![image](https://hackmd.io/_uploads/rk7ZXLGDJe.png)
5. 依快速工具列步驟完成![image](https://hackmd.io/_uploads/SyXoGEQDJg.png)
* 載入電路符號資料庫![image](https://hackmd.io/_uploads/S1MEZEmD1x.png)(選取桌面New_Library\New_Library.kicad_sym 檔案)![image](https://hackmd.io/_uploads/rJ7dBVXPyl.png)

* 依題組放入元件圖![image](https://hackmd.io/_uploads/rJjZL47Pkx.png)![image](https://hackmd.io/_uploads/ByA9w4mv1e.png)

* 載入封裝腳位圖![image](https://hackmd.io/_uploads/r1uPQgUDJl.png)(選取桌面New_Library\New_Library.pretty 資料夾)![image](https://hackmd.io/_uploads/Hy-lLeIwyl.png)
* 自動排元件編號![image](https://hackmd.io/_uploads/rk0aUeLD1e.png)![image](https://hackmd.io/_uploads/SJ9ZDg8vkx.png)
* 電氣規則檢測(ERC)![image](https://hackmd.io/_uploads/Sy9YvlUDJx.png)![image](https://hackmd.io/_uploads/ryHpweLw1e.png)檢視元件佈線配置是否正確
* 執行封裝配工作![image](https://hackmd.io/_uploads/r1svClLw1g.png)
![image](https://hackmd.io/_uploads/rymKCeUPkl.png)檢視封裝元件配置是否正確
* 開啟PCB佈線圖![image](https://hackmd.io/_uploads/ByeIuxIw1x.png)
6. 參考原理圖設計
  
    試題一原理圖設計
* CPLD 指定接腳(A)電路設計![image](https://hackmd.io/_uploads/rkP1VSmY1l.png)
* 四位數七段顯示器腳位、電晶體控制端與CPLD指定接腳配置![image](https://hackmd.io/_uploads/Hk_a9vmTll.png)






    
    試題二原理圖設計
* CPLD 指定接腳(A)電路設計![image](https://hackmd.io/_uploads/B1lsneIwye.png)
* 七段顯示器腳位、4X3鍵盤與CPLD指定接腳配置![image](https://hackmd.io/_uploads/HJ9SurjFgx.png)



## PCB佈線圖設計
1. PCB_Layout編輯環境![image](https://hackmd.io/_uploads/SkX_fb8v1e.png)
2. 圖框設定![image](https://hackmd.io/_uploads/BktH7WLvke.png)
3. 開啟封裝庫![image](https://hackmd.io/_uploads/H1ug4-LDke.png)載入PCB萬用電路板![image](https://hackmd.io/_uploads/rkITE-8wke.png)
4. 按F8載入(更新)或點選![image](https://hackmd.io/_uploads/rJEErb8Pyl.png)
原理圖檔設計封裝電路![image](https://hackmd.io/_uploads/ryCwrWUv1l.png)
5. 依原理圖設計佈線
6. 設計規則檢視(DRC)![image](https://hackmd.io/_uploads/Sy9YvlUDJx.png)![image](https://hackmd.io/_uploads/SkRuLb8v1e.png)
7. 參考原理圖設計

    **試題一佈線圖設計**![image](https://hackmd.io/_uploads/SJAx9bIwyl.png)
    **試題二佈線圖設計**![image](https://hackmd.io/_uploads/HJJvjZLPJx.png)
    
## 列印出圖
1. 元件面出圖：勾選F.Cu 、F.Silkscreen、E.Cuts及列印邊框和標題欄勾選![image](https://hackmd.io/_uploads/SJTLu-UP1e.png)

    **試題一元件面圖**![image](https://hackmd.io/_uploads/rJO10b8vkg.png)
    
    **試題二元件面圖**![image](https://hackmd.io/_uploads/S107nbUPyg.png)

2. 佈線面出圖：勾選F.Cu 、E.Cuts、**映象列印**及列印邊框和標題欄![image](https://hackmd.io/_uploads/HkxgKb8P1e.png)

    **試題一佈線面圖**![image](https://hackmd.io/_uploads/SJqna-UPkg.png)
    
    **試題二佈線面圖**![image](https://hackmd.io/_uploads/S1qjhZ8wyx.png)
## CPLD程式編輯燒錄
### 建立CPLD專案檔
1. 點選桌面快捷鍵![image](https://hackmd.io/_uploads/SkPT7hbYyx.png)或從桌面左下開始點程式集開啟。(※註QuartusII 13.0 版操作)
2. 建新專案
 
![image](https://hackmd.io/_uploads/BJUpI3WY1l.png)

3. 下一步(Next)

![image](https://hackmd.io/_uploads/SywaDnbY1x.png)

4. 建立程式專案
* 1 程式專案儲存應於資料碟（如 D 槽）建立兩個資料夾中崗位編號_CPLD2
* 2 專案名稱(建議以題組命名，如題組一為no1)
* 3 啟始檔案名稱(與專案名稱相同)
* 4 下一步(Next)

![image](https://hackmd.io/_uploads/r1x6pnWtJl.png)


5.下一步(Next)

![image](https://hackmd.io/_uploads/SkrLCn-K1l.png)

6. 選取CPLD晶片
* 1 晶片家族(MAX3000A)
* 2 過濾晶片(腳位數:44，速度:10)
* 3 CPLD晶片選取(***EPM3064ALC44-10***)
* 4 完成(Finish)

![image](https://hackmd.io/_uploads/Hyhogabtkx.png)

### 程式編輯與燒錄
1. 新增程式編輯檔->產生設計檔(Verilog HDL File)
![image](https://hackmd.io/_uploads/HJ56UTZtyx.png)

2. 編輯程式
![image](https://hackmd.io/_uploads/H1t5eSXKJe.png)

3. ![image](https://hackmd.io/_uploads/HyFZWH7F1g.png)
除錯及儲存檔案(專案名稱、元件名稱及檔案名稱要一樣，否則會有錯誤)
![image](https://hackmd.io/_uploads/Sya7WSmF1l.png)

4. ![image](https://hackmd.io/_uploads/B15gzSXK1l.png)CPLD指定腳位規劃設定
![image](https://hackmd.io/_uploads/rJOtBrmtkl.png)

5. ![image](https://hackmd.io/_uploads/HyFZWH7F1g.png)再除錯及產生(XX.pof燒錄檔)
![image](https://hackmd.io/_uploads/rkOHcBQFkg.png)
6. ![image](https://hackmd.io/_uploads/SJ3giHQY1x.png)燒錄CPLD
* 1 確認USB Blaster是否連線與驅動
* 2 確認燒錄檔是否正確
* 3 Program/configure 是否有勾選

![image](https://hackmd.io/_uploads/HyMFoSXFJe.png)

7. 檢視成品功能

## 試題程式
### 四位數顯示裝置
參考程式一
```verilog=
module no1(
 input ck,
 output reg[3:0]com,//D1,D2,D3,D4
 output reg[7:0]seg//DP,G,F,E,D,C,B,A
);
reg [10:0]scan;
always @(posedge ck)
begin
	scan[10:0]<=scan[10:0]+2'h1;
	case(scan[10:9])
		4'd0:begin com<=4'h1;seg<=8'b00111111; end//0 8'h3f
		4'd1:begin com<=4'h2;seg<=8'b01100110; end//4 8'h66
		4'd2:begin com<=4'h4;seg<=8'b11001111; end//3.8'hcf
		4'd3:begin com<=4'h8;seg<=8'b00000110; end//1 8'h06
	endcase
end
endmodule
```
共陰極七段顯示器編碼  
![image](https://hackmd.io/_uploads/H1q8dKQaee.png)

### 鍵盤輸入顯示裝置
參考程式一
```verilog=
module no2(
input clk,
input [2:0] row,
output reg[3:0] col,
output reg[6:0] seg
);
    reg [13:0] count;//計時
    reg [3:0] segl;//按鍵讀值
    always @(posedge clk)count=count+1;	
    always @(count[13:12])//每2ms時間,更改列值
        case(count[13:12])
	    0: 	col=4'b1110; 				
	    1: 	col=4'b1101;						
	    2: 	col=4'b1011; 		
	    3: 	col=4'b0111;		
	endcase
    always @(negedge count[11])//每1ms時間掃描鍵盤
        case(row)
	    3'b110:segl=count[13:12]*3+1;
	    3'b101:segl=count[13:12]*3+2;
	    3'b011:segl=count[13:12]*3+3;
        endcase	
    always@(segl)//數字解碼對應七段顯示器
	case(segl)	
            1: seg[6:0]=7'b1111001;//1
            2: seg[6:0]=7'b0100100;//2
            3: seg[6:0]=7'b0110000;//3
            4: seg[6:0]=7'b0011001;//4
            5: seg[6:0]=7'b0010010;//5
            6: seg[6:0]=7'b0000010;//6
            7: seg[6:0]=7'b1111000;//7
            8: seg[6:0]=7'b0000000;//8
            9: seg[6:0]=7'b0011000;//9
            10:seg[6:0]=7'b0100111;//*
            11:seg[6:0]=7'b1000000;//0
            12:   seg[6:0]=7'b0110011;//#
        endcase
endmodule
```
參考程式二
```verilog=
    module no2(
	input clk,
	input [2:0]col,
	output reg [6:0]seg,
	output reg [3:0]row
	);
	reg [10:0]scan;	
	always @(posedge clk) 
	begin
		scan<=scan+1;
		case(scan[10:9])
			4'h0: row<=4'b1110;
			4'h1: row<=4'b1101;
			4'h2: row<=4'b1011;
			4'h3: row<=4'b0111;		
		endcase
		case(row)
			4'b1110:
					case(col[2:0])
						3'b110:seg<=7'b1111001;//1
						3'b101:seg<=7'b0100100;//2
						3'b011:seg<=7'b0110000;//3

					endcase
			4'b1101:
					case(col[2:0])
						3'b110:seg<=7'b0011001;//4
						3'b101:seg<=7'b0010010;//5
						3'b011:seg<=7'b0000010;//6
					endcase

			4'b1011:
					case(col[2:0])
						3'b110:seg<=7'b1111000;//7
						3'b101:seg<=7'b0000000;//8
						3'b011:seg<=7'b0010000;//9
					endcase
			4'b0111:
					case(col[2:0])
						3'b110:seg<=7'b0100111;//*
						3'b101:seg<=7'b1000000;//0
						3'b011:seg<=7'b0110011;//#
					endcase			
		endcase	
		end
endmodule
```
共陽極七段顯示器編碼  
![image](https://hackmd.io/_uploads/rk-AoYm6xg.png)
















































