Skip to content

yhdev7935/Tabular-Method

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

2020-01 Digital Logic Design / Tabular Method

๊ฐ ํด๋ž˜์Šค์˜ ์šฉ๋„

  • Minterm ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ์˜ minterm๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, Don't Care๋„ ํฌํ•จํ•œ๋‹ค.
  • PITable ํด๋ž˜์Šค๋Š” ๊ฐ๊ฐ์˜ minterm๋ฅผ ํ•ฉ์น˜๊ณ  ๋”์ด์ƒ ํ•ฉ์น  ์ˆ˜ ์—†๋Š” minterm๋“ค์„ ๊ฐ€์ง€๊ณ  Pi Table๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • LogicExpression ํด๋ž˜์Šค๋Š” PiTable์—์„œ EPI๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , Row/Column Dominance๊นŒ์ง€ ์ง„ํ–‰ํ•œ ํ›„์—๋„ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์—†์„ ๋•Œ, Petrick's Method๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  • Main ํด๋ž˜์Šค๋Š” Minterm, PITable, LogicExpression ํด๋ž˜์Šค๋“ค์„ ๊ฐ€์ง€๊ณ  Quineโ€“McCluskey Algorithm๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ž…๋ ฅ

minterm๊ณผ don't care๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ Minterm ๊ฐ์ฒด์˜ ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

// sorting
Collections.sort(dontCareNumbers);
minterm = Minterm.sort(minterm);

์œ„ ์ฝ”๋“œ๋Š” Minterm๋“ค์„ # of 1s๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๋˜‘๊ฐ™์„ ๊ฒฝ์šฐ ๊ฐ Minterm์˜ ์ˆซ์ž ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์ •๋ ฌํ•œ๋‹ค. ์ฆ‰, Grouping ๊ณผ์ •์ด๋‹ค.

Step 1 : Find Prime Implicants

boolean flag = true;
while(flag)
	flag = combineImplicants(flag);

์œ„ ์ฝ”๋“œ๋Š” Minterm๋“ค์„ ๋”์ด์ƒ ํ•ฉ์น  ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๊ณ„์† ํ•ฉ์นœ๋‹ค.

Step 2 : Find Essential Prime Implicants

PITable pit = new PITable(notCombinedMinterm, origin_minterm, binarySize);

์œ„ ์ฝ”๋“œ๋Š” ๋”์ด์ƒ ๋ชปํ•ฉ์น˜๋Š” Minterm, ์ฒ˜์Œ ์ž…๋ ฅํ•œ Minterms, binary Size๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ PITable๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

pit.findEPI();

์œ„ ์ฝ”๋“œ๋Š” EPI๋ฅผ ์ฐพ๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •๊นŒ์ง€ ํฌํ•จํ•œ๋‹ค. ์‹ค์ œ๋กœ ๋ณด์—ฌ์ค„ ๋•Œ ์ œ๊ฑฐํ•œ ์ฑ„๋กœ ๋ณด์ธ๋‹ค.

if(pit.mintermValidation())
{
    pit.printResult();
    return;
}

์œ„ ์ฝ”๋“œ๋Š” EPI๋งŒ์œผ๋กœ ๋ชจ๋“  minterm๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ณ , ๊ฐ€๋Šฅํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค. ์‹คํŒจํ•œ๋‹ค๋ฉด Step 3์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

Step 3 : Minimum Cover

pit.columnDominace();
pit.rowDominace();

boolean validation = pit.mintermValidation();
if(validation == true)
{
    pit.printResult();
    return;
}

์œ„ ์ฝ”๋“œ๋Š” Row/Column Dominance๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ๋˜ ๋‹ค์‹œ minterm๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธํ•œ๋‹ค.
์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ NEPI๋ฅผ ๋”ฐ๋กœ ํ‘œ๊ธฐํ•˜์ง€ ์•Š๊ณ , EPI ์ œ๊ฑฐํ•˜๋“ฏ์ด ๋˜‘๊ฐ™์ด ์ž‘์—…ํ•œ๋‹ค.
์—ฌ๊ธฐ๊นŒ์ง€ ๊ณผ์ •๋งŒ์œผ๋กœ minterm๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค. ์‹คํŒจํ•œ๋‹ค๋ฉด Step 4์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

Step 4 : Petrick's Method

Petrick's Method๋ฅผ ์ด์šฉํ•ด ์‹์„ ์ „๊ฐœํ•˜๊ณ , minimizeํ•˜๊ณ , ๊ฐ€์žฅ ์งง์€ SOP์™€ EPI์™€ ํ•ฉ์ณ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
minimize๊ณผ์ •์€ X + XY = X๋งŒ ์ด์šฉํ–ˆ๋‹ค. X + X๋„ ํฌํ•จ๋˜์–ด ์žˆ๊ณ , HashSet๋ฅผ ์ด์šฉํ•˜๊ธฐ์— X * X์˜ ๊ฒฝ์šฐ๋„ ๋ฐฐ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

About

2020-01 Digital Logic Design / Tabular Method

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages