2020年8月14日 星期五

2020 Pi錢包三倍券加碼回饋機制決策分析

 Pi錢包說三倍券中的2000元每次消費的都會獲得p幣加碼回饋的抽獎機會

試問消費策略?消費越多次越佳或越少次越佳?

2020年1月5日 星期日

2019年1月9日 星期三

ARMv8-M資料

規格文件

ARMv8-M Architecture Reference Manual (ARM) - Link

TRM


Programming

Language: C language

Compiler - GCC (GNU C Compiler)

Linker 相關文件 GCC




範例:










Verilog 資源整理

網路資源

真○○亂舞:  https://www.cnblogs.com/oomusou/category/84456.html

Asic-world: http://www.asic-world.com/verilog

Verilog system task: https://www.csee.umbc.edu/portal/help/VHDL/verilog/system.html

AsicGuru: http://www.asicguru.com/

System Verilog 資源

Asic-world: http://www.asic-world.com/systemverilog/index.html


範例 Coding style

For Design

Combinational circuit - Mux

寫法1:
wire mux_out; // a 1-bit mux output
wire [1:0] mux_sel; // 2-bit mux select
wire [3:0] mux_in; // 4-bit mux input
assign mux_out = mux_sel == 2'b00 ? mux_in[0]:
                             mux_sel == 2'b01 ? mux_in[1]:

                             mux_sel == 2'b10 ? mux_in[2]: mux_in[3];
寫法2:
reg mux_out; // a 1-bit mux output
wire [1:0] mux_sel; // 2-bit mux select
wire [3:0] mux_in; // 4-bit mux input
always @(*)
  case(mux_sel)
    2'b00: mux_out = mux_in[0];
    2'b00: mux_out = mux_in[1];
    2'b00: mux_out = mux_in[2];
    2'b00: mux_out = mux_in[3];
    default: mux_out = mux_in[0];
  endcase


※寫combinational circuit,要用blocking assignment ( mux_out = mux_in[0] )

Sequential circuit - Flip Flop

reg   ff;  // 1-bit register
wire ff_next; // value that will be latched to ff at posedge CLK

always @( posedge CLK or negedge RESETn)
  if(~RESETn)
    ff <= 1'b0;  // asynchronous reset to 0
  else
    ff <= ff_next;


※寫ff,要用non-blocking assignment ( ff <= ff_next )


For Verification

DUT
Verilog

Verilog-Event
在寫Test bench時可使用 event 變數
event evt1; //宣告event變數
.觸發evt1:   ->evt1;
.等待evt1:   @(evt1) ...執行動作。

參考資料:
https://www.cnblogs.com/ZcsTech/p/3492988.html

System verilog





2018年9月9日 星期日

數位IC設計

有幸能踩進這IC產業,就來記錄一下自己對這個產業的認識吧。在跳進來之前,對這產業的故事只有網路上、書本上那些專有名詞,流程圖的概念,親身經歷才會對那些名詞有更具體的了解。

2018年2月25日 星期日

乙太網路區域網路設定與協定

理論的東西都比較不親民,看得都很累,但是學過理論之後不管遇到的問題是什麼就都會有方向去分析,處理。CCNA已經是好久以前看的東西了,不過到現在每當要設定網路、wifi分享器時還記得一些從CCNA學到的知識,設定時就很有感覺。

以下就從設定區域網路開始介紹(複習)吧。當初IPv6還是沒學好,所以就以IPv4為主吧
(雖說IPv6因為NAT緩解了IP不足的問題而發展得不好,一般家用網路也不太會用到就是了XD)

2018年2月2日 星期五

R 語言一學習



基本

查詢: 用'?' 或help。ex: "?list"

環境:

R 程式
IDE: R studio

命名:

可用字母,數字,'.',底線,因此'.' 非特殊字元,不可用'.', 底線開頭
ex:  a.b.c = 3

資料型態:

基本

數值(numeric):
  • integer
  • double
字串:
  • 用 '…' 或 "…"

