2024年4月9日 星期二

Cadence AWR 16 - (2)同軸電纜模擬

 

1. 在專案新增電路圖後,至"Elements"標籤頁中,選擇"Transmission Lines" > "Physical" > "COAX",拖拉至電路圖中。

2. 依據下圖所示,增加GND與PORT元件,並且修改同軸電纜參數。


參數中需要修改單位,可以在"Project"標籤頁中點選"Project Options" > "Global Units" > "Edit Units",選擇需要修改的欄位,並修改單位。

3. 點選"Graphs"ˋ按"滑鼠右鍵"選擇"New Graph..."。

4.  選擇"Rectangular"後按"Create"。

5. 點選新增的繪圖檔案,按"滑鼠右鍵",選擇"Add Measurement..."。

6. 在"Measurement"選擇"Z"參數,Data Source Name,選擇繪製的電路圖名稱後按"Add"。

7. 最後按"Analyze",執行模擬,結果如下圖所示。

2024年4月6日 星期六

Cadence AWR 16 - (1)DC analysis

 1. 使用"滑鼠左鍵",點選"AWR Design Environment 16"。


2. 直接點選"OK"。

3. 在"Project"標籤頁,選擇"Circuit Schematics" > "滑鼠右鍵" > "New Schematic...",在建立Project中新增電路圖。

4. 輸入電路圖名稱,這裡輸入"DC_analysis",之後按"Create"。


5. 在"Elements"標籤頁,選擇"Resistor" > "RES"電阻元件。


6.  按"滑鼠左鍵"將 "RES"電阻元件拖拉至電路圖中。


7. 可以使用"滑鼠左鍵"快點兩下參數標籤修改電阻值,我這裡改成1k ohm。

8. 之後再選擇"Sources" > "DC" > "DCVS" 直流電壓源。
9. 按"滑鼠左鍵"將 "DCVS"直流電壓源元件拖拉至電路圖中。

10. 靠近元件節點,按"滑鼠左鍵"可以將元件連線,最後選擇"GND"元件,增加GND符號。

11. 提取電路模擬參數設定,選擇"Draw" > "Add Extraction..."。

12. 選擇"DCIA",直流分析電流值,按"Apply",就會在電路圖下增加分析項目,最後按"OK",結束選擇。

13. 在電路圖下增加分析項目後,點選"Analyze"開始模擬。

14. 點選"Tune Tool",再點選"DCVS"標籤中的V=1V,這時標籤會由黑變藍。
 

15.  點選"Tune"。

16. 跳出Tuner視窗後,滑動Tuner欄位中Slider控制項,可以觀察到當直流電壓出現變化時,電路中的電流值也會隨之改變符合歐姆定理。


2024年3月21日 星期四

Cadence Virtuoso 快捷鍵

 

Schematic 常用快捷鍵

X:檢查並存檔

S:存檔

[:縮小

]:放大

F:整圖居中顯示

U:撤銷上一次操作

Esc:清除剛才鍵入的命令

C:複製

M:移動

e:進入下一層,可讀模式

E:進入下一層,可寫模式(不可返回)

Ctrl+e:返回上一層

Shift+m:移動Symbol但不移動連線

Delete:刪除

I:添加Symbol

P:添加Pin

R:旋轉Symbol並拖動連線

Q:屬性編輯

L:添加線名

Shift+L:標注

N:添加幾何圖形

Shift+N:添加標籤

G:查看錯誤

F3:對當前的命令進行編輯

Layout 常用快

Shift+z:縮小

Ctrl+z:放大

F:整圖居中顯示

U:撤銷上一次操作

Esc:清楚剛鍵入的命令

Ctrl+D:取消選擇,這個也可用滑鼠點擊空白區域實現。經常使用這個快速鍵可以防止誤操作。

C:複製

M:移動

Q:顯示屬性

Delete:刪除

I:插入模組 (Instance)

S:拉伸工具 Stretch,要求是框選要拉伸圖形,再拉伸。我覺得這個拉伸工具是 Virtuoso 版圖設計區別於其他繪圖軟體的精華所在,能在保持圖形原有性質的前提下,自由拉伸。這個符合 Layout 佈局的要求。

R:畫矩形

Shift+P:多邊形工具 Polygon

P: 插入 Path(路徑)。這些最後都要 Convert to Polygon 的。

K:尺規工具

Shift+K:清除所有尺規

Shift+C:裁切 (Chop)

L:標籤工具,標籤要加在特定的 text 層上

 

2024年3月6日 星期三

Xilinx Vivado 使用GVIM設定步驟

 1. 先安裝好GVIM,開啟Vivado,選擇"Tools" > "Settings..."。


