Monday, November 25, 2013

SourceInsight [H]

 

讓Source Insight顯示完整路徑名稱

Reference

[1]http://joseph0425.blogspot.tw/2007/03/source-insight.html

Putty [Q]garbled

無緣無故出現了一堆亂碼,測試了許久才找出問題。

有時候莫名其妙的問題真的會讓人束手無策。

原來其實是設定上有所不同,因為Serial Port同步問題是他最重要的部分。

這次是Parity的問題[1],這個設定主要是做資料確認。

有三個選項 odd, even和none。

簡單來說就是如果設定odd傳送出去的資料就必須為奇數,會透過Parity bit來做調整補償。

image

Reference

[1]http://en.wikipedia.org/wiki/Parity_bit

Sunday, November 17, 2013

ANSI escape code

printf是寫C語言程式Debug的主要方式,
但有時候列印出來時資料過長或是顯示相似,
其實這些都會造成閱讀時的困難。
其實,列印時可以用顏色來區分。
SGR (Select Graphic Rendition) parameterst
常看到的定義如下:
#define DBGLOG_NONE    "\x1b[00m"
#define DBGLOG_GREEN   "\x1b[32m"
#define DBGLOG_CYAN    "\x1b[36m"
#define DBGLOG_PURPLE  "\x1b[35m"
#define DBGLOG_RED     "\x1b[31m"
#define DBGLOG_YELLOW  "\x1b[33m"
依照DBGLOG_GREEN為例子,
\x1b[ 是啟用CSI的意思,
至於30代表所引值可以參考[1]以m做結尾。
此外,to get bold red, use \x1b[31;1m.
簡單來說就是執行31和1的索引值,對照表格可以得到bold red的顏色。
這樣就可以讓printf增加一些色彩。

Reference
[1]http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
[2]http://stackoverflow.com/questions/3219393/stdlib-and-colored-output-in-c

Thursday, November 14, 2013

計算機 Calculator

現在只能說工具軟體真的是越來越多功能,但想想其實有時候真的是畫蛇添足。

往往便利的工具只會造成使用者有了錯誤的迷思,或許不斷重複無趣的工作需要好的工具。

但在開發過程中,不好的工具才會讓工程師有更好的思考邏輯吧。

說了一大篇,其實只是想要分享一下我們常見的window的附屬工具"計算機"。

常常看到有個「MC、MR、M-、M+」

這有甚麼用呢?我看了很多說明,[1]是我看過最好的說明,就節錄有用的部分。

M+:記憶當前數字,「加入」累加數字當中。

M-:記憶當前數字,以負數的形式「加入」累加數字當中。

               換句話說,就是把總數扣除當前數字的意思。

MC:Memory Clean的意思,也就是將目前記憶的數字「歸零」。

MR:Memory Recall的意思,將當前計算出來的數字呈現出來。

MS:無視目前記憶多少數字,直接以當前數字取代記憶中的數字。

MU(Mark up or Mark down)、GT(General Total)、CE(Current Empty)

原文網址: 計算機「MC、MR、M-、M+」做啥用?民眾:20年來都不知 | ETtoday生活新聞 | ETtoday 新聞雲 http://www.ettoday.net/news/20120530/51013.htm#ixzz2kgGi8Iwa
Follow us: @ETtodaynet on Twitter | ETtoday on Facebook

Reference

[1]http://www.ettoday.net/news/20120530/51013.htm

Monday, November 11, 2013

Mail Term

常常跟國外的人寫信時,會看到一些很簡短的縮寫,這裡做一些整理。

CC : Carbon Copy

FYI : For Your Information

ASAP : As Soon As Possible

Mac Setting

How to change default browser?

 

Reference 

[1] http://www.wikihow.com/Change-the-Default-Web-Browser-in-Mac-OS-X

Thursday, November 7, 2013

Pipelined

這在設計組合語言(Assembly Code)是一個另一項觀念,通常我們C語言去撰寫程式再透過Compilar編譯成我們所需要的Machine Code,Compilar都將這些觀念給包裝起來了。

主要的概念精神在於instruction彼此之間在控制硬體時會相互影響。

以RISC pipeline最基本的五個間段為

IF –> ID –> EX –> MEM –> WB

Instruction fetch

Decode

Execute

Memory access

Write Back

這彼此之間會因為硬體設計不同而有所互相影響,

例如Data Hazard問題,在一段時間內不該使用同一個資源,這樣資料同步會出現問題。

簡單來說,第一秒下指令Write寫入資料D到位置A,馬上又在下一秒使用Read去A位置拿資料,但D的值要等到第三秒才能完整的寫入到A位置,此時錯誤的使用Read, Write會得到不預期的錯誤資料。

設計不當會造成下述三個問題,之後有機會再細部陳述這些問題。

Structure Hazards

Data Hazards

Control Hazards

Reference

http://en.wikipedia.org/wiki/Classic_RISC_pipeline

http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/hazards.html

Sinusoid (sine wave)

這裡稍微整理一下思緒,自己對於公式的了解,以及該如何在程式上撰寫。
首先,這裡用C語言來做個驗證,之前是用過Matlab不過時間有點久遠,卻忘了做下筆記。
C語言有提供sin()函式,範圍值 1 ~ -1符合sinusoid的條件。
函式的argument則是填入弳度量(radian measure),跟我們知道的角度(phrase)有些不同。
轉換公式為
弳度量 = 角度量(phrase) * pi / 180
pi = 3.14159285
我們都知道角度量範圍值 0 ~ 360度,之後就是一個循環,這是一個以正旋波為主軸的表示方式。
但場景如果轉換成以時間單位為主軸那該如何表示呢?
就把角度量用時間來區分開來,所以公式就變成
(t(now) * 360 / t) * (pi / 180) 簡化一下,t(now) * 2 * pi / t =  2 * pi * f * t(now)
於是就成為了我們常見的[1]
2 * pi * f * t = wt

Reference
[1]http://en.wikipedia.org/wiki/Sine_wave
http://tw.knowledge.yahoo.com/question/question?qid=1510101414866

Microsoft Visual Studio 2005

程式暫停(主要是讓設計可以觀察結果,或是等待下個操作)
在一般的command prompt可以加入這行指令。
system(“pause”);
在MVS環境下,Ctrl + F5就可以得到相同效果。
Reference
http://stackoverflow.com/questions/193469/how-to-make-visual-studio-pause-after-executing-a-console-app-in-debug-mode

Wednesday, November 6, 2013

Notepad++

 

HEX editor in plug in module

dB (Decibel)

 

簡單來說這是能量的比值表示法[1]。

關鍵詞會鎖定在gain/attenuation

amplitude跟power差一個次方。

常見3dB(2), 6dB(4), 20dB(100)

 

我們都知道C語言math.h[8]當中會有log(), log2(), log10()函式可以使用,

而這些函式是如何設計實現呢?

或換言之,在嵌入式系統中,我們該如何在有限的資源裡轉換dB值呢?

這都是一門技術。

這裡先簡單帶過之後有時間再做詳細介紹。

主要是透過Taylor expansion[4]和logarithm rule[3],透過一些誤差犧牲而換取有效的得到轉換值所產生的。

自然函數能利用Taylor expansion來呈現,若要轉換基底就透過一些對數規則[3]做轉換。

透過觀察[4]我們能知道Taylor expansion對於自然對數的呈現,若N級數很大的情況下在-1 ~ 1之間較為精準,若級數較小時-0.5 ~ 0.5較為精確。

 

Reference

[1]http://en.wikipedia.org/wiki/Decibel

http://en.wikipedia.org/wiki/Logarithm

[3]http://www.rapidtables.com/math/algebra/Logarithm.htm

[4]http://en.wikipedia.org/wiki/Taylor_series

http://en.wikipedia.org/wiki/Common_logarithm

[6]http://mathworld.wolfram.com/NaturalLogarithm.html

http://en.wikipedia.org/wiki/Natural_logarithm_of_2

[8]http://www.codecogs.com/library/computing/c/math.h/log.php

http://stackoverflow.com/questions/15967240/fastest-implementation-of-log2int-and-log2float

http://stackoverflow.com/questions/9411823/fast-log2float-x-implementation-c

Sunday, November 3, 2013

gcc for Window

GCC是一套好用的編譯器,想要設計簡單的程式用這就對了~~
Download mingw-get and simply issue:
mingw-get install gcc.

See the Getting Started page.
Reference

http://stackoverflow.com/questions/6394755/how-to-install-gcc-on-windows-7-machine

Register Transfer Level Design with Verilog (1) [ebook]

設計程式之所以有趣不外乎是它的千變萬化,同樣的結果卻有不同的寫法。 但這些不同寫法當中也並沒有分誰對誰錯,也沒有制定標準來規範何事該用何解。 這也就是我們設計者的珍貴!! [1] Primitive Instantiations 在Verilog中最基本的邏輯...