組合型

  • list: 1-D,用list()宣告,用 [[…]] 取值
  • Array: 1-D,用 c() 宣告,用[]取值
  • factor: 用factor(..)宣告
  • data.frame:2-D,用
    • rownames(), colnames(),回傳資料
    • sapply(), vapply(),
    • 存取方式:
      1. 用 $, Objname$ColName,ex: x$Col.2
      2. 用[],index或ColName,ex: x[,'Col.2']
  • data.table: 2-D,比data.frame有更好的效能

    • 合併:join 
    • 格式 DT[i,j,by=...]
    • 重鑄資料:melt(), dcast()

常用函式:

  • str(),顯示物件結構
  • summary(),顯示物件概述
  • typeof(), 查詢物件資料型態
  • class()

流程控制

if{} else if{} else{}

for loop

Ex:
for (index in a) {
  print(index^2)
}

while loop

Ex:
while(index <= length(a) ){
  print(a[index]^2)
  index <- index + 1
}

array取值

x=[1:5]
x[x<3] := 1, 2
x[x!=3] := 1, 2, 4, 5

函數宣告

FunctionName <- function(parameter0, 1, 2 ...){ ...}
呼叫函式:FunctionName( parameter0 = ..., parameter1 = ...) 使用ParameterName傳參數。
return也是函式

檔案讀寫

readLine
read.csv
write.csv
fread
fwrite 


資料視覺化Library

1. 內鍵

2. Lattice

3. ggplot2










2017年12月1日 星期五

Make

Makefile 是一個歷史非常攸久的腳本程式,網路上的資源早就多到看都看不完,但每次要找相關的東西的時候還是常常找不到,所以用這篇來整理、筆記一下吧。

介紹

Makefile是一個在殼層環境(shell, ex: bash, tcsh,...)執行的程式,主要是被拿來做編譯程式碼使用,例如用Dev C++的開發環境來寫C語言,就可能會看到有個檔案叫"makefile" (介紹網址),用來幫你編譯出最終的程式。

運作概念

makefile運作(設計)的概念與一般程式、腳本程式(shell script, ex: tcsh, bash)不同,一般程式語言的執行流程多是從頭到尾,從上到下,從腳本的第一行執行到最後一行,而程式流程裡就會由流程控制的if, switch, while, for loop來控制程式碼如何執行,並透過函式(function)、任務(task)等功能來重複執行某些需要重複執行的工作。
例如流程是
==>  a產生b, a+b產生c,c*a產生d,而d是最終需要的東西。
簡單流程就會寫成:
#1 b = a
#2 c = a+b
#3 d = c*a
#4 output d

思考邏緝就是上述 ==>所寫的那樣。但makefile的邏輯是反過來看的,寫makefile注重的是"最終要的是什麼",也就是任務目標,知道任務目標後再來找尋"需要哪些東西"。
所以makefile流程會是
==> 最終要產生d,所以需要c和a,因為需要c,所以需要 a和b。所以會寫成
#1 d:   c   a
#2  target = depend1 * depend2
#3 c:   a   b
#4  target = depend1 + depend2

第一行指的是說要產生d,需要c和a,d就是目標(target);d的相依物(dependency),也就是指產生d所必要的材料,就是c和 a,然後透過第二行的步驟產生d。而第三、四行功能也類似,只是產生target所做的運算不同。
所以寫makefile基本上是以"目標"為出發點來寫的。這樣有個好處是,假如我要的最終目標是c而不是d,使用make file的話,腳本完全不用修改,只要告訴makefile說"我要的最終目標是c"那它就會去找a和b,來output c,而不像一般腳本語言的思考方式,要修改程式把最終要輸出的東西改成c。


功能整理

規則

target [target2 ... ]  : [dependency1 ... 2 ... 3 ...]   # ('#'為註解,中括號代表裡面的項目為選擇性)
(tab開頭代表指令)[@,-]command1

基本特殊變數



巨集指令


glob目標



網路資源:


2017年11月26日 星期日

2017年11月25日 星期六

密碼學技術

密碼學基本要素 (資安三要素)


  1. 機密性(confidentiality)
  2. 完整性(integrity)
  3. 可利用性(availability)

2020 Pi錢包三倍券加碼回饋機制決策分析

 Pi錢包說 “ 三倍券 ” 中的 2000 元每次消費的都會獲得 p 幣加碼回饋的抽獎機會 試問消費策略?消費越多次越佳或越少次越佳?