2. 選擇"Text Editor",在Curren Editor:下拉選單,選擇"Custom Editor..."。

3. 輸入GVIM路徑,因為我安裝的是GVIM 64位元的版本,因此這裡輸入
C:/Program Files/Vim/vim91/gvim.exe [file name] 
,輸入完成按"OK"。

4. 回到 Vivado 編輯欄位,點選任何一個verilog file就會開啟GVIM編輯器。






2023年10月10日 星期二

Allegro - 設定區域規則

1. 點選"Cmgr",設定規則限制設定。

2. 在Region點選"All Layers",之後再點選Name欄位下名稱,按"滑鼠右鍵",選擇"Create" > "Region..."。


3. 輸入名稱後按"OK"。


4. 依據設計需求,輸入限制參數。 

5. 點選"Shape":
Active Class and Subclass:
Constraint Region
All

Assign to Region:
Led(步驟3輸入的名稱)

最後框選需要設定的區域範圍。

2023年1月4日 星期三

OrCAD 電路圖設計-新增雙向Off-Page Connector

 1. 在OrCAD中Off-Page Connector只有向右與向左的符號,並沒有雙向符號,這樣無法表現出雙向匯流排的意涵,因此需要自己建立一個雙向Off-Page Connector,在OrCAD的安裝路徑下"..\tools\capture\library"下開啟"capsym.olb"檔。


2. 使用修改後另存新檔的方式建立一個雙向Off-Page Connector,點選"OFFPAGELEFT-L",修改圖示後,點選"File > Save As...",在Save Part As視窗中,名稱修改為"OFFPAGELEFT",按"OK"存檔。


3. 最後就可以在capsym.olb元件庫中看到新增的雙向Off-Page Connector元件。



2022年7月23日 星期六

STM32 使用DMA控制PWM輸出訊號

 這裡開發板MCU是使用"STM32F103C8T6"做實驗。 

1. SYS設定。

*Debug: Serial Wire

*勾選System Wake-Up


2. RCC設定。

High Speed Clock(HES): Crystal/Ceramic Resonator


3. TIM1設定。

Clock Source: Internal Clock

Channel1: PWM Generation CH1

設定好後,可以看到PIN腳PA8設定成PWM輸出。


注意: 如果PWM輸出訊號每次結束後,訊號要維持在低電位,要看PWM輸出訊號結束時,是在高電為還是低電位,來設定"CH  Polarity"為"Low" 或是 "High",因為"Low"、"High"這是一個訊號反向的設定。


4. 設定 Clock參數。

*PLL Source Mux: HSE
*System Clock Mux: PLLCLK
*HCLK(MHz): 72

設定好後,可以看到APB2 time clock(MHz) 等於72MHz,PWM的Tim Clock是以此為基礎。

5. TIM1 > Parameter Setting設定。

Prescaler(PSC - 16 bits value) : 72-1

Counter Period(AutoReload Register - 16 bits value): 1000

這裡設定Prescaler為72MHz~1MH範圍, 設定Counter Period為1000~1為頻率範圍,公式如下。

Tim Clock : 72MHz / 72 = 1MHz

Freq: 1MHz / 1000 = 1KHz 




6. TIM1 > DMA Setting設定。

按"Add" 增加DMA設定,DMA Request選擇"TIM1_CH1",Direction選擇"Memory To Peripheral", Mode設定成"Normal", Data Width都設定成"Half Word"。


7. 計畫管理設定。

*Project Name: 輸入計畫名稱
*Project Location: 設定存檔路徑
*Toolchain/IDE: MDK-ARM
設定完成按"GENERATE CODE"。

8. 建立一個矩陣,存放PWM高電位的時間,之前設定週期為1KHz,所以矩陣內參數100等於100us。

/* USER CODE BEGIN PD */

#define HPOT 10

uint16_t DataBuf[HPOT] = {900, 200, 300, 400, 500, 600, 700, 800, 900, 0};


9. 設定啟動PWM控制。

  /* USER CODE BEGIN 2 */

HAL_Delay(200);

        HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t*)&DataBuf, HPOT);


10. 設定PWM訊號輸出一次後關閉。

/* USER CODE BEGIN 0 */

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)

{

if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)

{

  HAL_TIM_PWM_Stop_DMA(htim, TIM_CHANNEL_1);

}

}


11. PWM輸出結果如下所示,Cursor量測出每一個週期為1KHz,共9個不同頻率的週期。

注意:不知道為什麼HPOT參數給10,最後指出來9個週期,因此矩陣最後一個參數我這裡直接設為0。