MaxPlus Tutorial.pdf

‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﻣﻘﺪﻣﻪ‬
‫ﻧــﺮﻡ ﺍﻓــﺰﺍﺭ ‪ Max+Plus II‬ﺍﺑــﺰﺍﺭ ﺳــﻨﺘﺰﻱ ﺍﺳــﺖ ﻛــﻪ ﺗﻮﺳــﻂ ﺷــﺮﻛﺖ ‪ Altera‬ﺑــﺮﺍﻱ ﻃﺮﺍﺣــﻲ ﻣــﺪﺍﺭﻫﺎﻱ‬
‫ﺩﻳﺠﻴﺘﺎﻝ ﺑـﻪ ﺑـﺎﺯﺍﺭ ﻋﺮﺿـﻪ ﺷـﺪﻩ ﺍﺳـﺖ‪ .‬ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳـﻦ ﻧـﺮﻡﺍﻓـﺰﺍﺭ‪ ،‬ﻛـﺎﺭﺑﺮ ﻣـﻲﺗﻮﺍﻧـﺪ ﻣـﺪﺍﺭ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺧـﻮﺩ ﺭﺍ‬
‫ﺑﺼــﻮﺭﺕ ﺷــﻤﺎﺗﻴﻚ‪ ،‬ﺷــﻜﻞ ﻣــﻮﺝ‪ ،‬ﺯﺑﺎﻧﻬــﺎﻱ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖ ﺍﻓــﺰﺍﺭﻱ ‪ VHDL ، AHDL‬ﻭ ‪ Verilog‬ﻭ ﻳــﺎ‬
‫ﺗﺮﻛﻴﺒﻲ ﺍﺯ ﺁﻧﻬﺎ ﺗﻮﺻـﻴﻒ ﻛﻨـﺪ‪ .‬ﺳـﭙﺲ ﺍﻳـﻦ ﻣـﺪﺍﺭ ﺑﻌﻨـﻮﺍﻥ ﻭﺭﻭﺩﻱ ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﺩﺭﻳﺎﻓـﺖ ﺷـﺪﻩ ﻭ ﭘـﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﻣـﺪﺍﺭ‬
‫ﻛﺎﻣﭙﺎﻳـﻞ ﺷـﺪ‪ ،‬ﺑـﺮ ﺭﻭﻱ ﻳــﻚ ﺗﺮﺍﺷـﻪﻱ ﺧـﺎﺹ )ﺍﺯ ﺗﺮﺍﺷــﻪ ﻫـﺎﻱ ‪ (Altera‬ﻧﮕﺎﺷـﺖ ﻣـﻲﺷــﻮﺩ‪ .‬ﺩﺭ ﺍﻳـﻦ ﺣﺎﻟـﺖ ﻛــﺎﺭﺑﺮ‬
‫ﻣﻲﺗﻮﺍﻧﺪ ﺑﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﻗﺎﺑﻠﻴﺘﻬـﺎﻳﻲ ﻛـﻪ ﺩﺭ ﺍﻳـﻦ ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﺗﻌﺒﻴـﻪ ﺷـﺪﻩ ﺍﺳـﺖ‪ ،‬ﺷـﻜﻞ ﻣـﻮﺝ ﻭﺭﻭﺩﻳﻬـﺎﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ‬
‫ﺧﻮﺩ ﺭﺍ ﺑﻪ ﻣﺪﺍﺭ ﺍﻋﻤﺎﻝ ﻛﻨﺪ ﻭ ﺧﺮﻭﺟﻴﻬﺎﻱ ﻣﺪﺍﺭ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻛﻨﺪ‪.‬‬
‫ﺩﺭ ﺍﻳــﻦ ﮔــﺰﺍﺭﺵ ﺗــﻼﺵ ﺷــﺪﻩ ﺍﺳــﺖ ﻛــﻪ ﭼﮕــﻮﻧﮕﻲ ﻃﺮﺍﺣــﻲ ﻣــﺪﺍﺭﻫﺎﻱ ﺩﻳﺠﻴﺘــﺎﻝ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ‬
‫‪ Max+Plus II 8.3‬ﺑﺼـﻮﺭﺕ ﺳـﺎﺩﻩ ﻣـﻮﺭﺩ ﺑﺮﺭﺳـﻲ ﻗـﺮﺍﺭ ﺑﮕﻴـﺮﺩ‪ .‬ﺍﻳـﻦ ﮔـﺰﺍﺭﺵ ﺩﺭ ﭘـﻨﺞ ﺑﺨـﺶ ﺗﻨﻈـﻴﻢ ﺷـﺪﻩ ﺍﺳـﺖ‪.‬‬
‫ﺩﺭ ﺑﺨــﺶ ﻧﺨﺴــﺖ ﺑــﺎ ﻃﺮﺍﺣــﻲ ﻣــﺪﺍﺭ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑــﺎﻥ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖﺍﻓــﺰﺍﺭﻱ ‪ VHDL‬ﺁﺷــﻨﺎ ﻣــﻲﺷــﻮﻳﻢ‪ .‬ﺩﺭ‬
‫ﺑﺨﺶ ﺩﻭﻡ ﻃﺮﺍﺣﻲ ﻣﺪﺍﺭ ﺑﻪ ﺭﻭﺵ ﺷـﻤﺎﺗﻴﻚ ﻣـﻮﺭﺩ ﺑﺮﺭﺳـﻲ ﻗـﺮﺍﺭ ﻣـﻲﮔﻴـﺮﺩ‪ .‬ﺩﺭ ﺑﺨـﺶ ﺳـﻮﻡ ﻃﺮﺍﺣـﻲ ﻣـﺪﺍﺭ ﺗﻮﺳـﻂ‬
‫ﺯﺑﺎﻥ ﺗﻮﺻـﻴﻒ ﺳـﺨﺖ ﺍﻓـﺰﺍﺭﻱ ‪ AHDL‬ﺭﺍ ﻣـﻮﺭﺩ ﺑﺮﺭﺳـﻲ ﻗـﺮﺍﺭ ﻣـﻲﺩﻫـﻴﻢ‪ .‬ﺩﺭ ﺑﺨـﺶ ﭼﻬـﺎﺭﻡ ﻣـﺮﻭﺭﻱ ﻣﺨﺘﺼـﺮ ﺑـﺮ‬
‫ﺯﺑﺎﻥ ﺗﻮﺻـﻴﻒﺳـﺨﺖﺍﻓـﺰﺍﺭﻱ ‪ VHDL‬ﺧـﻮﺍﻫﻴﻢ ﺩﺍﺷـﺖ‪ .‬ﺩﺭ ﺑﺨـﺶ ﭘـﻨﺠﻢ ﺯﺑـﺎﻥ ﺗﻮﺻـﻴﻒﺳـﺨﺖﺍﻓـﺰﺍﺭﻱ ‪ AHDL‬ﺭﺍ‬
‫ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ ﻣﻲﺩﻫﻴﻢ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﮔﺰﺍﺭﺵ ﺑﺮﺍﻱ ﺳﺎﺩﮔﻲ ﺍﺯ ﻧﻤﺎﺩﻫﺎﻱ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪Double click the left button of mouse‬‬
‫‪Click the left button of mouse‬‬
‫‪Click the right button of mouse‬‬
‫‪Select Option1 from Menu1‬‬
‫ﺻﻔﺤﻪﻱ ‪١‬‬
‫>‪<DL‬‬
‫>‪<LB‬‬
‫>‪<RB‬‬
‫‪<M> Menu1: Option1‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪١‬‬
‫ﻃﺮﺍﺣﻲ ﻣﺪﺍﺭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪VHDL‬‬
‫ﺑــﺮﺍﻱ ﺗﻮﺿــﻴﺢ ﺭﻭﺵ ﻃﺮﺍﺣــﻲ ﻣــﺪﺍﺭ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑــﺎﻥ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖﺍﻓــﺰﺍﺭﻱ ‪ VHDL‬ﺍﺑﺘــﺪﺍ ﻳــﻚ‬
‫ﺳــﻠﻮﻝ ‪ Half Adder‬ﻃﺮﺍﺣــﻲ ﻛــﺮﺩﻩ ﻭ ﺳــﭙﺲ ﺑــﺎ ﺍﺗﺼــﺎﻝ ﺩﻭ ﻋــﺪﺩ ﺍﺯ ﺍﻳــﻦ ﺳــﻠﻮﻟﻬﺎ ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ ﻳــﻚ ﺳــﻠﻮﻝ‬
‫ﺟﻤﻊﻛﻨﻨـﺪﻩﻱ ‪ Full Adder‬ﻣـﻲﺳـﺎﺯﻳﻢ ﻭ ﺩﺭ ﭘﺎﻳـﺎﻥ ﺑـﺎ ﺍﺗﺼـﺎﻝ ﺍﻳـﻦ ﺳـﻠﻮﻟﻬﺎ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻳـﻚ ﺟﻤـﻊﻛﻨﻨـﺪﻩﻱ ﭼﻬـﺎﺭ‬
‫ﺑﻴﺘﻲ ﻣﻲﺳﺎﺯﻳﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪١-١‬‬
‫ﺍﺟﺮﺍﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+Plus II‬‬
‫ﺑﺮﺍﻱ ﺍﺟﺮﺍﻱ ﺑﺮﻧﺎﻣﻪﻱ‪ Max+Plus II‬ﻛﺎﻓﻴﺴﺖ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﻢ ‪:‬‬
‫‪<DL> on Max+Plus II icon on desktop‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﺍﻱ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ١-١‬ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪ .‬ﺑﺨﺸــﻬﺎﻱ ﻣﺨﺘﻠــﻒ ﺍﻳــﻦ ﭘﻨﺠــﺮﻩ‬
‫ﺭﻭﻱ ﺷﻜﻞ ﻣﺸﺨﺺ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪Tittle bar displays drive,‬‬
‫‪directory and project name‬‬
‫‪Menu Bar‬‬
‫‪Toolbar‬‬
‫‪Status Bar‬‬
‫ﺷﻜﻞ ‪ -١-١‬ﭘﻨﺠﺮﻩﻱ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+Plus II‬‬
‫ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﻲﺗﻮﺍﻥ ﻫﺮ ﻳﻚ ﺍﺯ ﻣﻮﺍﺭﺩ ‪ Tool bar‬ﻭ ‪ Status bar‬ﺭﺍ ﻓﻌﺎﻝ ﻭ ﻳﺎ ﻏﻴﺮ ﻓﻌﺎﻝ ﻧﻤﻮﺩ‪.‬‬
‫‪<M> Options: Prefrence‬‬
‫ﺑﺮﺍﻱ ﺧﺮﻭﺝ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> File: Exit Max+plus II‬‬
‫ﺻﻔﺤﻪﻱ ‪٢‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪٢-١‬‬
‫ﺍﻳﺠﺎﺩ ﭘﺮﻭﮊﻩﻱ ﺟﺪﻳﺪ‬
‫ﺩﺭ ﺍﻳــﻦ ﻧــﺮﻡ ﺍﻓــﺰﺍﺭ ﻫــﺮ ﻃــﺮﺡ ﺟﺪﻳــﺪ ) ﻛــﻪ ﻣﻤﻜــﻦ ﺍﺳــﺖ ﺍﺯ ﭼﻨــﺪﻳﻦ ﺯﻳــﺮ ﻃــﺮﺡ ﺗﺸــﻜﻴﻞ ﺷــﺪﻩ ﺑﺎﺷــﺪ (‬
‫ﺗﻮﺳﻂ ﻳﻚ ﭘﺮﻭﮊﻩ ﻣﺪﻳﺮﻳﺖ ﻣﻲﺷـﻮﺩ‪ .‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﺑـﺮﺍﻱ ﺍﻳﺠـﺎﺩ ﻳـﻚ ﻃـﺮﺡ ﺟﺪﻳـﺪ ﻧﺨﺴـﺖ ﺑﺎﻳـﺪ ﻳـﻚ ﭘـﺮﻭﮊﻩﻱ ﺟﺪﻳـﺪ‬
‫ﺍﻳﺠﺎﺩ ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> File: Project: Name‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﻳــﻚ ﭘﻨﺠــﺮﻩ ﻣﺸــﺎﺑﻪ ﺷــﻜﻞ ‪ ٢-١‬ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪ .‬ﺩﺭ ﺍﻳﻨﺠــﺎ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ﺩﺍﻳﺮﻛﺘــﻮﺭﻱ‬
‫‪ mydesign‬ﻭ ﻧﺎﻡ ﭘﺮﻭﮊﻩ ﺭﺍ ‪ adder‬ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<LB> on OK‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟـــﺖ ﻧـــﺎﻡ ﻭ ﺩﺍﻳﺮﻛﺘـــﻮﺭﻱ ﭘـــﺮﻭﮊﻩ ﺑـــﺮ ﺭﻭﻱ ‪ Tittle bar‬ﭘﻨﺠـــﺮﻩﻱ ‪ Max+PlusII‬ﻧﻤـــﺎﻳﺶ ﺩﺍﺩﻩ‬
‫ﻣﻲﺷﻮﺩ‪.‬‬
‫‪Enter project‬‬
‫‪name here‬‬
‫‪All design files‬‬
‫‪in the current‬‬
‫‪directory will‬‬
‫‪be shown here‬‬
‫‪Select project‬‬
‫‪directory from‬‬
‫‪list box‬‬
‫ﺷﻜﻞ‪ -٢-١‬ﭘﻨﺠﺮﻩﻱ ﺗﻌﻴﻴﻦ ﻧﺎﻡ ﭘﺮﻭﮊﻩ‬
‫‪٣-١‬‬
‫ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﻧـﺎﻡ ﭘـﺮﻭﮊﻩ ﺭﺍ ﻣﺸـﺨﺺ ﻛـﺮﺩﻳﻢ‪ ،‬ﺑﺎﻳـﺪ ﻃﺮﺣﻬـﺎﻳﻲ ﺭﺍ ﻛـﻪ ﺩﺭ ﺍﻳـﻦ ﭘـﺮﻭﮊﻩ ﻣـﻮﺭﺩ ﺍﺳـﺘﻔﺎﺩﻩ ﻗـﺮﺍﺭ‬
‫ﻣﻲﮔﻴﺮﺩ ‪ ،‬ﺑﻪ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﺍﺿﺎﻓﻪ ﻛﻨـﻴﻢ‪ .‬ﺍﻳـﻦ ﺍﻣـﺮ ﺑﺼـﻮﺭﺕ ﺍﻳﺠـﺎﺩ ﻓﺎﻳﻠﻬـﺎﻱ ﺟﺪﻳـﺪ ﺻـﻮﺭﺕ ﻣـﻲﮔﻴـﺮﺩ‪ .‬ﺩﺭ ﺍﻳﻨﺠـﺎ ﺍﺑﺘـﺪﺍ‬
‫ﻳــﻚ ﺳــﻠﻮﻝ ‪ Half Adder‬ﻃﺮﺍﺣــﻲ ﻛــﺮﺩﻩ ﻭ ﺳــﭙﺲ ﺑــﺎ ﺍﺗﺼــﺎﻝ ﺩﻭ ﻋــﺪﺩ ﺍﺯ ﺍﻳــﻦ ﺳــﻠﻮﻟﻬﺎ ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ ﻳــﻚ ﺳــﻠﻮﻝ‬
‫ﺟﻤﻊﻛﻨﻨـﺪﻩﻱ ‪ Full Adder‬ﻣـﻲﺳـﺎﺯﻳﻢ ﻭ ﺩﺭ ﭘﺎﻳـﺎﻥ ﺑـﺎ ﺍﺗﺼـﺎﻝ ﺍﻳـﻦ ﺳـﻠﻮﻟﻬﺎ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻳـﻚ ﺟﻤـﻊﻛﻨﻨـﺪﻩﻱ ﭼﻬـﺎﺭ‬
‫ﺑﻴﺘﻲ ﻣﻲﺳﺎﺯﻳﻢ‪ .‬ﺑﺎﻳﺪ ﺩﻗﺖ ﺩﺍﺷﺖ ﻛﻪ ﻫﻤﻴﺸﻪ ﺑﺎﻳﺪ ﻧﺎﻡ ﭘﺮﻭﮊﻩ ﺑﺎ ﻧﺎﻡ ﻣﺪﺍﺭ ﺩﺭ ﺑﺎﻻﺗﺮﻳﻦ ﺳﻄﺢ ﻳﻜﺴﺎﻥ ﺑﺎﺷﺪ‪.‬‬
‫‪<M> File: New‬‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻦ ﺍﻣـﺮ ﭘﻨﺠـﺮﻩﻱ ﺍﻳﺠـﺎﺩ ﻓﺎﻳـﻞ ﺟﺪﻳـﺪ ﻣﻄـﺎﺑﻖ ﺷـﻜﻞ ‪ ٣-١‬ﺑـﺮ ﺭﻭﻱ ﺻـﻔﺤﻪ ﻧﻤـﺎﻳﺶ ﺩﺍﺩﻩ ﻣـﻲﺷـﻮﺩ‪.‬‬
‫ﺣﺎﻝ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪Select Text Editor file‬‬
‫‪<LB> on OK‬‬
‫ﺻﻔﺤﻪﻱ ‪٣‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٣-١‬ﭘﻨﺠﺮﻩﻱ ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﭘــﺲ ﺍﺯ ﺍﻧﺠــﺎﻡ ﺍﻳــﻦ ﻋﻤﻠﻴــﺎﺕ‪ ،‬ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻣﺘﻨــﻲ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ٤-١‬ﺑــﺮ ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ‬
‫ﻣــﻲﺷــﻮﺩ‪ .‬ﺍﻳــﻦ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻗﺎﺑﻠﻴــﺖ ﻭﻳــﺮﺍﻳﺶ ﻓﺎﻳﻠﻬــﺎﻱ ﺯﺑﺎﻧﻬــﺎﻱ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖﺍﻓــﺰﺍﺭﻱ ‪ Verilog ،VHDL‬ﻭ‬
‫‪ AHDL‬ﺭﺍ ﺩﺍﺭﺍﺳـﺖ‪ .‬ﺑﻨــﺎﺑﺮﺍﻳﻦ ﭘـﻴﺶ ﺍﺯ ﺁﻧﻜــﻪ ﺗﻮﺻــﻴﻒ ﻣـﺪﺍﺭ ﺭﺍ ﻭﺍﺭﺩ ﻛﻨــﻴﻢ‪ ،‬ﺑﻬﺘـﺮ ﺍﺳــﺖ ﭘﺴــﻮﻧﺪ ﻓﺎﻳـﻞ ﻣﺘﻨــﻲ ﻣــﻮﺭﺩ‬
‫ﻧﻈﺮ ﺧﻮﺩ ﺭﺍ ﻣﺸﺨﺺ ﻛﻨـﻴﻢ‪ .‬ﺑـﺎ ﺍﻳـﻦ ﺍﻣـﺮ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺗﺸـﺨﻴﺺ ﻣـﻲﺩﻫـﺪ ﺑـﺮﺍﻱ ﻧﻤـﺎﻳﺶ ﺭﻧﮕـﻲ ﻛﻠﻤـﺎﺕ ﻛﻠﻴـﺪﻱ ﺍﺯ‬
‫ﻗﻮﺍﻋﺪ ﻧﺤﻮﻱ ﭼﻪ ﺯﺑﺎﻧﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﭘﻴﺶ ﺍﺯ ﻭﺭﻭﺩ ﺍﻃﻼﻋﺎﺕ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪Type your VHDL code here‬‬
‫ﺷﻜﻞ ‪ -٤-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻣﺘﻨﻲ‬
‫ﺑﺮﺍﻱ ﺫﺧﻴﺮﻩ ﻛﺮﺩﻥ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪٤‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪<M> File: Save As‬‬
‫ﺩﺭ ﭘﻨﺠـﺮﻩﻱ ﻇـﺎﻫﺮ ﺷــﺪﻩ ﻧـﺎﻡ ‪ ha_1bit‬ﺭﺍ ﺑﻌﻨـﻮﺍﻥ ﻧــﺎﻡ ﻓﺎﻳـﻞ ﻭﺍﺭﺩ ﻣـﻲﻛﻨــﻴﻢ )ﺷـﻜﻞ ‪ ٥-١‬ﺭﺍ ﺑﺒﻴﻨﻴـﺪ(‪ .‬ﺗﻮﺟــﻪ‬
‫ﻛﻨﻴﺪ ﻛﻪ ﺩﺭ ﺑﺨﺶ ﻣﺮﺑـﻮﻁ ﺑـﻪ ﻧـﻮﻉ ﻓﺎﻳـﻞ ﺣﺘﻤـﺎ ﭘﺴـﻮﻧﺪ ‪ vhd‬ﺭﺍ ﺍﻧﺘﺨـﺎﺏ ﻛﻨﻴـﺪ )ﭘﺴـﻮﻧﺪ ﻓﺎﻳﻠﻬـﺎﻱ ‪ VHDL‬ﺑﺼـﻮﺭﺕ‬
‫‪ vhd‬ﻣﻲﺑﺎﺷﺪ(‪.‬‬
‫‪<LB> on OK‬‬
‫ﺑــﺮﺍﻱ ﻭﺍﺭﺩ ﻛــﺮﺩﻥ ﻛــﺪ‪ ،‬ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻣﺘﻨــﻲ ﺩﺍﺭﺍﻱ ﻳــﻚ ﻗﺎﺑﻠﻴــﺖ ﺑﺴــﻴﺎﺭ ﻣﻨﺎﺳــﺐ ﺑﻨــﺎﻡ ‪ Template‬ﺍﺳــﺖ ﻛــﻪ‬
‫ﺍﻟﮕﻮﻳﻲ ﺍﺯ ﺑﻴﺸﺘﺮ ﺳـﺎﺧﺘﺎﺭﻫﺎﻱ ﺯﺑـﺎﻥ ﺭﺍ ﺩﺭ ﺍﺧﺘﻴـﺎﺭ ﺷـﻤﺎ ﻗـﺮﺍﺭ ﻣـﻲﺩﻫـﺪ‪ .‬ﺑـﺮﺍﻱ ﺩﺳﺘﺮﺳـﻲ ﺑـﻪ ﺍﻳـﻦ ﻗﺎﺑﻠﻴـﺖ ﻛﺎﻓﻴﺴـﺖ‬
‫ﺩﺭ ﺣﺎﻟﻴﻜﻪ ﻣﺎﻭﺱ ﺭﻭﻱ ﺻـﻔﺤﻪ ﻣﺘﻨـﻲ ﺩﺭ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺍﺳـﺖ‪ ،‬ﺑـﺎ ﻛﻠﻴـﺪ ﺳـﻤﺖ ﺭﺍﺳـﺖ ﻣـﺎﻭﺱ ﻛﻠﻴـﻚ ﻛﻨـﻴﻢ ﻭ‬
‫ﺳــﭙﺲ ﺩﺭ ﻣﻨــﻮﻱ ‪ Case Sensitive‬ﻇــﺎﻫﺮ ﺷــﺪﻩ ﮔﺰﻳﻨــﻪﻱ ‪ VHDL‬ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﺍﻱ‬
‫ﻣﻄﺎﺑﻖ ﺷـﻜﻞ ‪ ٦-١‬ﺭﻭﻱ ﺻـﻔﺤﻪ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ ﻛـﻪ ﻣـﻲﺗـﻮﺍﻥ ﺍﺯ ﺁﻥ ﺍﻟﮕـﻮﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ ﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩ ﻭ ﻛﻠﻴـﺪ‬
‫‪ Ok‬ﺭﺍ ﺯﺩ‪ .‬ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﻳﻚ ﻛﭙﻲ ﺍﺯ ﺍﻟﮕـﻮﻱ ﺍﻳـﻦ ﺳـﺎﺧﺘﺎﺭ ﺩﺭ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ ﻭ ﺣـﺎﻻ ﻣـﻲﺗـﻮﺍﻥ‬
‫ﺍﻳــﻦ ﺍﻟﮕــﻮ ﺭﺍ ﺑــﺮ ﺍﺳــﺎﺱ ﻧﻴــﺎﺯ ﺗﻐﻴﻴــﺮ ﺩﺍﺩ‪ .‬ﺍﻳــﻦ ﻗﺎﺑﻠﻴــﺖ ﻛــﺎﺭﺑﺮ ﺭﺍ ﺍﺯ ﺑــﻪ ﺧــﺎﻃﺮ ﺳــﭙﺮﺩﻥ ﺍﻟﮕــﻮﻱ ﺳــﺎﺧﺘﺎﺭﻫﺎﻱ ﺯﺑــﺎﻥ‬
‫ﺑﻲﻧﻴﺎﺯ ﻣﻲﺳﺎﺯﺩ‪.‬‬
‫‪Enter design‬‬
‫‪filename here‬‬
‫‪Select design‬‬
‫‪file type‬‬
‫ﺷﻜﻞ ‪ -٥-١‬ﭘﻨﺠﺮﻩﻱ ﺫﺧﻴﺮﻩﻱ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﺻﻔﺤﻪﻱ ‪٥‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٦-١‬ﭘﻨﺠﺮﻩﻱ ﺍﻟﮕﻮﻱ ‪VHDL‬‬
‫ﺑــﺮﺍﻱ ﻣﺜــﺎﻝ ﺍﮔــﺮ ﺍﺯ ﭘﻨﺠــﺮﻩﻱ ﺍﻟﮕــﻮﻱ ‪ VHDL‬ﮔﺰﻳﻨــﻪﻱ ‪ Entity Declaration‬ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ ﻭ ﻛﻠﻴــﺪ‬
‫‪ OK‬ﺭﺍ ﺑﺮﻧﻴﻢ‪ ،‬ﻛﺪﻱ ﻣﺸـﺎﺑﻪ ﻟﻴﺴـﺖ ‪ ١-١‬ﺩﺭ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ‪ ،‬ﻛـﻪ ﻛـﺎﺭﺑﺮ ﻣـﻲﺗﻮﺍﻧـﺪ ﺑـﺎ ﺗﻐﻴﻴـﺮ ﻧـﺎﻡ‬
‫‪ Entity‬ﻭ ﻧﺎﻡ ﭘﻮﺭﺗﻬﺎﻱ ﻭﺭﻭﺩﻱ‪ ،‬ﺧﺮﻭﺟﻲ ﻭ ﭘﻮﺭﺗﻬﺎﻱ ﺩﻭﺳﻮﻳﻪ ﺗﻮﺻﻴﻒ ﻣﻮﺭﺩ ﻧﻈﺮ ﺧﻮﺩ ﺭﺍ ﺑﻴﺎﻥ ﻛﻨﺪ‪.‬‬
‫‪ENTITY __entity_name IS‬‬
‫;‪GENERIC(__parameter_name : string := __default_value‬‬
‫;)‪__parameter_name : integer:= __default_value‬‬
‫(‪PORT‬‬
‫;‪__input_name, __input_name : IN STD_LOGIC‬‬
‫;)‪__input_vector_name : IN STD_LOGIC_VECTOR(__high DOWNTO __low‬‬
‫;‪__bidir_name, __bidir_name : INOUT STD_LOGIC‬‬
‫;)‪__output_name, __output_name : OUT STD_LOGIC‬‬
‫;‪END __entity_name‬‬
‫ﻟﻴﺴﺖ ‪ -١-١‬ﺍﻟﮕﻮﻱ ‪Entity‬‬
‫ﺩﺭ ﺷــﻜﻞ ‪ (a) ٧-١‬ﻧﻤــﻮﺩﺍﺭ ﻣﻨﻄﻘــﻲ ﺳــﻠﻮﻝ ‪ Half Adder‬ﺁﻣــﺪﻩ ﺍﺳــﺖ‪ .‬ﺩﺭ ﺷــﻜﻞ ‪ (b) ٧-١‬ﻭﺭﻭﺩﻱ ﻭ‬
‫ﺧﺮﻭﺟﻴﻬــﺎﻱ ﺍﻳــﻦ ﺳــﻠﻮﻝ ﻧﻤــﺎﻳﺶ ﺩﺍﺩﻩ ﺷــﺪﻩﺍﻧــﺪ‪ .‬ﺍﻛﻨــﻮﻥ ﺗﻮﺻــﻴﻒ ﺳــﻠﻮﻝ ‪ Half Adder‬ﺭﺍ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑــﺎﻥ‬
‫‪ VHDL‬ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻣﺘﻨــﻲ ﻭﺍﺭﺩ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺍﻳــﻦ ﺗﻮﺻــﻴﻒ ﺩﺭ ﻟﻴﺴــﺖ ‪ ٢-١‬ﺁﻣــﺪﻩ ﺍﺳــﺖ‪ .‬ﻧﻜﺘــﻪﺍﻱ ﻛــﻪ‬
‫ﺑﺎﻳﺪ ﺑﻪ ﺁﻥ ﺗﻮﺟـﻪ ﺩﺍﺷـﺖ ﺍﻳـﻦ ﺍﺳـﺖ ﻛـﻪ ﻫﻤﻴﺸـﻪ ﻧـﺎﻡ ‪ entity‬ﺑﺎﻳـﺪ ﺑـﺎ ﻧـﺎﻡ ﻓﺎﻳـﻞ ﺣـﺎﻭﻱ ﺁﻥ ﻳﻜﺴـﺎﻥ ﺑﺎﺷـﺪ‪ .‬ﺗﻮﺟـﻪ‬
‫ﻛﻨﻴــﺪ ﻛــﻪ ﺑــﺮﺍﻱ ﻗﺎﺑــﻞ ﺳــﻨﺘﺮ ﺑــﻮﺩﻥ ﻃــﺮﺡ ﺑﺎﻳــﺪ ﺑﺠــﺎﻱ ﻧــﻮﻉ ﺩﺍﺩﻩﺍﻱ ‪ bit‬ﺍﺯ ‪ std_logic‬ﺍﺳــﺘﻔﺎﺩﻩ ﺷــﻮﺩ‪ .‬ﺗﻌﺮﻳــﻒ ﺍﻳــﻦ‬
‫ﻧﻮﻉ ﺩﺍﺩﻩﺍﻱ ﺩﺭ ﻛﺘﺎﺑﺨﺎﻧﻪﻱ ‪ IEEE‬ﻭ ﺩﺭ ﺑﺴﺘﻪﻱ ‪ std_logic_1164‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪٦‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪s‬‬
‫‪x‬‬
‫‪y‬‬
‫‪s‬‬
‫‪x‬‬
‫‪HA‬‬
‫‪y‬‬
‫‪c‬‬
‫‪c‬‬
‫)‪(a‬‬
‫)‪(b‬‬
‫ﺷﻜﻞ ‪ (a) -٧-١‬ﻧﻤﻮﺩﺍﺭ ﻣﻨﻄﻘﻲ ﺳﻠﻮﻝ ‪ (b) Half Adder‬ﺳﻠﻮﻝ ‪Half Adder‬‬
‫;‪LIBRARY IEEE‬‬
‫;‪USE IEEE.std_logic_1164.ALL‬‬
‫‪ENTITY ha_1bit IS‬‬
‫(‪PORT‬‬
‫;‪x, y : IN std_logic‬‬
‫;) ‪s, c : OUT std_logic‬‬
‫;‪END ha_1bit‬‬
‫‪ARCHITECTURE gate_level OF ha_1bit IS‬‬
‫‪BEGIN‬‬
‫;‪s <= x XOR y‬‬
‫;‪c <= x AND y‬‬
‫;‪END gate_level‬‬
‫ﻟﻴﺴﺖ ‪ -٢-١‬ﺗﻮﺻﻴﻒ ‪Half Adder‬‬
‫ﺣــﺎﻝ ﺑــﺎ ﺍﺗﺼــﺎﻝ ﺩﻭ ﺳــﻠﻮﻝ ‪ Half Adder‬ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ ﻳــﻚ ﺳــﻠﻮﻝ ‪ Full Adder‬ﻣــﻲﺳــﺎﺯﻳﻢ‪ .‬ﺩﺭ‬
‫ﺷﻜﻞ ‪ ٨-١‬ﭼﮕﻮﻧﮕﻲ ﺍﺗﺼـﺎﻝ ﺍﻳـﻦ ﺳـﻠﻮﻟﻬﺎ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻧﻤـﺎﻳﺶ ﺩﺍﺩﻩ ﺷـﺪﻩ ﺍﺳـﺖ‪ .‬ﺍﻛﻨـﻮﻥ ﻳـﻚ ﻓﺎﻳـﻞ ﻣﺘﻨـﻲ ﺟﺪﻳـﺪ‬
‫ﺩﻳﮕــﺮ ﺍﻳﺠــﺎﺩ ﻣــﻲﻛﻨــﻴﻢ ﻭ ﺁﻧــﺮﺍ ﺑــﺎ ﻧــﺎﻡ ‪ fa_1bit‬ﺫﺧﻴــﺮﻩ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺍﻳــﻦ ﻓﺎﻳــﻞ ﺣــﺎﻭﻱ ﺗﻮﺻــﻴﻒ ﻳــﻚ ﺳــﻠﻮﻝ‬
‫ﺟﻤﻊﻛﻨﻨﺪﻩﻱ ﻳﻚ ﺑﻴﺘﻲ ﺍﺳﺖ‪ .‬ﺍﻳﻦ ﺗﻮﺻﻴﻒ ﺩﺭ ﻟﻴﺴﺖ ‪ ٣-١‬ﺁﻣﺪﻩ‬
‫ﺍﺳﺖ‪.‬‬
‫‪HA‬‬
‫‪HA‬‬
‫‪im1‬‬
‫‪sum‬‬
‫‪im3‬‬
‫‪s‬‬
‫‪x‬‬
‫‪c‬‬
‫‪y‬‬
‫‪im2‬‬
‫‪s‬‬
‫‪x‬‬
‫‪a‬‬
‫‪c‬‬
‫‪y‬‬
‫‪b‬‬
‫‪cout‬‬
‫‪cin‬‬
‫ﺷﻜﻞ ‪ -٨-١‬ﻧﻤﻮﺩﺍﺭ ﻣﻨﻄﻘﻲ ﺳﻠﻮﻝ ‪Full Adder‬‬
‫ﻫﻤﻴﻦ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺑﺮﺍﻱ ﻓﺎﻳـﻞ ﺍﺻـﻠﻲ ﭘـﺮﻭﮊﻩ ﻳﻌﻨـﻲ ‪ adder‬ﺍﻧﺠـﺎﻡ ﻣـﻲﺩﻫـﻴﻢ‪ .‬ﺗﻮﺻـﻴﻒ ﺟﻤـﻊﻛﻨﻨـﺪﻩﻱ ﭼﻬـﺎﺭ‬
‫ﺑﻴﺘﻲ ﺩﺭ ﻟﻴﺴﺖ ‪ ٤-١‬ﺁﻣﺪﻩ ﺍﺳﺖ‪.‬‬
‫;‪LIBRARY IEEE‬‬
‫;‪USE IEEE.std_logic_1164.ALL‬‬
‫‪ENTITY fa_1bit IS‬‬
‫(‪PORT‬‬
‫‪a, b, cin‬‬
‫;‪: IN STD_LOGIC‬‬
‫‪sum, cout‬‬
‫;)‪: OUT STD_LOGIC‬‬
‫;‪END fa_1bit‬‬
‫ﻟﻴﺴﺖ ‪ -٣-١‬ﺗﻮﺻﻴﻒ ‪ Full Adder‬ﻳﻚ ﺑﻴﺘﻲ‬
‫ﺻﻔﺤﻪﻱ ‪٧‬‬
Max+PlusII ‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬:‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‬
ARCHITECTURE structural OF fa_1bit IS
COMPONENT ha_1bit PORT(
x, y : IN std_logic;
s, c : OUT std_logic );
END COMPONENT;
SIGNAL im1, im2, im3 : std_logic;
BEGIN
ha1 : ha_1bit PORT MAP ( a, b, im1, im2 );
ha2 : ha_1bit PORT MAP ( im1, cin, sum, im3 );
cout <= im2 OR im3;
END structural;
(‫ ﻳﻚ ﺑﻴﺘﻲ )ﺍﺩﺍﻣﻪ‬Full Adder ‫ ﺗﻮﺻﻴﻒ‬-٣-١ ‫ﻟﻴﺴﺖ‬
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
ENTITY adder IS
PORT(
a, b : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
cin
: IN STD_LOGIC;
sum
: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
cout : OUT STD_LOGIC);
END adder;
ARCHITECTURE structural OF adder IS
COMPONENT fa_1bit PORT (
a, b, cin : IN STD_LOGIC;
sum, cout : OUT STD_LOGIC );
END COMPONENT;
SIGNAL im1, im2, im3 : STD_LOGIC;
BEGIN
fa0 : fa_1bit PORT MAP ( a(0), b(0),
fa1 : fa_1bit PORT MAP ( a(1), b(1),
fa2 : fa_1bit PORT MAP ( a(2), b(2),
fa3 : fa_1bit PORT MAP ( a(3), b(3),
END structural;
cin,
im1,
im2,
im3,
sum(0),
sum(1),
sum(2),
sum(3),
im1 );
im2 );
im3 );
cout );
‫ ﺗﻮﺻﻴﻒ ﺟﻤﻊﻛﻨﻨﺪﻩﻱ ﭼﻬﺎﺭﺑﻴﺘﻲ‬-٤-١ ‫ﻟﻴﺴﺖ‬
‫ﺍﻧﺘﺨﺎﺏ ﺗﺮﺍﺷﻪ‬
٤-١
‫ ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﻧﺨﺴـﺖ ﺑﺎﻳـﺪ ﻧـﻮﻉ ﺗﺮﺍﺷـﻪﺍﻱ‬.‫ ﺑﺎﻳـﺪ ﺁﻥ ﺭﺍ ﻛﺎﻣﭙﺎﻳـﻞ ﻛﻨـﻴﻢ‬،‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﻃﺮﺡ ﺁﻣـﺎﺩﻩ ﺷـﺪ‬
‫ ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺑﺼـﻮﺭﺕ ﺯﻳـﺮ ﻋﻤـﻞ‬.‫ ﻣﺸـﺨﺺ ﻛﻨـﻴﻢ‬،‫ﺭﺍ ﻛﻪ ﻣﻲﺧـﻮﺍﻫﻴﻢ ﻃـﺮﺡ ﻣـﺎ ﺑـﺮ ﺭﻭﻱ ﺁﻥ ﻧﮕﺎﺷـﺖ ﺷـﻮﺩ‬
: ‫ﻣﻲﻛﻨﻴﻢ‬
<M> Assign: Device, to show Device window
‫ ﻧﺨﺴــﺖ ﺑﺎﻳــﺪ ﺍﺯ ﻟﻴﺴــﺖ‬،‫ ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﺍﻧﺘﺨــﺎﺏ ﺗﺮﺍﺷــﻪ‬،‫ ﺩﻳــﺪﻩ ﻣــﻲﺷــﻮﺩ‬٩-١ ‫ﻫﻤــﺎﻧﻄﻮﺭ ﻛــﻪ ﺩﺭ ﺷــﻜﻞ‬
‫ ﻧــﺎﻡ ﺗﺮﺍﺷــﻪﻫــﺎﻱ‬Devices ‫ ﺩﺭ ﺍﻳﻨﺼــﻮﺭﺕ ﺩﺭ ﻟﻴﺴــﺖ‬.‫ ﺧــﺎﻧﻮﺍﺩﻩﻱ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ‬Device Family
‫ ﺩﺭ ﺻـﻮﺭﺗﻴﻜﻪ ﺑﺨـﻮﺍﻫﻴﻢ ﺍﺑــﺰﺍﺭ ﺳـﻨﺘﺰ ﻣﻨﺎﺳــﺒﺘﺮﻳﻦ ﺗﺮﺍﺷـﻪ ﺭﺍ ﺑــﺮﺍﻱ‬.‫ﻣﻮﺟـﻮﺩ ﺩﺭ ﺍﻳـﻦ ﺧــﺎﻧﻮﺍﺩﻩ ﺑـﻪ ﻧﻤــﺎﻳﺶ ﺩﺭ ﻣـﻲﺁﻳــﺪ‬
.‫ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﻢ‬AUTO ‫ ﮔﺰﻳﻨﻪﻱ‬Devices ‫ ﺑﺎﻳﺪ ﺩﺭ ﻟﻴﺴﺖ‬،‫ﻃﺮﺡ ﻣﺎ ﺍﻧﺘﺨﺎﺏ ﻛﻨﺪ‬
٨ ‫ﺻﻔﺤﻪﻱ‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪Select device family‬‬
‫‪from combo-box‬‬
‫‪Select a device‬‬
‫‪from list box‬‬
‫ﺷﻜﻞ ‪ -٩-١‬ﭘﻨﺠﺮﻩﻱ ﺍﻧﺘﺨﺎﺏ ﺗﺮﺍﺷﻪ‬
‫‪٥-١‬‬
‫ﻛﺎﻣﭙﺎﻳﻞ ﻃﺮﺡ‬
‫ﭘــﺲ ﺍﺯ ﺍﻧﺘﺨــﺎﺏ ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ﺑﺎﻳــﺪ ﻃــﺮﺡ ﺭﺍ ﻛﺎﻣﭙﺎﻳــﻞ ﻧﻤــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﺑﺎﻳــﺪ ﺑﺼــﻮﺭﺕ ﺯﻳــﺮ ﻋﻤــﻞ‬
‫ﻛﻨﻴﻢ‪:‬‬
‫‪<M> Max+Plus II: Compiler‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﻱ ﻛﺎﻣﭙــﺎﻳﻠﺮ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ١٠-١‬ﺑــﺮ ﺭﻭﻱ ﺻــﻔﺤﻪ ﺑــﻪ ﻧﻤــﺎﻳﺶ ﺩﺭ ﻣــﻲﺁﻳــﺪ‪ .‬ﺑــﺮﺍﻱ‬
‫ﺷﺮﻭﻉ ﻋﻤﻠﻴﺎﺕ ﻛﺎﻣﭙﺎﻳﻞ ﺗﻮﺳﻂ ﻣﺎﻭﺱ ﺑﺎﻳﺪ ﺭﻭﻱ ﻛﻠﻴﺪ ‪ Start‬ﻛﻠﻴﻚ ﻛﻨﻴﻢ‪.‬‬
‫ﺷﻜﻞ ‪ -١٠-١‬ﭘﻨﺠﺮﻩﻱ ﻛﺎﻣﭙﺎﻳﻠﺮ‬
‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻳـﻚ ﺳﻴﺴـﺘﻢ ﺳـﻨﺘﺰ ﻛﺎﻣـﻞ )ﺍﺯ ﺗﻮﺻـﻴﻒ ﺭﻓﺘـﺎﺭﻱ ﻣـﺪﺍﺭ ﺗـﺎ ﻟـﻲﺍﻭﺕ ‪ (VLSI‬ﺩﺍﺷـﺘﻪ ﺑﺎﺷـﻴﻢ‪ ،‬ﺑﺎﻳـﺪ‬
‫ﺗﻮﺳﻂ ﺍﺑﺰﺍﺭ ﺳـﻨﺘﺰ ﻳـﻚ ﻓﺎﻳـﻞ ﺧﺮﻭﺟـﻲ ‪ Netlist‬ﺗﻮﻟﻴـﺪ ﻛﻨـﻴﻢ‪ .‬ﺍﻳـﻦ ﻓﺎﻳـﻞ ﺧﺮﻭﺟـﻲ‪ ،‬ﻣـﺪﺍﺭ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ ﺑﺼـﻮﺭﺕ‬
‫ﻣﺠﻤﻮﻋﻪﺍﻱ ﺍﺯ ﻋﻨﺎﺻﺮ ﻛﺘﺎﺑﺨﺎﻧﻪ ﺑﻴﺎﻥ ﻣﻲﻛﻨـﺪ ﻛـﻪ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻣﺘﺼـﻞ ﻫﺴـﺘﻨﺪ‪ .‬ﻗﺎﻟـﺐ ﺍﻳـﻦ ﻓﺎﻳـﻞ ﺧﺮﻭﺟـﻲ ﻣـﻲﺗﻮﺍﻧـﺪ‬
‫ﺻﻔﺤﻪﻱ ‪٩‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺑﺼــﻮﺭﺕ ‪ Verilog‬ﻳــﺎ ‪ EDIF‬ﺑﺎﺷــﺪ‪ .‬ﺍﺯ ﺍﻳــﻦ ﻓﺎﻳــﻞ ﺧﺮﻭﺟــﻲ ﺑــﺮﺍﻱ ﺗﻮﻟﻴــﺪ ﻟــﻲﺍﻭﺕ ‪ VLSI‬ﺍﺳــﺘﻔﺎﺩﻩ ﻣــﻲﻛﻨــﻴﻢ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪ Max+PlusII‬ﺧﺮﻭﺟﻲ ‪ Verilog‬ﻭ ﻳﺎ ‪ EDIF‬ﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﺪ‪ ،‬ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫‪<M> Interface: EDIF Netlist Writer‬‬
‫‪<M> Interface: Verilog Netlist Writer‬‬
‫ﭘﺲ ﺍﺯ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﻋﻤﻞ‪ ،‬ﭘﻨﺠﺮﻩﻱ ﻛﺎﻣﭙﺎﻳﻠﺮ ﺑﺼﻮﺭﺕ ﺷﻜﻞ ‪ ١١-١‬ﺩﺭ ﻣﻲﺁﻳﺪ‪.‬‬
‫‪Netlist writer will be added‬‬
‫‪to the compiler window‬‬
‫ﺷﻜﻞ ‪ -١١-١‬ﭘﻨﺠﺮﻩﻱ ﻛﺎﻣﭙﺎﻳﻠﺮ ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﺧﺮﻭﺟﻲ ‪ Verilog‬ﻭ ‪EDIF‬‬
‫ﺍﻛﻨــﻮﻥ ﺑــﺎ ﻛﻠﻴــﻚ ﻛــﺮﺩﻥ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Start‬ﻋﻤﻠﻴــﺎﺕ ﻛﺎﻣﭙﺎﻳــﻞ ﺭﺍ ﺁﻏــﺎﺯ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﻃــﻲ ﺍﻧﺠــﺎﻡ ﻋﻤﻠﻴــﺎﺕ‬
‫ﻛﺎﻣﭙﺎﻳــﻞ ﮔﺰﺍﺭﺷــﻲ ﺍﺯ ﺧﻄﺎﻫــﺎ ﻭ ‪ warning‬ﻫــﺎﻱ ﺍﺣﺘﻤــﺎﻟﻲ ﺩﺭ ﻳــﻚ ﭘﻨﺠــﺮﻩ ﺑﻨــﺎﻡ ‪ Message‬ﺑــﻪ ﻧﻤــﺎﻳﺶ ﺩﺭ ﻣــﻲﺁﻳــﺪ‪.‬‬
‫ﭼﻨﺎﻧﭽـﻪ ﺑﺨــﻮﺍﻫﻴﻢ ﻣﺤـﻞ ﺑــﺮﻭﺯ ﺧﻄــﺎ ﺭﺍ ﻣﺸـﺎﻫﺪﻩ ﻛﻨــﻴﻢ‪ ،‬ﻛﺎﻓﻴﺴــﺖ ﺗﻮﺳـﻂ ﻣــﺎﻭﺱ ﺭﻭﻱ ﺧﻄــﺎﻱ ﻣـﻮﺭﺩ ﻧﻈــﺮ ﻛﻠﻴــﻚ‬
‫ﻛــﺮﺩﻩ ﻭ ﺳــﭙﺲ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Locate‬ﻛﻠﻴــﻚ ﻛﻨــﻴﻢ ) ﺷــﻜﻞ ‪ ١٢-١‬ﺭﺍ ﺑﺒﻴﻨﻴــﺪ (‪ .‬ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﻃــﺮﺡ ﺷــﻤﺎ ﺩﺭﻭﻥ ﻳــﻚ‬
‫ﺗﺮﺍﺷﻪ ﺟﺎﻱ ﻧﮕﻴﺮﺩ‪ ،‬ﺍﺑﺰﺍﺭ ﺳﻨﺘﺰ ﺑﻪ ﺷﻤﺎ ﭘﻴﺎﻡ ﻣـﻲﺩﻫـﺪ ﻛـﻪ ﺁﻳـﺎ ﻣـﻲﺧﻮﺍﻫﻴـﺪ ﺍﻳـﻦ ﻃـﺮﺡ ﺭﺍ ﺩﺭﻭﻥ ﺩﻭ )ﻳـﺎ ﭼﻨـﺪ( ﺗﺮﺍﺷـﻪ‬
‫ﺟﺎﻱ ﺩﻫﻴﺪ ﻳﺎ ﺧﻴﺮ‪ .‬ﺩﺭ ﺻﻮﺭﺗﻴﻜﻪ ﺷﻤﺎ ﺍﺩﺍﻣـﻪﻱ ﻋﻤـﻞ ﻛﺎﻣﭙﺎﻳـﻞ ﺭﺍ ﺗﺎﻳﻴـﺪ ﻛﻨﻴـﺪ‪ ،‬ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﻃـﺮﺡ ﺭﺍ ﺑـﻪ ﭼﻨـﺪ ﺑﺨـﺶ‬
‫ﺗﻘﺴﻴﻢ ﻣـﻲﻛﻨـﺪ ﻭ ﻫـﺮ ﺑﺨـﺶ ﺭﺍ ﺩﺭﻭﻥ ﻳـﻚ ﺗﺮﺍﺷـﻪ ﺟـﺎﻱ ﻣـﻲﺩﻫـﺪ ﻭ ﻟﻴﺴـﺘﻲ ﺍﺯ ﭘﺎﻳـﻪﻫـﺎﻱ ﺗﺮﺍﺷـﻪﻫـﺎ ﻛـﻪ ﺑﺎﻳـﺪ ﺑـﻪ‬
‫ﻳﻜﺪﻳﮕﺮ ﻣﺮﺗﺒﻂ ﺷﻮﻧﺪ ﺭﺍ ﺍﺭﺍﺋﻪ ﻣﻲﻛﻨﺪ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪١٠‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪Error and warnning messages‬‬
‫‪will be shwon here‬‬
‫ﺷﻜﻞ ‪ -١٢-١‬ﭘﻨﺠﺮﻩﻱ ﭘﻴﺎﻣﻬﺎ‬
‫‪٦-١‬‬
‫ﺷﺒﻴﻪﺳﺎﺯﻱ ﻃﺮﺡ‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﻃﺮﺡ ﻣﻮﺭﺩ ﻧﻈـﺮ ﺑـﺮ ﺭﻭﻱ ﺗﺮﺍﺷـﻪ ﻧﮕﺎﺷـﺖ ﺷـﺪ‪ ،‬ﺑﺎﻳـﺪ ﺁﻥ ﺭﺍ ﺷـﺒﻴﻪ ﺳـﺎﺯﻱ ﻧﻤـﻮﺩ ﺗـﺎ ﺍﺯ ﺻـﺤﺖ‬
‫ﻃــﺮﺡ ﻣﻄﻤــﺌﻦ ﺷــﻮﻳﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﻧﺨﺴــﺖ ﺑﺎﻳــﺪ ﺷــﻜﻞ ﻣــﻮﺝ ﻭﺭﻭﺩﻱ ﻣــﺪﺍﺭ ﺭﺍ ﻃﺮﺍﺣــﻲ ﻛﻨــﻴﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ‬
‫ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> Max+Plus II: Waveform Editor‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﻱ ﻭﻳــﺮﺍﻳﺶ ﺷــﻜﻞ ﻣــﻮﺝ ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪ .‬ﺍﻳــﻦ ﭘﻨﺠــﺮﻩ ﺩﺭ ﺷــﻜﻞ ‪١٣-١‬‬
‫ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ ﻭ ﻗﺴﻤﺘﻬﺎﻱ ﻣﺨﺘﻠﻒ ﺍﻳﻦ ﭘﻨﺠﺮﻩ ﺩﺭ ﺷﻜﻞ ﻣﺸﺨﺺ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﻣﺮﺣﻠﻪﻱ ﻛﺎﻣﭙﺎﻳـﻞ ﻃـﺮﺡ‪ ،‬ﻳـﻚ ﻓﺎﻳـﻞ ﺑـﺎ ﭘﺴـﻮﻧﺪ ‪ SNF‬ﺍﻳﺠـﺎﺩ ﻣـﻲﺷـﻮﺩ ﻛـﻪ ﻣﺸﺨﺼـﺎﺕ ﺗﻤـﺎﻡ ﮔـﺮﻩﻫـﺎﻱ‬
‫ﻣــﺪﺍﺭ ﺭﺍ ﺩﺭ ﺧــﻮﺩ ﺫﺧﻴــﺮﻩ ﻣــﻲﻛﻨــﺪ‪ .‬ﺍﺯ ﺍﻳﻨــﺮﻭ ﺑﻬﺘــﺮ ﺍﺳــﺖ ﻛــﻪ ﻧــﺎﻡ ﮔــﺮﻩ ﻫــﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟــﻲ ﻣــﺪﺍﺭ ﺭﺍ ﺍﺯ ﺍﻳــﻦ‬
‫ﻓﺎﻳﻞ ﺍﺳﺘﺨﺮﺍﺝ ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> Node: Enter Node from SNF‬‬
‫ﺻﻔﺤﻪﻱ ‪١١‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪Reference cursor handle‬‬
‫‪Value field‬‬
‫‪Field resizing‬‬
‫‪handles‬‬
‫‪Name field‬‬
‫ﺷﻜﻞ‪ -١٣-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺶ ﺷﻜﻞ ﻣﻮﺟﻬﺎ‬
‫ﭘﻨﺠﺮﻩﺍﻱ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ‪ ١٤-١‬ﺭﻭﻱ ﺻﻔﺤﻪ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ‪ .‬ﺩﺭ ﺍﻳـﻦ ﭘﻨﺠـﺮﻩ ﻣـﻲﺗـﻮﺍﻥ ﻧـﻮﻉ ﮔـﺮﻩﻫـﺎﻱ ﻣـﻮﺭﺩ‬
‫ﻧﻈـﺮ ﺭﺍ ﺍﻧﺘﺨـﺎﺏ ﻧﻤــﻮﺩ‪ ،‬ﺍﻳـﻦ ﺍﻣــﺮ ﺩﺭ ﺑﺨـﺶ ‪ Type‬ﺍﻧﺠــﺎﻡ ﻣـﻲﺷــﻮﺩ‪ .‬ﭘـﺲ ﺍﺯ ﺍﻧﺘﺨــﺎﺏ ﻧـﻮﻉ ﮔــﺮﻩ ﻫـﺎ ﻛﻠﻴــﺪ ‪ List‬ﺭﺍ‬
‫ﻣﻲﺯﻧﻴﻢ ﺗـﺎ ﻟﻴﺴـﺖ ﮔـﺮﻩ ﻫـﺎﻱ ﻣﻮﺟـﻮﺩ ﺩﺭ ﻣـﺪﺍﺭ‪ ،‬ﺩﺭ ﺑﺨـﺶ ﺳـﻤﺖ ﭼـﭗ ﭘﻨﺠـﺮﻩ ﻇـﺎﻫﺮ ﺷـﻮﺩ‪ .‬ﺳـﭙﺲ ﻫـﺮ ﻳـﻚ ﺍﺯ‬
‫ﻭﺭﻭﺩﻳﻬﺎ ﻭ ﻳـﺎ ﺧﺮﻭﺟﻴﻬـﺎ ﺭﺍ ﻛـﻪ ﺑﺨـﻮﺍﻫﻴﻢ ﺍﻧﺘﺨـﺎﺏ ﻣـﻲﻛﻨـﻴﻢ ﻭ ﺁﻧﻬـﺎ ﺭﺍ ﺗﻮﺳـﻂ ﻛﻠﻴـﺪ >= ﺑـﻪ ﻟﻴﺴـﺖ ﺷـﻜﻞ ﻣﻮﺟﻬـﺎ‬
‫ﺍﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ ﻭ ﺩﺭ ﭘﺎﻳﺎﻥ ﻛﻠﻴﺪ ‪ Ok‬ﺭﺍ ﻣﻲﺯﻧﻴﻢ‪.‬‬
‫‪Specifies a text string that contains‬‬
‫‪wildcard characters or a node(group) name‬‬
‫‪Shows nodes that‬‬
‫‪match with type‬‬
‫‪of nodes‬‬
‫ﺷﻜﻞ ‪ -١٤-١‬ﭘﻨﺠﺮﻩﻱ ﺍﻧﺘﺨﺎﺏ ﮔﺮﻩﻫﺎ‬
‫ﭼﻨﺎﻧﭽﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺑﻌﺪﻫﺎ ﻳـﻚ ﮔـﺮﻩ ﺭﺍ ﺑـﻪ ﺍﻳـﻦ ﻟﻴﺴـﺖ ﺍﺿـﺎﻓﻪ ﻛﻨـﻴﻢ ﺩﺭ ﭘﻨﺠـﺮﻩﻱ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺷـﻜﻞ ﻣـﻮﺝ ﺩﺭ‬
‫ﻣﺤــﻞ ﻓﻴﻠــﺪ ﻧــﺎﻡ >‪ <DL‬ﻣــﻲﻛﻨــﻴﻢ‪ ،‬ﺩﺭ ﺍﻳﻨﺼــﻮﺭﺕ ﭘﻨﺠــﺮﻩ ﺍﻱ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ١٥-١‬ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪،‬‬
‫ﺳﭙﺲ ﻧﺎﻡ ﮔﺮﻩ ﻣﻮﺭﺩ ﻧﻈﺮ ﻭ ﻧـﻮﻉ ﮔـﺮﻩ ﺭﺍ ﻣﺸـﺨﺺ ﻣـﻲﻛﻨـﻴﻢ ﻭ ﺩﺭ ﺻـﻮﺭﺕ ﻟـﺰﻭﻡ ﻣﻘـﺪﺍﺭ ﭘـﻴﺶ ﻓـﺮﺽ ﮔـﺮﻩ ﺭﺍ ﻭﺍﺭﺩ‬
‫ﺻﻔﺤﻪﻱ ‪١٢‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﻣﻲﻛﻨﻴﻢ ﻭ ﻛﻠﻴﺪ ‪ Ok‬ﺭﺍ ﻣﻲﺯﻧﻴﻢ ﺗﺎ ﮔـﺮﻩ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺑـﻪ ﻟﻴﺴـﺖ ﮔـﺮﻩ ﻫـﺎﻱ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺷـﻜﻞ ﻣـﻮﺝ ﺍﻓـﺰﻭﺩﻩ ﺷـﻮﺩ‪ .‬ﺑـﻪ‬
‫ﻫﻨﮕﺎﻡ ﺍﻓﺰﻭﺩﻥ ﮔﺮﻩ ﺑﺎ ﺍﻳﻦ ﺭﻭﺵ ﺑﺎﻳﺪ ﺩﻗﺖ ﻛﺮﺩ ﻛﻪ ﮔﺮﻩ ﺣﺘﻤﺎ ﺩﺭ ﻃﺮﺡ ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ‪.‬‬
‫‪Specify I/O type‬‬
‫‪of the node‬‬
‫‪Enter node‬‬
‫‪name here‬‬
‫‪Specify initial logic valu for‬‬
‫‪a node, or initial state name‬‬
‫‪for a state machine node‬‬
‫ﺷﻜﻞ ‪ -١٥-١‬ﭘﻨﺠﺮﻩﻱ ﻭﺭﻭﺩ ﮔﺮﻩ‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﮔﺮﻩﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑـﻪ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺷـﻜﻞ ﻣـﻮﺝ ﺍﻓـﺰﻭﺩﻩ ﺷـﺪ‪ ،‬ﺑﺎﻳـﺪ ﺷـﻜﻞ ﻣـﻮﺝ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ‬
‫ﺑــﻪ ﻭﺭﻭﺩﻳﻬــﺎ ﺍﻋﻤــﺎﻝ ﻧﻤــﻮﺩ‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺷــﻜﻞ ﻣــﻮﺝ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ١٦-١‬ﺧﻮﺍﻫــﺪ ﺑــﻮﺩ‪ .‬ﺩﺭ‬
‫ﺍﻳﻦ ﺷﻜﻞ ﺑﺨﺸﻬﺎﻱ ﻣﺨﺘﻠﻒ ﺍﻳﻦ ﭘﻨﺠﺮﻩ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺩﺭ ﺣﺎﻟــﺖ ﻋــﺎﺩﻱ ﻃــﻮﻝ ﺯﻣــﺎﻥ ﺷــﺒﻴﻪ ﺳــﺎﺯﻱ ﺑﺮﺍﺑــﺮ ‪ ١‬ﻣﻴﻜﺮﻭﺛﺎﻧﻴــﻪ ﺍﺳــﺖ‪ .‬ﺑــﺮﺍﻱ ﺗﻐﻴﻴــﺮ ﺍﻳــﻦ ﻣﻘــﺪﺍﺭ ﺑﺎﻳــﺪ‬
‫ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻧﻤﻮﺩﻩ ﻭ ﺳﭙﺲ ﻣﻘﺪﺍﺭ ﺯﻣﺎﻥ ﺷﺒﻴﻪ ﺳﺎﺯﻱ ﺭﺍ ﺩﺭ ﭘﻨﺠﺮﻩﻱ ﻇﺎﻫﺮ ﺷﺪﻩ ﻭﺍﺭﺩ ﻛﻨﻴﻢ‪.‬‬
‫ﺩﺭ ﺣﺎﻟـﺖ ﻋــﺎﺩﻱ ﻣﻘــﺪﺍﺭ ‪ Grid‬ﺯﻣــﺎﻥ ﺑﺮﺍﺑــﺮ ‪ ١٠٠‬ﻧﺎﻧﻮﺛﺎﻧﻴــﻪ ﺍﺳــﺖ‪ .‬ﺑــﺮﺍﻱ‬
‫‪<M> File: End Time‬‬
‫ﺍﻳﻨﻜــﻪ ﻣﻘــﺪﺍﺭ ‪ Grid‬ﺯﻣــﺎﻥ ﺭﺍ‬
‫ﺗﻐﻴﻴــﺮ‬
‫ﺩﻫﻴﻢ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻧﻤﻮﺩﻩ ﻭ ﺳﭙﺲ ﻣﻘﺪﺍﺭ ‪ Grid‬ﺯﻣﺎﻥ ﺭﺍ ﺩﺭ ﭘﻨﺠﺮﻩﻱ ﻇﺎﻫﺮ ﺷﺪﻩ ﻭﺍﺭﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﺑــﺮﺍﻱ ﺟﺎﺑﺠــﺎ ﻛــﺮﺩﻥ ﻳــﻚ ﺳــﻴﮕﻨﺎﻝ ﺩﺭ ﻟﻴﺴــﺖ ﻧﻤــﺎﻳﺶ ﻣــﻲﺗــﻮﺍﻥ‬
‫‪<M> Options: Grid Size‬‬
‫ﺗﻮﺳــﻂ ﻣــﺎﻭﺱ ‪ Handle‬ﺁﻥ ﺳــﻴﮕﻨﺎﻝ‬
‫ﺭﺍ‬
‫ﮔﺮﻓﺘﻪ ﻭ ﺁﻥ ﺭﺍ ﺩﺭ ﻟﻴﺴﺖ ﺳﻴﮕﻨﺎﻟﻬﺎ ﺑﻪ ﻣﺤﻞ ﻣﻮﺭﺩ ﻧﻈﺮ ‪ Drag‬ﻧﻤﻮﺩ‪.‬‬
‫ﺑــﺮﺍﻱ ﺍﻳﻨﻜــﻪ ﻣﻘــﺪﺍﺭ ﻳــﻚ ﺳــﻴﮕﻨﺎﻝ ﻭﺭﻭﺩﻱ ﺭﺍ ﺗﻐﻴﻴــﺮ ﺩﻫــﻴﻢ‪ ،‬ﺍﺑﺘــﺪﺍ ﺑﺎﻳــﺪ ﺁﻥ ﻗﺴــﻤﺘﻲ ﺍﺯ ﺳــﻴﮕﻨﺎﻝ ﺭﺍ ﻛــﻪ‬
‫ﻣــﻲﺧــﻮﺍﻫﻴﻢ ﺗﻐﻴﻴــﺮ ﺩﻫــﻴﻢ‪ ،‬ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻧﺘﺨــﺎﺏ ﻗﺴــﻤﺘﻲ ﺍﺯ ﻳــﻚ ﺳــﻴﮕﻨﺎﻝ ﺍﺑﺘــﺪﺍ ﺗﻮﺳــﻂ ﻣــﺎﻭﺱ ﺁﻳﻜــﻮﻥ‬
‫‪ Select Object‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨـﻴﻢ‪ ،‬ﺳـﭙﺲ ﻗﺴـﻤﺖ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺍﺯ ﺳـﻴﮕﻨﺎﻝ ﺭﺍ ‪ Drag‬ﻣـﻲ ﻛﻨـﻴﻢ‪ .‬ﺑـﻪ ﺍﻳـﻦ ﺗﺮﺗﻴـﺐ‬
‫ﺭﻧﮓ ﺍﻳﻦ ﻗﺴـﻤﺖ ﺗﻴـﺮﻩ ﻣـﻲﺷـﻮﺩ‪ ،‬ﺣـﺎﻝ ﻣـﻲﺗـﻮﺍﻧﻴﻢ ﺗﻮﺳـﻂ ﺁﻳﻜﻮﻧﻬـﺎﻱ ﺳـﻤﺖ ﭼـﭗ ﺻـﻔﺤﻪ ﻣﻘـﺪﺍﺭ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ‬
‫ﻭﺍﺭﺩ ﻛﻨﻴﻢ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪١٣‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪Displays time at current‬‬
‫‪cursor location‬‬
‫‪Select object‬‬
‫‪Displays time at current‬‬
‫‪reference cursor location‬‬
‫‪Enter text‬‬
‫‪Transition‬‬
‫‪Zoom in‬‬
‫‪Zoom out‬‬
‫‪Full fit‬‬
‫‪Enter Zero‬‬
‫‪Enter One‬‬
‫‪Enter Unknown‬‬
‫‪Enter HiZ‬‬
‫‪Invert‬‬
‫‪Clock Generator‬‬
‫‪Enter count value‬‬
‫‪Enter group value‬‬
‫‪Node handle shows the I/O type of the node‬‬
‫‪Enter state‬‬
‫ﺷﻜﻞ ‪ -١٦-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺶ ﺷﻜﻞ ﻣﻮﺟﻬﺎ ﭘﺲ ﺍﺯ ﺍﻓﺰﻭﺩﻥ ﮔﺮﻩﻫﺎ‬
‫ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﺑﺨــﻮﺍﻫﻴﻢ ﻳــﻚ ﺳــﻴﮕﻨﺎﻝ ﺭﺍ ﺑﺼــﻮﺭﺕ ﻛﺎﻣــﻞ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ‪ ،‬ﺑﺎﻳــﺪ ﺭﻭﻱ ﻣﻘــﺪﺍﺭ ﺁﻥ ﺳــﻴﮕﻨﺎﻝ‬
‫>‪ <LB‬ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﺩﺍﺩﻥ ﻣﻘﺪﺍﺭ ﻳﻚ ﺳﻴﮕﻨﺎﻝ ﺑﻪ ﺍﻳـﻦ ﻧﻜﺘـﻪ ﺗﻮﺟـﻪ ﻛﻨﻴـﺪ ﻛـﻪ ﺳـﻴﮕﻨﺎﻝ ﻳـﻚ ﮔـﺮﻩ ﺍﺳـﺖ ﻳـﺎ ﻳـﻚ‬
‫ﮔﺮﻭﻩ ﻭ ﺑﺮﺍﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﺑـﻪ ﺁﻥ ﺍﺯ ﺁﻳﻜـﻮﻥ ﻣﻨﺎﺳـﺐ ﺍﺳـﺘﻔﺎﺩﻩ ﻛﻨﻴـﺪ‪ .‬ﺑـﺮﺍﻱ ﺗﺴـﺖ ﺍﻳـﻦ ﻣـﺪﺍﺭ ﻓـﺮﺽ ﻛﻨﻴـﺪ ﻛـﻪ ﺷـﻜﻞ‬
‫ﻣﻮﺝ ﻭﺭﻭﺩﻱ ﺭﺍ ﺑﺼﻮﺭﺕ ﺷﻜﻞ ‪ ١٧-١‬ﻃﺮﺍﺣـﻲ ﻛـﺮﺩﻩﺍﻳـﻢ‪ .‬ﺍﻛﻨـﻮﻥ ﺑﺼـﻮﺭﺕ ﺯﻳـﺮ ﺍﻳـﻦ ﺷـﻜﻞ ﻣـﻮﺝ ﺭﺍ ﺑـﺎ ﻧـﺎﻡ‬
‫ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> File: Save‬‬
‫ﺷﻜﻞ ‪ -١٧-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺶ ﺷﻜﻞ ﻣﻮﺟﻬﺎ ﭘﺲ ﺍﺯ ﻃﺮﺍﺣﻲ ﺷﻜﻞ ﻣﻮﺟﻬﺎ‬
‫ﺻﻔﺤﻪﻱ ‪١٤‬‬
‫‪adder‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺍﻛﻨـﻮﻥ ﺑــﺮﺍﻱ ﺍﻳﻨﻜــﻪ ﺷـﺒﻴﻪ ﺳــﺎﺯﻱ ﺍﻳــﻦ ﻃـﺮﺡ ﺭﺍ ﻣﺸــﺎﻫﺪﻩ ﻛﻨــﻴﻢ‪ ،‬ﺑﺎﻳـﺪ ﻋﻤــﻞ ﺷــﺒﻴﻪ ﺳـﺎﺯﻱ ﺭﺍ ﺍﻧﺠــﺎﻡ ﺩﻫــﻴﻢ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫)‪<M> Max+PlusII: Simulator, to show the simulator window (fig 1-18‬‬
‫‪<LB> on Start, to simulate the design‬‬
‫‪<LB> on Open SCF‬‬
‫ﺷﻜﻞ ‪ -١٨-١‬ﭘﻨﺠﺮﻩﻱ ﺷﺒﻴﻪﺳﺎﺯﻱ‬
‫ﺑﺎ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﻋﻤﻞ ﻣﺠﺪﺩﺍ ﭘﻨﺠﺮﻩﻱ ﺷﻜﻞ ﻣﻮﺟﻬـﺎ ﺑـﺎﺯ ﻣـﻲ ﺷـﻮﺩ ﺑـﺎ ﺍﻳـﻦ ﺗﻔـﺎﻭﺕ ﻛـﻪ ﺩﺭ ﺍﻳـﻦ ﺣﺎﻟـﺖ ﻣﻘـﺎﺩﻳﺮ‬
‫ﺧﺮﻭﺟﻴﻬــﺎ ﻧﻴــﺰ ﻣﺸــﺨﺺ ﺷــﺪﻩ ﺍﻧــﺪ‪ .‬ﺣــﺎﻝ ﻣــﻲ ﺗــﻮﺍﻥ ﺻــﺤﺖ ﻋﻤﻠﻜــﺮﺩ ﻣــﺪﺍﺭ ﺭﺍ ﺑﺮﺭﺳــﻲ ﻧﻤــﻮﺩ ) ﺷــﻜﻞ ‪ ١٩-١‬ﺭﺍ‬
‫ﺑﺒﻴﻨﻴﺪ(‪.‬‬
‫ﺷﻜﻞ ‪ -١٩-١‬ﭘﻨﺠﺮﻩﻱ ﺷﻜﻞ ﻣﻮﺝ‬
‫‪٧-١‬‬
‫ﺗﺤﻠﻴﮕﺮ ﺯﻣﺎﻧﻲ‬
‫ﺑﺮﺍﻱ ﺑﺮﺭﺳﻲ ﺗﺎﺧﻴﺮ ﻣﺪﺍﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲ ﻛﻨﻴﻢ‪.‬‬
‫‪<M> Max+PlusII: Timing Analyzer, to show timing analyzer window‬‬
‫‪<LB> Start‬‬
‫ﺻﻔﺤﻪﻱ ‪١٥‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﺗﺤﻠﻴﮕــﺮ ﺯﻣــﺎﻧﻲ‪ ،‬ﺗــﺎﺧﻴﺮ ﺗﺮﻛﻴﺒــﻲ ﻭﺭﻭﺩﻳﻬــﺎ ﺑــﻪ ﺧﺮﻭﺟﻴﻬــﺎ ﻣﺤﺎﺳــﺒﻪ ﺷــﺪﻩ ﻭ ﺩﺭ‬
‫ﻣﺎﺗﺮﻳﺲ ﺗﺎﺧﻴﺮ ﺑﻪ ﻧﻤﺎﻳﺶ ﺩﺭﻣﻲﺁﻳﺪ ) ﺷﻜﻞ ‪ ٢٠-١‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ (‪.‬‬
‫ﺷﻜﻞ ‪ -٢٠-١‬ﭘﻨﺠﺮﻩﻱ ﺗﺤﻠﻴﻠﮕﺮ ﺯﻣﺎﻧﻲ‬
‫‪٨-١‬‬
‫ﻭﻳﺮﺍﻳﺸﮕﺮ ﺗﺮﺍﺷﻪ‬
‫ﭘـﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﺍﺯ ﺻـﺤﺖ ﻋﻤﻠﻜـﺮﺩ ﻃـﺮﺡ ﻣﻄﻤـﺌﻦ ﺷـﺪﻳﻢ‪ ،‬ﺑﺎﻳـﺪ ﻧﺤـﻮﻩﻱ ﺍﻋﻤـﺎﻝ ﻭﺭﻭﺩﻳﻬـﺎ ﻭ ﺧﺮﻭﺟﻴﻬـﺎ ﺑـﻪ‬
‫ﺗﺮﺍﺷــﻪ ﺭﺍ ﻣﺸــﺨﺺ ﻛﻨــﻴﻢ‪ .‬ﺍﻳــﻦ ﺍﻣــﺮ ﺗﻮﺳــﻂ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺗﺮﺍﺷـﻪ ﺍﻧﺠــﺎﻡ ﻣــﻲ ﺷــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﺍﺟــﺮﺍﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺗﺮﺍﺷــﻪ‬
‫ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲ ﻛﻨﻴﻢ‪.‬‬
‫‪<M> Max+PlusII: Floorplan Editor, to show floorplan editor window‬‬
‫ﺩﺭ ﺣﺎﻟــﺖ ﻋــﺎﺩﻱ ﺍﻳــﻦ ﭘﻨﺠــﺮﻩ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺑﺼــﻮﺭﺕ )‪ Logic Array Block (LAB‬ﻧﻤــﺎﻳﺶ ﻣــﻲ ﺩﻫــﺪ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺗﺮﺍﺷﻪ ﺑﺼﻮﺭﺕ ﻋﺎﺩﻱ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﻮﺩ‪ ،‬ﺑﺎﻳﺪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﻢ‪.‬‬
‫‪<M> Layout: Device View‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺗﺮﺍﺷــﻪ ﺑﺼــﻮﺭﺕ ﺷــﻜﻞ ‪ ٢١-١‬ﺩﺭ ﻣــﻲﺁﻳــﺪ‪ .‬ﺑﺨﺸــﻬﺎﻱ ﻣﺨﺘﻠــﻒ ﺍﻳــﻦ‬
‫ﭘﻨﺠﺮﻩ ﺩﺭ ﺷﻜﻞ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪١٦‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪Zoom in‬‬
‫‪Zoom out‬‬
‫‪Full fit‬‬
‫‪Current assignment‬‬
‫‪Last assignment‬‬
‫ﺷﻜﻞ ‪ -٢١-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﺗﺮﺍﺷﻪ‬
‫ﻫﻤــﺎﻧﻄﻮﺭ ﻛــﻪ ﺩﺭ ﺷــﻜﻞ ﺩﻳــﺪﻩ ﻣــﻲ ﺷــﻮﺩ‪ ،‬ﺩﺭ ﻗﺴــﻤﺖ ﭘــﺎﻳﻴﻦ ﺻــﻔﺤﻪ ﻫــﺮ ﻳــﻚ ﺍﺯ ﻭﺭﻭﺩﻳﻬــﺎ ﻭ ﺧﺮﻭﺟﻴﻬــﺎﻱ‬
‫ﻣــﺪﺍﺭ ﺑــﻪ ﻳﻜــﻲ ﺍﺯ ﭘﺎﻳــﻪ ﻫــﺎﻱ ﺗﺮﺍﺷــﻪ ﺍﺧﺘﺼــﺎﺹ ﻳﺎﻓﺘــﻪ ﺍﺳــﺖ‪ .‬ﭼﻨﺎﻧﭽــﻪ ﺍﻳــﻦ ﺗﺨﺼــﻴﺺ ﻛــﻪ ﻣﺮﺑــﻮﻁ ﺑــﻪ ﻋﻤﻠﻴــﺎﺕ‬
‫ﻛﺎﻣﭙﺎﻳﻞ ﻗﺒﻠـﻲ ﺍﺳـﺖ‪ ،‬ﺑـﺮﺍﻱ ﺷـﻤﺎ ﻣﻄﻠـﻮﺏ ﻧﺒﺎﺷـﺪ ﻣـﻲ ﺗﻮﺍﻧﻴـﺪ ﺁﻥ ﺭﺍ ﺗﻐﻴﻴـﺮ ﺩﻫﻴـﺪ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺑﺎﻳـﺪ ﺗﻮﺳـﻂ‬
‫ﻣــﺎﻭﺱ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Current Assignment‬ﻛﻠﻴــﻚ ﻛﻨــﻴﻢ‪ ،‬ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﺩﺭ ﻗﺴــﻤﺖ ﭘــﺎﻳﻴﻦ ﺻــﻔﺤﻪ ﻳــﻚ ﺗﺮﺍﺷــﻪﻱ‬
‫ﺧﺎﻟﻲ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ )ﺗﻮﺟـﻪ ﻛﻨﻴـﺪ ﺍﻳـﻦ ﺍﻣـﺮ ﺩﺭﺻـﻮﺭﺗﻲ ﺍﻣﻜـﺎﻥ ﭘـﺬﻳﺮ ﺍﺳـﺖ ﻛـﻪ ﻗـﺒﻼ ﺩﺭ ﻣﺮﺣﻠـﻪﻱ ﻛﺎﻣﭙﺎﻳـﻞ‪،‬‬
‫ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻛــﺮﺩﻩ ﺑﺎﺷــﻴﺪ‪ ،‬ﺑﻌﺒــﺎﺭﺕ ﺩﻳﮕــﺮ ﺍﻧﺘﺨــﺎﺏ ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ‪ AUTO‬ﻧﺒﺎﺷــﺪ( ﻭ ﺩﺭ ﻟﻴﺴــﺖ ﺑــﺎﻻﻱ‬
‫ﺻــﻔﺤﻪ ﻟﻴﺴــﺖ ﮔــﺮﻩ ﻫــﺎﻱ ﻣــﺪﺍﺭ ﻧﻤــﺎﻳﺶ ﺩﺍﺩﻩ ﻣــﻲ ﺷــﻮﺩ )ﺷــﻜﻞ‪ ٢٢-١‬ﺭﺍ ﺑﺒﻴﻨﻴــﺪ(‪ .‬ﺣــﺎﻝ ﻣــﻲ ﺗﻮﺍﻧﻴــﺪ ﻫــﺮ ﻳــﻚ ﺍﺯ‬
‫ﮔــﺮﻩﻫــﺎ ﺭﺍ ﺍﺯ ﻟﻴﺴــﺖ ﺍﻧﺘﺨــﺎﺏ ﻧﻤــﻮﺩﻩ ﻭ ﺁﻥ ﺭﺍ ‪ Drag‬ﻧﻤــﻮﺩﻩ ﺭﻭﻱ ﭘﺎﻳــﻪﻱ ﻣــﻮﺭﺩ ﻧﻈــﺮ ﻗــﺮﺍﺭ ﺩﻫﻴــﺪ‪ .‬ﺩﻗــﺖ ﻛﻨﻴــﺪ ﻛــﻪ‬
‫ﮔــﺮﻩﻫــﺎﻱ ﻭﺭﻭﺩﻱ ﺭﺍ ﻓﻘــﻂ ﺑــﻪ ﭘﺎﻳــﻪ ﻫــﺎﻱ ﻭﺭﻭﺩﻱ ﻳــﺎ ﺩﻭ ﺳــﻮﻳﻪ ﻭ ﮔــﺮﻩ ﻫــﺎﻱ ﺧﺮﻭﺟــﻲ ﺭﺍ ﻓﻘــﻂ ﺑــﻪ ﭘﺎﻳــﻪ ﻫــﺎﻱ‬
‫ﺧﺮﻭﺟﻲ ﻳﺎ ﺩﻭ ﺳـﻮﻳﻪ ﻭ ﮔـﺮﻩ ﻫـﺎﻱ ﺩﻭ ﺳـﻮﻳﻪ ﺭﺍ ﻓﻘـﻂ ﺑـﻪ ﭘﺎﻳـﻪ ﻫـﺎﻱ ﺩﻭ ﺳـﻮﻳﻪ ﺗﺨﺼـﻴﺺ ﺩﻫﻴـﺪ‪ .‬ﻧﻜﺘـﻪﻱ ﺩﻳﮕـﺮﻱ‬
‫ﻛﻪ ﺑﺎﻳﺪ ﺑﻪ ﺁﻥ ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷـﻴﺪ ﺍﻳـﻦ ﺍﺳـﺖ ﻛـﻪ ﻣﻤﻜـﻦ ﺍﺳـﺖ ﺑـﺎ ﺗﺨﺼﻴﺼـﻲ ﻛـﻪ ﺷـﻤﺎ ﺍﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩﻩﺍﻳـﺪ ﺍﺑـﺰﺍﺭ‬
‫ﺳﻨﺘﺰ ﻧﺘﻮﺍﻧﺪ ﻃـﺮﺡ ﺭﺍ ﺩﺭﻭﻥ ﺗﺮﺍﺷـﻪ ﺟـﺎﻱ ﺩﻫـﺪ‪ ،‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﭘـﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﺗﺨﺼـﻴﺺ ﺧـﻮﺩ ﺭﺍ ﺍﻧﺘﺨـﺎﺏ ﻧﻤﻮﺩﻳـﺪ ﺑﺎﻳـﺪ‬
‫ﻣﺠــﺪﺩﺍ ﻃــﺮﺡ ﺭﺍ ﻛﺎﻣﭙﺎﻳــﻞ ﻛﻨﻴــﺪ‪ .‬ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﻋﻤــﻞ ﻛﺎﻣﭙﺎﻳــﻞ ﻣﻮﻓﻘﻴــﺖ ﺁﻣﻴــﺰ ﺑﺎﺷــﺪ‪ ،‬ﺗﺨﺼــﻴﺺ ﺷــﻤﺎ ﺍﻣﻜﺎﻧﭙــﺬﻳﺮ‬
‫ﺍﺳﺖ ) ﺍﻳﻦ ﺍﻣﺮ ﺑﻪ ﻋﻠﺖ ﻣﺤﺪﻭﺩ ﺑﻮﺩﻥ ﻣﺴﻴﺮﻫﺎﻱ ﺍﺭﺗﺒﺎﻃﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺗﺮﺍﺷﻪ ﻣﻮﺟﻮﺩ ﺍﺳﺖ ( ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪١٧‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٢٢-١‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﺗﺮﺍﺷﻪ ﺟﻬﺖ ﺗﺨﺼﻴﺺ ﮔﺮﻩﻫﺎ ﺑﻪ ﭘﺎﻳﻪﻫﺎﻱ ﺗﺮﺍﺷﻪ‬
‫ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﭘﺮﻭﮊﻩ‬
‫‪٩-١‬‬
‫ﺑﺮﺍﻱ ﻣﺸﺎﻫﺪﻩﻱ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﭘﺮﻭﮊﻩ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫‪<M> Max+PlusII: Hierarchy Display‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﻳــﻚ ﭘﻨﺠــﺮﻩ ﻣﺎﻧﻨــﺪ ﺷــﻜﻞ ‪ ٢٣-١‬ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪ .‬ﻫﻤــﺎﻧﻄﻮﺭ ﻛــﻪ ﺩﺭ ﺷــﻜﻞ‬
‫ﻣﺸــﺎﻫﺪﻩ ﻣــﻲﺷــﻮﺩ ﺳﻠﺴــﻠﻪﻣﺮﺍﺗــﺐ ﻛﺎﻣــﻞ ﭘــﺮﻭﮊﻩ ﺩﺭ ﺍﻳــﻦ ﭘﻨﺠــﺮﻩ ﻧﻤــﺎﻳﺶ ﺩﺍﺩﻩ ﺷــﺪﻩ ﺍﺳــﺖ‪ .‬ﺑــﺎ >‪ <DB‬ﻛــﺮﺩﻥ ﺭﻭﻱ‬
‫ﻫﺮ ﻳﻚ ﺍﺯ ﺁﻳﻜﻮﻧﻬﺎ ﻣﻲﺗـﻮﺍﻥ ﻓﺎﻳـﻞ ﻣﺮﺑﻮﻃـﻪ ﺭﺍ ﻣﺸـﺎﻫﺪﻩ ﻧﻤـﻮﺩ‪ .‬ﺑـﺎ ﺍﻧﺠـﺎﻡ ﺍﻳـﻦ ﻣﺮﺍﺣـﻞ‪ ،‬ﻋﻤﻠﻴـﺎﺕ ﻃﺮﺍﺣـﻲ ﺑـﻪ ﭘﺎﻳـﺎﻥ‬
‫ﻣﻲﺭﺳﺪ‪ .‬ﺣﺎﻝ ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺑـﺎ ﻣﺮﺍﺣـﻞ ﻃﺮﺍﺣـﻲ ﺗﻮﺳـﻂ ﺍﻳـﻦ ﻧـﺮﻡﺍﻓـﺰﺍﺭ ﺑﻴﺸـﺘﺮ ﺁﺷـﻨﺎ ﺷـﻮﻳﻢ‪ ،‬ﺑـﻪ ﺫﻛـﺮ ﺩﻭ ﻣﺜـﺎﻝ ﺩﻳﮕـﺮ‬
‫ﻣﻲﭘﺮﺩﺍﺯﻳﻢ‪.‬‬
‫ﻣﺜﺎﻝ‪ :١‬ﻃﺮﺍﺣﻲ ﺗﺸﺨﻴﺺﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ‬
‫‪١‬‬
‫ﻣــﻲﺧــﻮﺍﻫﻴﻢ ﻳــﻚ ﻣــﺪﺍﺭ ﻃﺮﺍﺣــﻲ ﻛﻨــﻴﻢ ﻛــﻪ ﺩﻧﺒﺎﻟــﻪﻱ ‪ ١١٠‬ﺭﺍ ﺭﻭﻱ ﻭﺭﻭﺩﻱ ﺧــﻮﺩ ﺗﺸــﺨﻴﺺ ﺩﻫــﺪ ﻭ ﺩﺭ‬
‫ﺻﻮﺭﺕ ﻣﺸـﺎﻫﺪﻩﻱ ﺍﻳـﻦ ﺩﻧﺒﺎﻟـﻪ‪ ،‬ﺧﺮﻭﺟـﻲ ﺧـﻮﺩ ﺭﺍ ﻳـﻚ ﻛﻨـﺪ‪ .‬ﻧﻤـﻮﺩﺍﺭ ﺣﺎﻟـﺖ ﺍﻳـﻦ ﻣـﺪﺍﺭ ﺩﺭ ﺷـﻜﻞ ‪ ٢٤-١‬ﻧﻤـﺎﻳﺶ‬
‫ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻛﺪ ‪ VHDL‬ﻣﺮﺑﻮﻃﻪ ﺩﺭ ﻟﻴﺴﺖ ‪ ٥-١‬ﺁﻣﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪ ١‬ﺍﻳﻦ ﻣﺜﺎﻝ ﺍﺯ ﻛﺘﺎﺏ ‪ Z. Navabi, “VHDL, Analysis and Modeling of Digital Systems”, McGraw-Hill, 1999‬ﺍﻗﺘﺒﺎﺱ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪١٨‬‬
Max+PlusII ‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬:‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‬
Double click to
see the content
of each file
‫ ﭘﻨﺠﺮﻩﻱ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﭘﺮﻭﮊﻩ‬-٢٣-١ ‫ﺷﻜﻞ‬
0
1
1
reset
0
1
got1
0
0
got11
0
1
0
0
‫ ﻧﻤﻮﺩﺍﺭ ﺣﺎﻟﺖ ﺗﺸﺨﻴﺺ ﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ‬-٢٤-١ ‫ﺷﻜﻞ‬
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
ENTITY detector IS
PORT(
x, clk : IN STD_LOGIC;
z
: OUT STD_LOGIC);
END detector;
ARCHITECTURE behavioral OF detector IS
TYPE state IS (reset, got1, got11, got110);
SIGNAL current: state:=reset;
BEGIN
PROCESS (clk)
BEGIN
IF clk='1' AND clk'EVENT THEN
CASE current IS
WHEN reset =>
IF x='1' THEN
current <= got1;
ELSE
current <= reset;
END IF;
‫ ﺗﺸﺨﻴﺺ ﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ‬VHDL ‫ ﻛﺪ‬-٥-١ ‫ﻟﻴﺴﺖ‬
١٩ ‫ﺻﻔﺤﻪﻱ‬
got110
1
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫>= ‪WHEN got1‬‬
‫‪IF x='1' THEN‬‬
‫;‪current <= got11‬‬
‫‪ELSE‬‬
‫;‪current <= reset‬‬
‫;‪END IF‬‬
‫>= ‪WHEN got11‬‬
‫‪IF x='1' THEN‬‬
‫;‪current <= got11‬‬
‫‪ELSE‬‬
‫;‪current <= got110‬‬
‫;‪END IF‬‬
‫>= ‪WHEN got110‬‬
‫‪IF x='1' THEN‬‬
‫;‪current <= got1‬‬
‫‪ELSE‬‬
‫;‪current <= reset‬‬
‫;‪END IF‬‬
‫;‪END CASE‬‬
‫;‪END IF‬‬
‫;‪END PROCESS‬‬
‫;'‪z <= '1' WHEN current=got110 ELSE '0‬‬
‫;‪END behavioral‬‬
‫ﻟﻴﺴﺖ ‪ -٥-١‬ﻛﺪ ‪ VHDL‬ﺗﺸﺨﻴﺺ ﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ )ﺍﺩﺍﻣﻪ(‬
‫ﻣﺮﺍﺣﻞ ﺍﻳﺠﺎﺩ ﭘـﺮﻭﮊﻩ ﻭ ﻓﺎﻳـﻞ ﻣﺘﻨـﻲ ﺭﺍ ﻣﺎﻧﻨـﺪ ﻗﺒـﻞ ﺍﻧﺠـﺎﻡ ﻣـﻲﺩﻫـﻴﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻃﻤﻴﻨـﺎﻥ ﺍﺯ ﺻـﺤﺖ ﻋﻤﻜـﺮﺩ ﺍﻳـﻦ‬
‫ﻣــﺪﺍﺭ‪ ،‬ﺷــﻜﻞ ﻣــﻮﺟﻲ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ٢٥-١‬ﻃﺮﺍﺣــﻲ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﭘــﺲ ﺍﺯ ﺍﻧﺠــﺎﻡ ﺷــﺒﻴﻪﺳــﺎﺯﻱ ﺧﺮﻭﺟــﻲ ﻣــﺪﺍﺭ ﻣﻄــﺎﺑﻖ‬
‫ﺷـﻜﻞ ‪ ٢٦-١‬ﺧﻮﺍﻫـﺪ ﺑـﻮﺩ‪ .‬ﻫﻤـﺎﻧﻄﻮﺭ ﻛـﻪ ﺩﺭ ﺷـﻜﻞ ‪ ٢٦-١‬ﻣﺸـﺎﻫﺪﻩ ﻣـﻲﺷـﻮﺩ‪ ،‬ﺩﺭ ﻳـﻚ ‪ State Machine‬ﻣـﻲﺗـﻮﺍﻥ‬
‫ﺣﺎﻟﺘﻲ ﺭﺍ ﻛﻪ ﻣﺪﺍﺭ ﺩﺭ ﺁﻥ ﻗﺮﺍﺭ ﺩﺍﺭﺩ‪ ،‬ﻣﺸﺎﻫﺪﻩ ﻧﻤﻮﺩ‪ .‬ﺍﻳﻦ ﺍﻣﺮ ﺩﺭ ﻋﻴﺐﻳﺎﺑﻲ ﻣﺪﺍﺭﻫﺎ ﺑﺴﻴﺎﺭ ﻣﻔﻴﺪ ﺍﺳﺖ‪.‬‬
‫ﺷﻜﻞ ‪ -٢٥-١‬ﺷﻜﻞ ﻣﻮﺝ ﻭﺭﻭﺩﻱ ﺗﺸﺨﻴﺺ ﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ‬
‫ﺻﻔﺤﻪﻱ ‪٢٠‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٢٦-١‬ﺷﻜﻞ ﻣﻮﺝ ﺧﺮﻭﺟﻲ ﺗﺸﺨﻴﺺ ﺩﻫﻨﺪﻩﻱ ﺩﻧﺒﺎﻟﻪ‬
‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺑﺒﻴﻨﻴﻢ ﺍﻳﻦ ﻣﺪﺍﺭ ﺗﺮﺗﻴﺒﻲ ﺑﺎ ﭼﻪ ﻓﺮﻛﺎﻧﺴﻲ ﻛﺎﺭ ﻣﻲﻛﻨﺪ‪ ،‬ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪:‬‬
‫‪<M> Max+PlusII: Timing Analyzer, to show timing analyzer window‬‬
‫‪<M> Analysis: Registered Performance‬‬
‫‪<LB> Start‬‬
‫ﻫﻤــﺎﻧﻄﻮﺭ ﻛــﻪ ﺩﺭ ﺷــﻜﻞ ‪ ٢٧-١‬ﺩﻳــﺪﻩ ﻣــﻲﺷــﻮﺩ‪ ،‬ﺩﺭ ﺍﻳﻨﺼــﻮﺭﺕ ﺣــﺪﺍﻛﺜﺮ ﻓﺮﻛــﺎﻧﺲ ﻛــﺎﺭﻱ ﻣــﺪﺍﺭ ﺑﺪﺳــﺖ‬
‫ﻣﻲﺁﻳﺪ‪.‬‬
‫ﺷﻜﻞ‪ -٢٧– ١‬ﭘﻨﺠﺮﻩﻱ ﺗﺤﻠﻴﻠﮕﺮ ﺯﻣﺎﻧﻲ )ﺍﻧﺪﺍﺯﻩﮔﻴﺮﻱ ﻓﺮﻛﺎﻧﺲ ﻛﺎﺭﻱ ﻣﺪﺍﺭ(‬
‫ﻣﺜﺎﻝ‪ :٢‬ﻃﺮﺍﺣﻲ ﻳﻚ ‪ ALU‬ﻫﺸﺖ ﺑﻴﺘﻲ‬
‫ﻳﻚ ‪ ALU‬ﻫﺸﺖ ﺑﻴﺘﻲ ﻃﺮﺍﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺩﺍﺭﺍﻱ ﺟﺪﻭﻝ ﺻﺤﺖ ﺯﻳﺮ ﺑﺎﺷﺪ‪.‬‬
‫‪Operation‬‬
‫‪Result <= a + b‬‬
‫‪Result <= a – b‬‬
‫‪If a=b then Result=1 Else E=0‬‬
‫‪If a<>b then Result=1 Else E=0‬‬
‫ﺻﻔﺤﻪﻱ ‪٢١‬‬
‫‪Opcode‬‬
‫‪00‬‬
‫‪01‬‬
‫‪10‬‬
‫‪11‬‬
Max+PlusII ‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬:‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‬
.‫ ﻛﻠﻴﻪﻱ ﻣﺮﺍﺣﻞ ﻃﺮﺍﺣﻲ ﻣﺎﻧﻨﺪ ﻗﺒﻞ ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ‬.‫ ﺁﻣﺪﻩ ﺍﺳﺖ‬٦-١ ‫ ﻣﺮﺑﻮﻃﻪ ﺩﺭ ﻟﻴﺴﺖ‬VHDL ‫ﻛﺪ‬
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY alu IS
PORT (
a, b : IN std_logic_vector(7 DOWNTO 0);
opcode: IN std_logic_vector(1 DOWNTO 0);
result: OUT std_logic_vector(7 DOWNTO 0) );
END alu;
ARCHITECTURE behavioral OF alu IS
CONSTANT plus : std_logic_vector(1
CONSTANT minus : std_logic_vector(1
CONSTANT equal : std_logic_vector(1
CONSTANT not_eq: std_logic_vector(1
DOWNTO
DOWNTO
DOWNTO
DOWNTO
0)
0)
0)
0)
:=
:=
:=
:=
"00";
"01";
"10";
"11";
BEGIN
PROCESS (opcode)
BEGIN
CASE opcode IS
WHEN plus =>
result <= a + b;
-- add
WHEN minus =>
result <= a - b;
-- subtract
WHEN equal =>
-- equal
IF (a = b) THEN
esult <= "00000001";
ELSE
result <= "00000000";
END IF;
WHEN not_eq =>
-- not equal
IF (a /= b) THEN
result <= "00000001";
ELSE
result <= "00000000";
END IF;
WHEN OTHERS =>
NULL;
END CASE;
END PROCESS;
END behavioral;
‫ ﻫﺸﺖ ﺑﻴﺘﻲ‬ALU ‫ ﻣﺮﺑﻮﻁ ﺑﻪ‬VHDL ‫ ﻛﺪ‬-٦-١ ‫ﻟﻴﺴﺖ‬
٢٢ ‫ﺻﻔﺤﻪﻱ‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪٢‬‬
‫ﻃﺮﺍﺣﻲ ﻣﺪﺍﺭ ﺩﻳﺠﻴﺘﺎﻝ ﺑﺼﻮﺭﺕ ﺷﻤﺎﺗﻴﻚ‬
‫ﺩﺭ ﺍﻳ ـﻦ ﺑﺨــﺶ ﺍﺑﺘــﺪﺍ ﻳــﻚ ﺳــﻠﻮﻝ ‪ Full Adder‬ﻳــﻚ ﺑﻴﺘــﻲ ﺭﺍ ﻃﺮﺍﺣــﻲ ﻣــﻲﻛﻨــﻴﻢ‪ ،‬ﺳــﭙﺲ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ‬
‫ﺍﺗﺼﺎﻝ ﺍﻳﻦ ﺳﻠﻮﻟﻬﺎ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻳـﻚ ﺟﻤـﻊ ﻛﻨﻨـﺪﻩﻱ ﭼﻬـﺎﺭ ﺑﻴﺘـﻲ ﺭﺍ ﻣـﻲﺳـﺎﺯﻳﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺍﺑﺘـﺪﺍ ﺑﺮﻧﺎﻣـﻪﻱ‬
‫‪ Max+Plus II‬ﺭﺍ ﺍﺟــﺮﺍ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺳــﭙﺲ ﻳــﻚ ﭘــﺮﻭﮊﻩﻱ ﭼﺪﻳــﺪ ﺍﻳﺠــﺎﺩ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺠــﺎ ﺩﺍﻳﺮﻛﺘــﻮﺭﻱ‬
‫‪ max2work‬ﻭ ﻧﺎﻡ ﭘﺮﻭﮊﻩ ﺭﺍ ‪ adder‬ﺍﻧﺘﺨﺎﺏ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪١-٢‬‬
‫ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﻧـﺎﻡ ﭘـﺮﻭﮊﻩ ﺭﺍ ﻣﺸـﺨﺺ ﻛـﺮﺩﻳﻢ‪ ،‬ﺑﺎﻳـﺪ ﻃﺮﺣﻬـﺎﻳﻲ ﺭﺍ ﻛـﻪ ﺩﺭ ﺍﻳـﻦ ﭘـﺮﻭﮊﻩ ﻣـﻮﺭﺩ ﺍﺳـﺘﻔﺎﺩﻩ ﻗـﺮﺍﺭ‬
‫ﻣﻲﮔﻴﺮﺩ‪ ،‬ﺑﻪ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﺍﺿﺎﻓﻪ ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺍﻳـﻦ ﺍﻣـﺮ ﻓﺎﻳﻠﻬـﺎﻱ ﺟﺪﻳـﺪ ﺭﺍ ﺍﻳﺠـﺎﺩ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺠـﺎ ﺍﺑﺘـﺪﺍ ﻳـﻚ ﺳـﻠﻮﻝ‬
‫ﺟﻤﻊ ﻛﻨﻨﺪﻩﻱ ﻳﻚ ﺑﻴﺘﻲ ﺭﺍ ﺳﺎﺧﺘﻪ ﻭ ﺳـﭙﺲ ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﻳـﻚ ﺟﻤـﻊ ﻛﻨﻨـﺪﻩﻱ ﭼﻬـﺎﺭ ﺑﻴﺘـﻲ ﺭﺍ ﻣـﻲﺳـﺎﺯﻳﻢ‪ .‬ﺑﺎﻳـﺪ‬
‫ﺩﻗﺖ ﺩﺍﺷﺖ ﻛﻪ ﻫﻤﻴﺸﻪ ﺑﺎﻳﺪ ﻧﺎﻡ ﭘﺮﻭﮊﻩ ﺑﺎ ﻧﺎﻡ ﻣﺪﺍﺭ ﺩﺭ ﺑﺎﻻﺗﺮﻳﻦ ﺳﻄﺢ ﻳﻜﺴﺎﻥ ﺑﺎﺷﺪ‪.‬‬
‫‪<M> File: New‬‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻦ ﺍﻣـﺮ ﭘﻨﺠـﺮﻩﻱ ﺍﻳﺠـﺎﺩ ﻓﺎﻳـﻞ ﺟﺪﻳـﺪ ﻣﻄـﺎﺑﻖ ﺷـﻜﻞ ‪ ١-٢‬ﺑـﺮ ﺭﻭﻱ ﺻـﻔﺤﻪ ﻧﻤـﺎﻳﺶ ﺩﺍﺩﻩ ﻣـﻲﺷـﻮﺩ‪.‬‬
‫ﺣﺎﻝ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪Select Graphic Editor file‬‬
‫‪Select .gdf filename extension from combo box‬‬
‫‪<LB> on Ok‬‬
‫ﺷﻜﻞ ‪ -١-٢‬ﭘﻨﺠﺮﻩﻱ ﺍﻳﺠﺎﺩ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﺑﺎ ﺍﻧﺠـﺎﻡ ﺍﻳـﻦ ﻋﻤﻠﻴـﺎﺕ ﭘﻨﺠـﺮﻩﻱ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﻓﺎﻳـﻞ ﺷـﻤﺎﺗﻴﻚ ﺑـﺮ ﺭﻭﻱ ﺻـﻔﺤﻪ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ‪ .‬ﺣـﺎﻝ ﺑﺎﻳـﺪ‬
‫ﺍﻳﻦ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺭﺍ ﺫﺧﻴﺮﻩ ﻧﻤﻮﺩ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> File: Save As‬‬
‫ﺣﺎﻝ ﺩﺭ ﭘﻨﺠﺮﻩﻱ ﻇﺎﻫﺮ ﺷﺪﻩ ﻧﺎﻡ ‪ fa1bit‬ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﻧﺎﻡ ﻓﺎﻳﻞ ﻭﺍﺭﺩ ﻣﻲﻛﻨﻴﻢ )ﺷﻜﻞ ‪ ٢-٢‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ(‪.‬‬
‫‪<LB> on Ok‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٣‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪You can change‬‬
‫‪default file‬‬
‫‪extension‬‬
‫ﺷﻜﻞ ‪ -٢-٢‬ﭘﻨﺠﺮﻩﻱ ﺫﺧﻴﺮﻩ ﻱ ﻓﺎﻳﻞ ﺟﺪﻳﺪ‬
‫ﺩﺭ ﺷﻜﻞ ‪ ٣-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﻭ ﺑﺨﺸﻬﺎﻱ ﻣﺨﺘﻠﻒ ﺁﻥ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪Select tool‬‬
‫‪Text tool‬‬
‫‪Orthogonal line tool‬‬
‫‪Diagonal line tool‬‬
‫‪Arc tool‬‬
‫‪Circle tool‬‬
‫‪Zoom in‬‬
‫‪Zoom out‬‬
‫‪Full fit‬‬
‫‪Workspace‬‬
‫ﺷﻜﻞ ‪ -٣-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ‬
‫‪٢-٢‬‬
‫ﺍﻓﺰﻭﺩﻥ ﻧﻤﺎﺩﻫﺎ‬
‫ﺣــﺎﻝ ﺑــﺮﺍﻱ ﻃﺮﺍﺣــﻲ ﺟﻤــﻊ ﻛﻨﻨــﺪﻩﻱ ﻳــﻚ ﺑﻴﺘــﻲ ﺍﺑﺘــﺪﺍ ﺑﺎﻳــﺪ ﺩﻭ ﮔﻴــﺖ ‪ XOR‬ﻭ ﺩﻭ ﮔﻴــﺖ ‪ AND‬ﻭ ﻳــﻚ‬
‫ﮔﻴﺖ ‪ OR‬ﺭﺍ ﺑـﻪ ﻧﺎﺣﻴـﻪ ﻱ ﻛـﺎﺭﻱ ﺍﺿـﺎﻓﻪ ﻛﻨـﻴﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻓـﺰﻭﺩﻥ ﻳـﻚ ﻧﻤـﺎﺩ ) ﺍﻧـﻮﺍﻉ ﮔﻴﺘﻬـﺎ‪ ،‬ﻋﻨﺎﺻـﺮ ﺍﺯ ﭘـﻴﺶ ﺗﻌﺮﻳـﻒ‬
‫ﺷﺪﻩ‪ ،‬ﻋﻨﺎﺻﺮ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺗﻮﺳﻂ ﻛﺎﺭﺑﺮ‪ ،‬ﭘﻮﺭﺗﻬﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟﻲ ﻭ ‪ ( ..‬ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٤‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﭘﻨﺠــﺮﻩﻱ ﻭﺭﻭﺩ ﻧﻤــﺎﺩ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ ‪ ٤-٢‬ﻇــﺎﻫﺮ‬
‫‪<DL> in an empty space in the Workspace‬‬
‫ﻣــﻲﺷــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﻭﺭﻭﺩ ﻳــﻚ ﻋﻨﺼــﺮ ﺩﺭ ﻣﺤــﻞ ‪Symbol‬‬
‫‪ Name‬ﻧﺎﻡ ﻧﻤﺎﺩ ﻣﻮﺭﺩ ﻧﻈﺮ‪ ،‬ﺩﺭ ﺍﻳﻨﺤﺎﻟﺖ ‪ XOR‬ﺭﺍ ﻭﺍﺭﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<LB> on Ok‬‬
‫ﻫﻤــﻴﻦ ﻋﻤﻠﻴــﺎﺕ ﺭﺍ ﺑــﺮﺍﻱ ﭼﻬــﺎﺭ ﮔﻴــﺖ ﺩﻳﮕــﺮ ) ﻳــﻚ ﮔﻴــﺖ ‪ ، XOR‬ﺩﻭ ﮔﻴــﺖ ‪ AND2‬ﻭ ﻳــﻚ ﮔﻴــﺖ‬
‫‪OR2‬‬
‫( ﺗﻜــﺮﺍﺭ ﻣــﻲﻛﻨــﻴﻢ ) ﺩﻗــﺖ ﻛﻨﻴــﺪ ﺑــﺮﺍﻱ ﮔﻴﺘﻬــﺎﻱ ﭘﺎﻳــﻪ ﺑﺠــﺰ ‪ XOR‬ﺗﻌــﺪﺍﺩ ﻭﺭﻭﺩﻳﻬــﺎﻱ ﮔﻴــﺖ ﺑــﻪ ﺩﻧﺒــﺎﻝ ﻧــﺎﻡ ﮔﻴــﺖ‬
‫ﻣــﻲﺁﻳــﺪ ﺑــﺮﺍﻱ ﻣﺜــﺎﻝ ‪ AND2‬ﻳــﻚ ﮔﻴــﺖ ‪ AND‬ﺩﻭ ﻭﺭﻭﺩﻱ ﺍﺳــﺖ (‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﻣــﺪﺍﺭ ﺑﺼــﻮﺭﺕ ﺷــﻜﻞ ‪ ٥-٢‬ﺩﺭ‬
‫ﻣﻲﺁﻳﺪ‪.‬‬
‫‪Enter symbol‬‬
‫‪name here‬‬
‫‪List all‬‬
‫‪symbols in‬‬
‫‪the current‬‬
‫‪directory‬‬
‫ﺷﻜﻞ ‪ -٤-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﺭﻭﺩ ﻧﻤﺎﺩ‬
‫ﺑــﺮﺍﻱ ﺣﺮﻛــﺖ ﺩﺍﺩﻥ ﻳــﻚ ﻧﻤــﺎﺩ ﻛﺎﻓﻴﺴــﺖ ﺍﺑﺘــﺪﺍ ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻓﺎﻳــﻞ ﺷــﻤﺎﺗﻴﻚ ﺭﻭﻱ ﺁﻳﻜــﻮﻥ‬
‫‪ Select‬ﺑﺎ ﻛﻠﻴﺪ ﺳـﻤﺖ ﭼـﭗ ﻣـﺎﻭﺱ ﻛﻠﻴـﻚ ﻛـﺮﺩﻩ ﺳـﭙﺲ ﺩﺭ ﺣﺎﻟﻴﻜـﻪ ﻛﻠﻴـﺪ ﻣـﺎﻭﺱ ﻫﻤﭽﻨـﺎﻥ ﭘـﺎﻳﻴﻦ ﺍﺳـﺖ‪ ،‬ﺁﻥ ﺭﺍ‬
‫ﺑﻪ ﻣﺤﻞ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑـﺮﺩﻩ ﻭ ﻛﻠﻴـﺪ ﻣـﺎﻭﺱ ﺭﺍ ﺭﻫـﺎ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺑـﻪ ﺍﻳـﻦ ﺗﺮﺗﻴـﺐ ﻧﻤـﺎﺩ ﺑـﻪ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺍﻧﺘﻘـﺎﻝ ﺩﺍﺩﻩ‬
‫ﻣــﻲﺷــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﺍﻳﻨﻜــﻪ ﻳــﻚ ﻛﭙــﻲ ﺩﻳﮕــﺮ ﺍﺯ ﻳــﻚ ﻧﻤــﺎﺩ ﺍﻳﺠــﺎﺩ ﻛﻨــﻴﻢ‪ ،‬ﻛﺎﻓﻴﺴــﺖ ﺩﺭ ﺣﺎﻟﻴﻜــﻪ ﻛﻠﻴــﺪ ‪ Ctrl‬ﺭﺍ ﺯﺩﻩ ﺍﻳــﻢ‪،‬‬
‫ﻋﻤﻠﻴﺎﺕ ﻓﻮﻕ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺼﻮﺭﺕ ﻳﻚ ﻛﭙﻲ ﺍﺯ ﻧﻤﺎﺩ ﺩﺭ ﻣﺤﻞ ﺟﺪﻳﺪ ﺍﻳﺠﺎﺩ ﻣﻲﺷﻮﺩ‪.‬‬
‫ﭘــﺲ ﺍﺯ ﺍﻓــﺰﻭﺩﻥ ﮔﻴﺘﻬــﺎ ﻧﻮﺑــﺖ ﺑــﻪ ﺍﻓــﺰﻭﺩﻥ ﭘﻮﺭﺗﻬــﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟــﻲ ﺍﺳــﺖ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ‬
‫ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<DL> in an empty space in the Workspace‬‬
‫‪In the Enter Symbol window, Enter input in the Symbol Name box‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٥‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪<LB> on Ok‬‬
‫ﻫﻤــﻴﻦ ﻋﻤﻠﻴــﺎﺕ ﺭﺍ ﺑــﺮﺍﻱ ﺩﻭ ﭘــﻮﺭﺕ ﻭﺭﻭﺩﻱ ﺩﻳﮕــﺮ ﻭ ﺑــﺮﺍﻱ ﺩﻭ ﭘـﻮﺭﺕ ﺧﺮﻭﺟــﻲ ﺍﻧﺠــﺎﻡ ﻣــﻲﺩﻫــﻴﻢ ) ﺑــﺮﺍﻱ‬
‫ﭘﻮﺭﺗﻬﺎﻱ ﺧﺮﻭﺟﻲ ﺑﺎﻳﺪ ﻧﺎﻡ ﻧﻤﺎﺩ ﺭﺍ ﺑﺼﻮﺭﺕ ‪ output‬ﻭﺍﺭﺩ ﻛﻨﻴﻢ (‪.‬‬
‫ﺷﻜﻞ ‪ -٥-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﭘﺲ ﺍﺯ ﺍﻓﺰﻭﺩﻥ ﻧﻤﺎﺩﻫﺎ‬
‫‪٣-٢‬‬
‫ﻧﺎﻣﮕﺬﺍﺭﻱ ﭘﻮﺭﺗﻬﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟﻲ‬
‫ﭘــﺲ ﺍﺯ ﺍﻓــﺰﻭﺩﻥ ﭘﻮﺭﺗﻬــﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟــﻲ ﺑﺎﻳــﺪ ﺍﻳــﻦ ﭘﻮﺭﺗﻬــﺎ ﺭﺍ ﻧﺎﻣﮕــﺬﺍﺭﻱ ﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﺣﺎﻟــﺖ ﻋــﺎﺩﻱ‬
‫ﻫــﺮ ﭘــﻮﺭﺕ ﺑﺼــﻮﺭﺕ >‪ <symbol name>:<symbol ID‬ﻣﺸــﺨﺺ ﻣــﻲﺷــﻮﺩ‪ ،‬ﺑــﺮﺍﻱ ﻣﺜــﺎﻝ ‪ INPUT:2‬ﻧﺸــﺎﻥ‬
‫ﻣـﻲﺩﻫـﺪ ﻛـﻪ ﺍﻳـﻦ ﭘــﻮﺭﺕ‪ ،‬ﻳـﻚ ﭘـﻮﺭﺕ ﻭﺭﻭﺩﻱ ﺑـﺎ ﺷـﻤﺎﺭﻩ ﺷﻨﺎﺳــﻪ ﻱ ‪ ٢‬ﺍﺳـﺖ ) ﺷـﻤﺎﺭﻩ ﻱ ﺷﻨﺎﺳـﻪ ﻧﺸــﺎﻧﺪﻫﻨﺪﻩ ﻱ‬
‫ﺍﻳﻦ ﺍﺳـﺖ ﻛـﻪ ﻧﻤـﺎﺩ ﻭﺍﺭﺩ ﺷـﺪﻩ ﭼﻨـﺪﻣﻴﻦ ﻧﻤـﺎﺩﻱ ﺍﺳـﺖ ﻛـﻪ ﺩﺭ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺷـﻤﺎﺗﻴﻚ ﺍﻓـﺰﻭﺩﻩ ﺷـﺪﻩ ﺍﺳـﺖ (‪ .‬ﺑـﺮﺍﻱ‬
‫ﺍﻳﻨﻜﻪ ﺑﻪ ﻳﻚ ﭘﻮﺭﺕ ﻭﺭﻭﺩﻱ‪/‬ﺧﺮﻭﺟﻲ ﻧﺎﻣﻲﺭﺍ ﻧﺴﺒﺖ ﺩﻫﻴﻢ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪Point to the default pin name PIN_NAME of an input/output port‬‬
‫‪<DL> to select the entire name‬‬
‫‪Enter desired name ( in this example x ) to change the port name‬‬
‫‪Press Enter to select the next port name below it is automatically selected for editing‬‬
‫ﭘﺲ ﺍﺯ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﻋﻤﻠﻴﺎﺕ ﺷﻜﻞ ﻣﺪﺍﺭ ﺑﺼﻮﺭﺕ ﺷﻜﻞ ‪ ٦-٢‬ﺩﺭ ﺧﻮﺍﻫﺪ ﺁﻣﺪ‪.‬‬
‫‪٤-٢‬‬
‫ﺍﺗﺼﺎﻝ ﻧﻤﺎﺩﻫﺎ ﺑﻪ ﻳﻜﺪﻳﮕﺮ‬
‫ﭘــﺲ ﺍﺯ ﺍﻳﻨﻜــﻪ ﻧﻤﺎﺩﻫــﺎ ﻭ ﭘﻮﺭﺗﻬــﺎ ﺭﺍ ﺑــﻪ ﻓﺎﻳــﻞ ﺷــﻤﺎﺗﻴﻚ ﺍﻓــﺰﻭﺩﻳﻢ ﻭ ﭘﻮﺭﺗﻬــﺎ ﺭﺍ ﻧﺎﻣﮕــﺪﺍﺭﻱ ﻛــﺮﺩﻳﻢ‪ ،‬ﺑﺎﻳــﺪ‬
‫ﻧﻤﺎﺩﻫﺎ ﺭﺍ ﺑﻪ ﻧﺤﻮ ﻣﻨﺎﺳﺐ ﺑﻪ ﻳﻜﺪﻳﮕﺮ ﻣﺘﺼـﻞ ﻛﻨـﻴﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺍﺯ ﺳـﻴﻢ ﻭ ﮔـﺬﺭﮔﺎﻩ ﺍﺳـﺘﻔﺎﺩﻩ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺑـﺮﺍﻱ‬
‫ﺍﺗﺼﺎﻝ ﺩﻭ ﻧﻤﺎﺩ ﺍﺯ ﻃﺮﻳﻖ ﺳﻴﻢ ﺑﻪ ﻳﻜﺪﻳﮕﺮ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<LB> on Orthogonal line tool‬‬
‫‪<LB> on the output of the x input port and drag the wire to the input of the XOR gate‬‬
‫‪and then release the left button of the mouse‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٦‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٦-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﭘﺲ ﺍﺯ ﻧﺎﻣﮕﺬﺍﺭﻱ ﭘﻮﺭﺗﻬﺎ‬
‫ﺑــﻪ ﻫﻤــﻴﻦ ﺗﺮﺗﻴــﺐ ﺳــﺎﻳﺮ ﺳــﻴﻤﻬﺎ ﺭﺍ ﺭﺳــﻢ ﻣــﻲﻛﻨــﻴﻢ ﺗــﺎ ﻣــﺪﺍﺭ ﺑﺼــﻮﺭﺕ ﺷــﻜﻞ ‪ ٧-٢‬ﺩﺭ ﺁﻳــﺪ‪ .‬ﺳــﭙﺲ ﻓﺎﻳــﻞ‬
‫‪ fa1bit‬ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> File: Save‬‬
‫ﻧﺤــﻮﻩ ﻱ ﺭﺳــﻢ ﮔــﺬﺭﮔﺎﻩ ﻧﻴــﺰ ﺩﻗﻴﻘــﺎ ﻣﺎﻧﻨــﺪ ﺳــﻴﻢ ﺍﺳــﺖ‪ ،‬ﺑــﺎ ﺍﻳــﻦ ﺗﻔــﺎﻭﺕ ﻛــﻪ ﭘــﺲ ﺍﺯ ﺍﻳﻨﻜــﻪ ﺳــﻴﻢ ﺭﺍ ﺭﺳــﻢ‬
‫ﻧﻤﻮﺩﻳﻢ‪ ،‬ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<LB> on the wire to select it‬‬
‫‪<RB> on the selected wire‬‬
‫‪In the case sensitive menu, Select Line Style, and then select the second item (thick‬‬
‫)‪line‬‬
‫‪The selected wire changes to the bus‬‬
‫‪٥-٢‬‬
‫ﺍﻳﺠﺎﺩ ﻧﻤﺎﺩ ﺍﺯ ﺭﻭﻱ ﻃﺮﺡ‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﺟﻤـﻊ ﻛﻨﻨـﺪﻩ ﻱ ﻳـﻚ ﺑﻴﺘـﻲ ﺭﺍ ﺫﺧﻴـﺮﻩ ﻛـﺮﺩﻳﻢ ﺑﺎﻳـﺪ ﺍﺯ ﺭﻭﻱ ﺁﻥ ﻳـﻚ ﻧﻤـﺎﺩ ﺍﻳﺠـﺎﺩ ﻛﻨـﻴﻢ‪ ،‬ﺗـﺎ ﺩﺭ‬
‫ﺁﻳﻨﺪﻩ ﺑﺘﻮﺍﻥ ﺑﻌﻨﻮﺍﻥ ﻳﻚ ﻧﻤﺎﺩ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩ‪ .‬ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> File: Create Default Symbol‬‬
‫ﺑــﻪ ﺍﻳــﻦ ﺻــﻮﺭﺕ ﻳــﻚ ﻧﻤــﺎﺩ ﺑ ـﻪ ﻧــﺎﻡ ‪ fa1bit‬ﺍﻳﺠــﺎﺩ ﻣــﻲﺷــﻮﺩ ﻛــﻪ ﻣــﻲﺗــﻮﺍﻧﻴﻢ ﺍﺯ ﺁﻥ ﺩﺭ ﻣﺤــﻴﻂ ﺷــﻤﺎﺗﻴﻚ‬
‫ﺍﺳــﺘﻔﺎﺩﻩ ﻛﻨــﻴﻢ )ﺍﻟﺒﺘــﻪ ﺑﻬﺘــﺮ ﺍﺳــﺖ ﭘــﻴﺶ ﺍﺯ ﺍﻳﺠــﺎﺩ ﻳــﻚ ﻧﻤــﺎﺩ ﺍﺯ ﺭﻭﻱ ﻳــﻚ ﻃــﺮﺡ‪ ،‬ﺍﺯ ﺻــﺤﺖ ﺁﻥ ﻣﻄﻤــﺌﻦ ﺷــﻮﻳﻢ (‪.‬‬
‫ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺍﻳﻦ ﻧﻤﺎﺩ ﺩﺭ ﻳﻚ ﻓﺎﻳﻞ ﻣﺘﻨﻲ ‪ AHDL‬ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ ﺑﺎﻳﺪ ﺑﻪ ﺗﺮﺗﻴﺐ ﺯﻳﺮ ﻋﻤﻞ ﻛﻨﻴﻢ‪:‬‬
‫‪<M> File: Create Default Include File‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٧‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -٧-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﭘﺲ ﺍﺯ ﺍﺗﺼﺎﻝ ﻧﻤﺎﺩﻫﺎ‬
‫ﺍﻳﺠﺎﺩ ﻳﻚ ﺟﻤﻊ ﻛﻨﻨﺪﻩ ﭼﻬﺎﺭ ﺑﻴﺘﻲ‬
‫‪٦-٢‬‬
‫ﺍﻛﻨــﻮﻥ ﺑﺎﻳــﺪ ﻳــﻚ ﻣــﺪﺍﺭ ﺩﻳﮕــﺮ ﺍﻳﺠــﺎﺩ ﻛﻨــﻴﻢ ﻛــﻪ ﺑــﺎ ﺍﺗﺼــﺎﻝ ﭼﻬــﺎﺭ ﻧﻤــﺎﺩ ‪ fa1bit‬ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ‪ ،‬ﻳــﻚ‬
‫ﺟﻤﻊﻛﻨﻨـﺪﻩﻱ ﺟﻬـﺎﺭ ﺑﻴﺘـﻲ ﺑﺪﺳـﺖ ﺑﻴﺎﻳـﺪ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺑﺎﻳـﺪ ﻳـﻚ ﻓﺎﻳـﻞ ﺷـﻤﺎﺗﻴﻚ ﺟﺪﻳـﺪ ﺍﻳﺠـﺎﺩ ﻛﻨـﻴﻢ‪ .‬ﻭﻟـﻲ‬
‫ﻫﻤﺎﻧﻄﻮﺭﻛﻪ ﻗﺒﻼ ﺍﺷـﺎﺭﻩ ﺷـﺪ ﻧـﺎﻡ ﻣـﺪﺍﺭ ﺩﺭ ﺑـﺎﻻﺗﺮﻳﻦ ﺳـﻄﺢ ﺑﺎﻳـﺪ ﺑـﺎ ﻧـﺎﻡ ﭘـﺮﻭﮊﻩ ﻳﻜﺴـﺎﻥ ﺑﺎﺷـﺪ‪ .‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﻳـﻚ ﻓﺎﻳـﻞ‬
‫ﺷﻤﺎﺗﻴﻚ ﺑﺎ ﻧﺎﻡ ‪ adder‬ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> File: New, to show New File window‬‬
‫‪Select Graphic Editor file‬‬
‫‪Select .gdf filename extension from combo box‬‬
‫‪<LB> on Ok, to show Graphic Editor window‬‬
‫‪<M> File: Save As, to show Save As window‬‬
‫)‪Enter the name of the top level design, (in this example adder‬‬
‫‪<LB> on Ok‬‬
‫ﺳﭙﺲ ﺩﺭ ﺍﻳﻦ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﭼﻬﺎﺭ ﻧﻤﺎﺩ ‪ fa1bit‬ﺍﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ ) ﺷﻜﻞ ‪ ٨-٢‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ (‪.‬‬
‫ﺍﺗﺼﺎﻝ ﻧﻤﺎﺩﻫﺎ ﺑﻪ ﻳﻜﺪﻳﮕﺮ ﺍﺯ ﻃﺮﻳﻖ ﻧﺎﻡ‬
‫‪٧-٢‬‬
‫ﺩﺭ ﺑﺨــﺶ ‪ ٦-٢‬ﻧﺤــﻮﻩ ﻱ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯﺳــﻴﻢ ﺑــﺮﺍﻱ ﺍﺗﺼــﺎﻝ ﺩﻭ ﻧﻤــﺎﺩ ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ ﺭﺍ ﺩﻳــﺪﻳﻢ‪ .‬ﺩﺭ ﺍﻳــﻦ ﺑﺨــﺶ‬
‫ﻣــﻲﺧــﻮﺍﻫﻴﻢ ﺑﺒﻴﻨــﻴﻢ ﭼﮕﻮﻧــﻪ ﻣــﻲﺗــﻮﺍﻥ ﺑــﺮﺍﻱ ﺍﺗﺼــﺎﻝ ﻧﻤــﺎﺩﻩ ﺑــﻪ ﻳﻜــﺪﻳﮕﺮ ﺍﺯ ﻧــﺎﻡ ﺍﺳــﺘﻔﺎﺩﻩ ﻧﻤــﻮﺩ‪ .‬ﺩﺭ ﻭﻳﺮﺍﻳﺸــﮕﺮ‬
‫ﺷﻤﺎﺗﻴﻚ ﭼﻨﺎﻧﭽـﻪ ﺩﻭ ﺳـﻴﻢ ﺩﺍﺭﺍﻱ ﻧـﺎﻡ ﻳﻜﺴـﺎﻥ ﺑﺎﺷـﻨﺪ‪ ،‬ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ ﻣﺘﺼـﻞ ﻫﺴـﺘﻨﺪ‪ .‬ﺩﻗـﺖ ﻛﻨﻴـﺪ ﺍﻳـﻦ ﺍﻣـﺮ ﻓﻘـﻂ ﺩﺭ‬
‫ﻣـﻮﺭﺩ ﺳـﻴﻢ ﻭ ﮔـﺬﺭﮔﺎﻩ ﺻــﺎﺩﻕ ﺍﺳـﺖ‪ ،‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﺑﺎﻳــﺪ ﺩﺭ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟـﻲ ﻧﻤﺎﺩﻫـﺎ ﻳـﻚ ﻗﻄﻌــﻪ ﺳـﻴﻢ ﻳـﺎ ﮔــﺬﺭﮔﺎﻩ‬
‫ﺭﺳﻢ ﻧﻤﻮﺩ‪ ،‬ﺳﭙﺲ ﺑﻪ ﺁﻧﻬﺎ ﻧﺎﻡ ﺍﺧﺘﺼـﺎﺹ ﺩﺍﺩ‪ .‬ﺑـﺮﺍﻱ ﺍﺧﺘﺼـﺎﺹ ﺩﺍﺩﻥ ﻧـﺎﻡ ﺑـﻪ ﻳـﻚ ﻗﻄﻌـﻪ ﺳـﻴﻢ ﺑﺼـﻮﺭﺕ ﺯﻳـﺮ ﻋﻤـﻞ‬
‫ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<LB> on the wire to select it, a small blinking square appears below the line, to show‬‬
‫‪the insertion point‬‬
‫‪Enter the name of the wire, the name appears above the line Press the Enter key, to‬‬
‫‪assign the name to the wire‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٨‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺩﺭ ﺷﻜﻞ ‪ ٩-٢‬ﻫﻤﻴﻦ ﺍﻣﺮ ﺩﺭ ﻣﻮﺭﺩ ﻣﺜـﺎﻝ ﺟﻤـﻊ ﻛﻨﻨـﺪﻩ ﺑـﻪ ﻧﻤـﺎﻳﺶ ﺩﺭ ﺁﻣـﺪﻩ ﺍﺳـﺖ‪ .‬ﺩﻗـﺖ ﻛﻨﻴـﺪ ﻛـﻪ ﺧﻄـﻮﻁ‬
‫ﭘﺮﺭﻧﮓ ﮔﺬﺭﮔﺎﻩ ﻫﺴـﺘﻨﺪ‪ .‬ﺑـﻪ ﻫﻨﮕـﺎﻡ ﻧﺎﻣﮕـﺬﺍﺭﻱ ﮔـﺬﺭﮔﺎﻩ ﺑﺎﻳـﺪ ﺍﺯ ﺭﻭﺵ ﻧﺎﻣﮕـﺬﺍﺭﻱ ﮔﺮﻭﻫـﻲ ﺍﺳـﺘﻔﺎﺩﻩ ﻧﻤـﻮﺩ‪ .‬ﭘـﺲ ﺍﺯ‬
‫ﺁﻥ ﻓﺎﻳﻞ ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﺷﻜﻞ ‪ -٨-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﺟﻤﻊ ﻛﻨﻨﺪﻩ ﻱ ﭼﻬﺎﺭ ﺑﻴﺘﻲ‬
‫ﺷﻜﻞ ‪ -٩-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻓﺎﻳﻞ ﺷﻤﺎﺗﻴﻚ ﺟﻤﻊ ﻛﻨﻨﺪﻩ ﻱ ﭼﻬﺎﺭ ﺑﻴﺘﻲ ﭘﺲ ﺍﺯ ﺍﺗﺼﺎﻝ ﺍﺯ ﻃﺮﻳﻖ ﺍﺯ ﻧﺎﻡ‬
‫ﺍﻧﺘﺨﺎﺏ ﺗﺮﺍﺷﻪ‬
‫‪٨-٢‬‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﻃﺮﺡ ﺁﻣﺎﺩﻩ ﺷـﺪ‪ ،‬ﺑﺎﻳـﺪ ﺁﻥ ﺭﺍ ﻛﺎﻣﭙﺎﻳـﻞ ﻛﻨـﻴﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﻧﺨﺴـﺖ ﺑﺎﻳـﺪ ﻧـﻮﻉ ﺗﺮﺍﺷـﻪ ﺍﻱ‬
‫ﻛــﻪ ﻣــﻲﺧــﻮﺍﻫﻴﻢ ﻃــﺮﺡ ﻣــﺎ ﺭﻭﻱ ﺁﻥ ﻧﮕﺎﺷــﺖ ﺷــﻮﺩ ﺭﺍ ﻣﺸــﺨﺺ ﻛﻨــﻴﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﺑﺼــﻮﺭﺕ ﺯﻳــﺮ ﻋﻤــﻞ‬
‫ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> Assign: Device, to show Device window‬‬
‫ﺻﻔﺤﻪﻱ ‪٢٩‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﺍﻧﺘﺨــﺎﺏ ﺗﺮﺍﺷــﻪ‪ ،‬ﻧﺨﺴــﺖ ﺑﺎﻳــﺪ ﺍﺯ ﻟﻴﺴــﺖ ‪ Device Family‬ﺧــﺎﻧﻮﺍﺩﻩﻱ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺍﻧﺘﺨــﺎﺏ‬
‫ﻧﻤـﻮﺩ‪ .‬ﺩﺭ ﺍﻳﻨﺼــﻮﺭﺕ ﺩﺭ ﻟﻴﺴــﺖ ‪ Devices‬ﻧــﺎﻡ ﺗﺮﺍﺷـﻪ ﻫــﺎﻱ ﻣﻮﺟــﻮﺩ ﺩﺭ ﺍﻳــﻦ ﺧـﺎﻧﻮﺍﺩﻩ ﺑــﻪ ﻧﻤــﺎﻳﺶ ﺩﺭ ﻣــﻲﺁﻳــﺪ‪ .‬ﺩﺭ‬
‫ﺻــﻮﺭﺗﻴﻜﻪ ﺑﺨــﻮﺍﻫﻴﻢ ﺍﺑــﺰﺍﺭ ﺳــﻨﺘﺰ ﺑﻬﺘــﺮﻳﻦ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺑــﺮﺍﻱ ﻃــﺮﺡ ﻣــﺎ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﺪ‪ ،‬ﺑﺎﻳــﺪ ﺩﺭ ﻟﻴﺴــﺖ‬
‫‪Devices‬‬
‫ﮔﺰﻳﻨﻪﻱ ‪ AUTO‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﻮﺩ‪.‬‬
‫ﻛﺎﻣﭙﺎﻳﻞ ﻃﺮﺡ‬
‫‪٩-٢‬‬
‫ﭘــﺲ ﺍﺯ ﺍﻧﺘﺨــﺎﺏ ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ﺑﺎﻳــﺪ ﻃــﺮﺡ ﺭﺍ ﻛﺎﻣﭙﺎﻳــﻞ ﻧﻤــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﺑﺎﻳــﺪ ﺑﺼــﻮﺭﺕ ﺯﻳــﺮ ﻋﻤــﻞ‬
‫ﻧﻤﻮﺩ ‪:‬‬
‫‪<M> Max+PlusII: Compiler‬‬
‫ﺑــﺮﺍﻱ ﺷــﺮﻭﻉ ﻋﻤﻠﻴــﺎﺕ ﻛﺎﻣﭙﺎﻳــﻞ ﺗﻮﺳــﻂ ﻣــﺎﻭﺱ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Start‬ﻛﻠﻴــﻚ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﻃــﻲ ﺍﻧﺠــﺎﻡ‬
‫ﻋﻤﻠﻴــﺎﺕ ﻛﺎﻣﭙﺎﻳــﻞ ﮔﺰﺍﺭﺷــﻲ ﺍﺯ ﺧﻄﺎﻫــﺎ ﻭ ‪ warning‬ﻫــﺎﻱ ﺍﺣﺘﻤــﺎﻟﻲ ﺩﺭ ﻳــﻚ ﭘﻨﺠــﺮﻩ ﺑﻨــﺎﻡ ‪ Message‬ﺑــﻪ ﻧﻤــﺎﻳﺶ ﺩﺭ‬
‫ﻣﻲﺁﻳﺪ‪ .‬ﭼﻨﺎﻧﭽـﻪ ﺑﺨـﻮﺍﻫﻴﻢ ﻣﺤـﻞ ﺑـﺮﻭﺯ ﺧﻄـﺎ ﺭﺍ ﻣﺸـﺎﻫﺪﻩ ﻛﻨـﻴﻢ‪ ،‬ﻛﺎﻓﻴﺴـﺖ ﺗﻮﺳـﻂ ﻣـﺎﻭﺱ ﺭﻭﻱ ﺧﻄـﺎﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ‬
‫ﻛﻠﻴــﻚ ﻛــﺮﺩﻩ ﻭ ﺳــﭙﺲ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Locate‬ﻛﻠﻴــﻚ ﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﻃــﺮﺡ ﺷــﻤﺎ ﺩﺭﻭﻥ ﻳــﻚ ﺗﺮﺍﺷــﻪ ﺟــﺎﻱ‬
‫ﻧﮕﻴﺮﺩ‪ ،‬ﺍﺑﺰﺍﺭ ﺳـﻨﺘﺰ ﺑـﻪ ﺷـﻤﺎ ﭘﻴـﺎﻡ ﻣـﻲﺩﻫـﺪ ﻛـﻪ ﺁﻳـﺎ ﻣـﻲﺧﻮﺍﻫﻴـﺪ ﺍﻳـﻦ ﻃـﺮﺡ ﺭﺍ ﺩﺭﻭﻥ ﺩﻭ ) ﻳـﺎ ﭼﻨـﺪ ( ﺗﺮﺍﺷـﻪ ﺟـﺎﻱ‬
‫ﺩﻫﻴﺪ ﻳﺎ ﺧﻴﺮ‪ .‬ﺩﺭ ﺻﻮﺭﺗﻴﻜﻪ ﺷﻤﺎ ﺍﺩﺍﻣـﻪ ﻋﻤـﻞ ﻛﺎﻣﭙﺎﻳـﻞ ﺭﺍ ﺗﺎﻳﻴـﺪ ﻛﻨﻴـﺪ‪ ،‬ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﻃـﺮﺡ ﺭﺍ ﺑـﻪ ﭼﻨـﺪ ﺑﺨـﺶ ﺗﻘﺴـﻴﻢ‬
‫ﻣﻲﻛﻨﺪ ﻭ ﻫﺮ ﻳـﻚ ﺭﺍ ﺩﺭﻭﻥ ﻳـﻚ ﺗﺮﺍﺷـﻪ ﺟـﺎﻱ ﻣـﻲﺩﻫـﺪ ﻭ ﻟﻴﺴـﺘﻲ ﺍﺯ ﭘﺎﻳـﻪﻫـﺎﻱ ﺗﺮﺍﺷـﻪﻫـﺎ ﺭﺍ ﻛـﻪ ﺑﺎﻳـﺪ ﺑـﻪ ﻳﻜـﺪﻳﮕﺮ‬
‫ﻣﺮﺗﺒﻂ ﺷﻮﻧﺪ ﺍﺭﺍﺋﻪ ﻣﻲﻛﻨﺪ‪.‬‬
‫‪١٠-٢‬‬
‫ﺷﺒﻴﻪ ﺳﺎﺯﻱ ﻃﺮﺡ‬
‫ﭘــﺲ ﺍﺯ ﺍﻳﻨﻜــﻪ ﻃــﺮﺡ ﻣــﻮﺭﺩ ﻧﻈــﺮ ﺭﻭﻱ ﺗﺮﺍﺷــﻪ ﻧﮕﺎﺷــﺖ ﺷــﺪ ﺑﺎﻳــﺪ ﺁﻥ ﺭﺍ ﺷــﺒﻴﻪ ﺳــﺎﺯﻱ ﻧﻤــﻮﺩ ﺗــﺎ ﺍﺯ ﺻــﺤﺖ‬
‫ﻃــﺮﺡ ﻣﻄﻤــﺌﻦ ﺷــﻮﻳﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﻧﺨﺴــﺖ ﺑﺎﻳــﺪ ﺷــﻜﻞ ﻣــﻮﺝ ﻭﺭﻭﺩﻱ ﻣــﺪﺍﺭ ﺭﺍ ﻃﺮﺍﺣــﻲ ﻛﻨــﻴﻢ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ‬
‫ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> Max+Plus II: Waveform Editor‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩﻱ ﻭﻳــﺮﺍﻳﺶ ﺷــﻜﻞ ﻣــﻮﺝ ﺭﻭﻱ ﺻــﻔﺤﻪ ﻇــﺎﻫﺮ ﻣــﻲﺷــﻮﺩ‪ .‬ﺩﺭ ﻣﺮﺣﻠــﻪ ﻱ ﻛﺎﻣﭙﺎﻳــﻞ ﻃــﺮﺡ‪،‬‬
‫ﻳﻚ ﻓﺎﻳﻞ ﺑﺎ ﭘﺴـﻮﻧﺪ ‪ SNF‬ﺍﻳﺠـﺎﺩ ﻣـﻲﺷـﻮﺩ ﻛـﻪ ﻣﺸﺨﺼـﺎﺕ ﺗﻤـﺎﻡ ﮔـﺮﻩ ﻫـﺎﻱ ﻣـﺪﺍﺭ ﺭﺍ ﻧﮕـﺎﻩ ﻣـﻲﺩﺍﺭﺩ‪ .‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﺑﻬﺘـﺮ‬
‫ﺍﺳﺖ ﻛـﻪ ﻧـﺎﻡ ﮔـﺮﻩ ﻫـﺎﻱ ﻭﺭﻭﺩﻱ ﻭ ﺧﺮﻭﺟـﻲ ﻣـﺪﺍﺭ ﺭﺍ ﺍﺯ ﺍﻳـﻦ ﻓﺎﻳـﻞ ﺍﺳـﺘﺨﺮﺍﺝ ﻛﻨـﻴﻢ‪ .‬ﺑـﺮﺍﻱ ﺍﻳـﻦ ﻣﻨﻈـﻮﺭ ﺑﺼـﻮﺭﺕ‬
‫ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫‪<M> Node: Enter Node from SNF‬‬
‫ﺩﺭ ﺍﻳﻦ ﭘﻨﺠـﺮﻩ ﻣـﻲﺗـﻮﺍﻥ ﻧـﻮﻉ ﮔـﺮﻩ ﻫـﺎﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ ﺍﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩ‪ ،‬ﺍﻳـﻦ ﺍﻣـﺮ ﺩﺭ ﺑﺨـﺶ ‪ Type‬ﺍﻧﺠـﺎﻡ‬
‫ﻣﻲﺷﻮﺩ‪ .‬ﭘﺲ ﺍﺯ ﺍﻧﺘﺨﺎﺏ ﻧﻮﻉ ﮔﺮﻩ ﻫﺎ ﻛﻠﻴـﺪ ‪ List‬ﺭﺍ ﻣـﻲﺯﻧـﻴﻢ ﺗـﺎ ﻟﻴﺴـﺖ ﮔـﺮﻩ ﻫـﺎﻱ ﻣﻮﺟـﻮﺩ ﺩﺭ ﺑﺨـﺶ ﺳـﻤﺖ ﭼـﭗ‬
‫ﭘﻨﺠــﺮﻩ ﻇــﺎﻫﺮ ﺷــﻮﺩ‪ .‬ﺳــﭙﺲ ﻫــﺮ ﻳــﻚ ﺍﺯ ﻭﺭﻭﺩﻳﻬــﺎ ﻭ ﻳــﺎ ﺧﺮﻭﺟﻴﻬــﺎ ﺭﺍ ﻛــﻪ ﺑﺨــﻮﺍﻫﻴﻢ ﺍﻧﺘﺨــﺎﺏ ﻣــﻲﻛﻨــﻴﻢ ﻭ ﺁﻧﻬــﺎ ﺭﺍ‬
‫ﺗﻮﺳﻂ ﻛﻠﻴﺪ >= ﺑﻪ ﻟﻴﺴﺖ ﺷﻜﻞ ﻣﻮﺟﻬﺎ ﺍﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ‪ .‬ﻭ ﺩﺭ ﭘﺎﻳﺎﻥ ﻛﻠﻴﺪ ‪ Ok‬ﺭﺍ ﻣﻲﺯﻧﻴﻢ‪.‬‬
‫ﭘﺲ ﺍﺯ ﺍﻳﻨﻜﻪ ﮔﺮﻩ ﻫﺎﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺑـﻪ ﻭﻳﺮﺍﻳﺸـﮕﺮ ﺷـﻜﻞ ﻣـﻮﺝ ﺍﻓـﺰﻭﺩﻩ ﺷـﺪ‪ ،‬ﺑﺎﻳـﺪ ﺷـﻜﻞ ﻣـﻮﺝ ﻣـﻮﺭﺩ ﻧﻈـﺮ‬
‫ﺭﺍ ﺑﻪ ﻭﺭﻭﺩﻳﻬﺎ ﺍﻋﻤﺎﻝ ﻧﻤﻮﺩ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪٣٠‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺷﻜﻞ ‪ -١٠-٢‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺶ ﺷﻜﻞ ﻣﻮﺟﻬﺎ ﭘﺲ ﺍﺯ ﻃﺮﺍﺣﻲ ﺷﻜﻞ ﻣﻮﺟﻬﺎ‬
‫ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﺑﺨــﻮﺍﻫﻴﻢ ﻳــﻚ ﺳــﻴﮕﻨﺎﻝ ﺭﺍ ﺑﺼــﻮﺭﺕ ﻛﺎﻣــﻞ ﺍﻧﺘﺨــﺎﺏ ﻛﻨــﻴﻢ‪ ،‬ﺑﺎﻳــﺪ ﺭﻭﻱ ﻣﻘــﺪﺍﺭ ﺁﻥ ﺳــﻴﮕﻨﺎﻝ‬
‫>‪ <LB‬ﻛﻨﻴﻢ‪ .‬ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﺩﺍﺩﻥ ﻣﻘﺪﺍﺭ ﻳﻚ ﺳﻴﮕﻨﺎﻝ ﺑﻪ ﺍﻳـﻦ ﻧﻜﺘـﻪ ﺗﻮﺟـﻪ ﻛﻨﻴـﺪ ﻛـﻪ ﺳـﻴﮕﻨﺎﻝ ﻳـﻚ ﮔـﺮﻩ ﺍﺳـﺖ ﻳـﺎ ﻳـﻚ‬
‫ﮔﺮﻭﻩ ﻭ ﺑﺮﺍﻱ ﻣﻘﺪﺍﺭﺩﻫﻲ ﺑﻪ ﺁﻥ ﺍﺯ ﺁﻳﻜﻮﻥ ﻣﻨﺎﺳـﺐ ﺍﺳـﺘﻔﺎﺩﻩ ﻛﻨﻴـﺪ‪ .‬ﺑـﺮﺍﻱ ﺗﺴـﺖ ﺍﻳـﻦ ﻣـﺪﺍﺭ ﻓـﺮﺽ ﻛﻨﻴـﺪ ﺷـﻜﻞ ﻣـﻮﺝ‬
‫ﺭﺍ ﺑﺼــﻮﺭﺕ ﺷــﻜﻞ ‪ ١٠-٢‬ﻃﺮﺍﺣــﻲ ﻛــﺮﺩﻩﺍﻳــﻢ‪ .‬ﺳــﭙﺲ ﺑﺼــﻮﺭﺕ ﺯﻳــﺮ ﺍﻳــﻦ ﺷــﻜﻞ ﻣــﻮﺝ ﺭﺍ ﺑــﺎ ﻧــﺎﻡ ‪ adder‬ﺫﺧﻴــﺮﻩ‬
‫ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> File: Save‬‬
‫ﺍﻛﻨـﻮﻥ ﺑــﺮﺍﻱ ﺍﻳﻨﻜــﻪ ﺷـﺒﻴﻪ ﺳــﺎﺯﻱ ﺍﻳــﻦ ﻃـﺮﺡ ﺭﺍ ﻣﺸــﺎﻫﺪﻩ ﻛﻨــﻴﻢ‪ ،‬ﺑﺎﻳـﺪ ﻋﻤــﻞ ﺷــﺒﻴﻪ ﺳـﺎﺯﻱ ﺭﺍ ﺍﻧﺠــﺎﻡ ﺩﻫــﻴﻢ‪.‬‬
‫ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ ‪:‬‬
‫)‪<M> Max+PlusII: Simulator, to show the simulator window (fig 2-11‬‬
‫‪<LB> on Start, to simulate the design‬‬
‫‪<LB> on Open SCF‬‬
‫ﺷﻜﻞ ‪ -١١-٢‬ﭘﻨﺠﺮﻩﻱ ﺷﺒﻴﻪ ﺳﺎﺯﻱ‬
‫ﺻﻔﺤﻪﻱ ‪٣١‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺑﺎ ﺍﻧﺠﺎﻡ ﺍﻳﻦ ﻋﻤﻞ ﻣﺠﺪﺩﺍ ﭘﻨﺠﺮﻩﻱ ﺷـﻜﻞ ﻣﻮﺟﻬـﺎ ﺑـﺎﺯ ﻣـﻲﺷـﻮﺩ ﺑـﺎ ﺍﻳـﻦ ﺗﻔـﺎﻭﺕ ﻛـﻪ ﺩﺭ ﺍﻳـﻦ ﺣﺎﻟـﺖ ﻣﻘـﺎﺩﻳﺮ‬
‫ﺧﺮﻭﺟﻴﻬــﺎ ﻧﻴــﺰ ﻣﺸــﺨﺺ ﺷــﺪﻩ ﺍﻧــﺪ‪ .‬ﺣــﺎﻝ ﻣــﻲﺗــﻮﺍﻥ ﺻــﺤﺖ ﻋﻤﻠﻜــﺮﺩ ﻣــﺪﺍﺭ ﺭﺍ ﺑﺮﺭﺳــﻲ ﻧﻤــﻮﺩ ) ﺷــﻜﻞ ‪ ١٢-٢‬ﺭﺍ‬
‫ﺑﺒﻴﻨﻴﺪ(‬
‫ﺷﻜﻞ ‪ -١٢-٢‬ﭘﻨﺠﺮﻩﻱ ﺷﻜﻞ ﻣﻮﺟﻬﺎ‬
‫‪١١-٢‬‬
‫ﺗﺤﻠﻴﮕﺮ ﺯﻣﺎﻧﻲ‬
‫ﺑﺮﺍﻱ ﺑﺮﺭﺳﻲ ﺗﺎﺧﻴﺮ ﻣﺪﺍﺭ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> Max+PlusII: Timing Analyzer, to show timing analyzer window‬‬
‫‪<LB> Start‬‬
‫ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﺗﺤﻠﻴﮕــﺮ ﺯﻣــﺎﻧﻲ ﺗــﺎﺧﻴﺮ ﺗﺮﻛﻴﺒــﻲ ﻭﺭﻭﺩﻳﻬــﺎ ﺑــﻪ ﺧﺮﻭﺟﻴﻬــﺎ ﺭﺍ ﻣﺤﺎﺳــﺒﻪ ﻛــﺮﺩﻩ ﻭ ﺩﺭ‬
‫ﻣﺎﺗﺮﻳﺲ ﺗﺎﺧﻴﺮ ﻧﻤﺎﻳﺶ ﻣﻲﺩﻫﺪ ) ﺷﻜﻞ ‪ ١٣-٢‬ﺭﺍ ﺑﺒﻴﻨﻴﺪ (‪.‬‬
‫ﺷﻜﻞ ‪ -١٣-٢‬ﭘﻨﺠﺮﻩﻱ ﺗﺤﻠﻴﻠﮕﺮ ﺯﻣﺎﻧﻲ‬
‫ﺻﻔﺤﻪﻱ ‪٣٢‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪١٢-٢‬‬
‫ﻭﻳﺮﺍﻳﺸﮕﺮ ﺗﺮﺍﺷﻪ‬
‫ﭘــﺲ ﺍﺯ ﺍﻳﻨﻜــﻪ ﺍﺯ ﺻــﺤﺖ ﻋﻤﻠﻜــﺮﺩ ﻃــﺮﺡ ﻣﻄﻤــﺌﻦ ﺷــﺪﻳﻢ‪ ،‬ﺑﺎﻳــﺪ ﻧﺤــﻮﻩﻱ ﺍﻋﻤــﺎﻝ ﻭﺭﻭﺩﻳﻬــﺎ ﻭ ﺧﺮﻭﺟﻴﻬــﺎ ﺑــﻪ‬
‫ﺗﺮﺍﺷــﻪ ﺭﺍ ﻣﺸــﺨﺺ ﻛﻨــﻴﻢ‪ .‬ﺍﻳــﻦ ﺍﻣــﺮ ﺗﻮﺳــﻂ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺗﺮﺍﺷــﻪ ﺍﻧﺠــﺎﻡ ﻣــﻲﺷــﻮﺩ‪ .‬ﺑــﺮﺍﻱ ﺍﺟــﺮﺍﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﺗﺮﺍﺷــﻪ‬
‫ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> Max+PlusII: Floorplan Editor, to show floorplan editor window‬‬
‫ﺩﺭ ﺣﺎﻟـﺖ ﻋـﺎﺩﻱ ﺍﻳـﻦ ﭘﻨﺠـﺮﻩ ﺗﺮﺍﺷـﻪ ﺭﺍ ﺑﺼـﻮﺭﺕ )‪ Logic Array Block (LAB‬ﻧﻤـﺎﻳﺶ ﻣـﻲﺩﻫـﺪ‪ .‬ﺑـﺮﺍﻱ‬
‫ﺍﻳﻨﻜﻪ ﺗﺮﺍﺷﻪ ﺭﺍ ﺑﺼﻮﺭﺕ ﻋﺎﺩﻱ ﻧﻤﺎﻳﺶ ﺩﻫﺪ ﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪<M> Layout: Device View‬‬
‫ﺩﺭ ﻗﺴــﻤﺖ ﭘــﺎﻳﻴﻦ ﺻــﻔﺤﻪ ﻫــﺮ ﻳــﻚ ﺍﺯ ﻭﺭﻭﺩﻳﻬــﺎ ﻭ ﺧﺮﻭﺟﻴﻬــﺎﻱ ﻣــﺪﺍﺭ ﺑــﻪ ﻳﻜــﻲ ﺍﺯ ﭘﺎﻳــﻪ ﻫــﺎﻱ ﺗﺮﺍﺷــﻪ‬
‫ﺍﺧﺘﺼــﺎﺹ ﻳﺎﻓﺘــﻪ ﺍﺳــﺖ‪ .‬ﭼﻨﺎﻧﭽــﻪ ﺍﻳــﻦ ﺗﺨﺼــﻴﺺ ﻛــﻪ ﻣﺮﺑـﻮﻁ ﺑــﻪ ﻛﺎﻣﭙﺎﻳــﻞ ﻗﺒﻠــﻲ ﺍﺳــﺖ‪ ،‬ﻣــﻮﺭﺩ ﻧﻈــﺮ ﺷــﻤﺎ ﻧﺒﺎﺷــﺪ‬
‫ﻣــﻲﺗﻮﺍﻧﻴــﺪ ﺁﻥ ﺭﺍ ﺗﻐﻴﻴــﺮ ﺩﻫﻴــﺪ‪ .‬ﺑــﺮﺍﻱ ﺍﻳــﻦ ﻣﻨﻈــﻮﺭ ﺑﺎﻳــﺪ ﺗﻮﺳــﻂ ﻣــﺎﻭﺱ ﺭﻭﻱ ﻛﻠﻴــﺪ ‪ Current Assignment‬ﻛﻠﻴــﻚ‬
‫ﻛﻨﻴﻢ‪ ،‬ﺩﺭ ﺍﻳﻨﺤﺎﻟـﺖ ﺩﺭ ﻗﺴـﻤﺖ ﭘـﺎﻳﻴﻦ ﺻـﻔﺤﻪ ﻳـﻚ ﺗﺮﺍﺷـﻪﻱ ﺧـﺎﻟﻲ ﻧﻤـﺎﻳﺶ ﺩﺍﺩﻩ ﻣـﻲﺷـﻮﺩ )ﺗﻮﺟـﻪ ﻛﻨﻴـﺪ ﺍﻳـﻦ ﺍﻣـﺮ‬
‫ﺩﺭﺻــﻮﺭﺗﻲ ﺍﻣﻜــﺎﻥ ﭘــﺬﻳﺮ ﺍﺳــﺖ ﻛــﻪ ﻗــﺒﻼ ﺩﺭ ﻣﺮﺣﻠــﻪ ﻱ ﻛﺎﻣﭙﺎﻳــﻞ‪ ،‬ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻛــﺮﺩﻩ ﺑﺎﺷــﻴﺪ‪ ،‬ﺑﻌﺒــﺎﺭﺕ‬
‫ﺩﻳﮕــﺮ ﻧــﻮﻉ ﺗﺮﺍﺷــﻪ ‪ AUTO‬ﻧﺒﺎﺷــﺪ( ﻭ ﺩﺭ ﻟﻴﺴــﺖ ﺑــﺎﻻﻱ ﺻــﻔﺤﻪ ﻟﻴﺴــﺖ ﮔــﺮﻩ ﻫــﺎﻱ ﻣــﺪﺍﺭ ﻧﻤــﺎﻳﺶ ﺩﺍﺩﻩ ﻣــﻲﺷــﻮﺩ‪.‬‬
‫ﺣﺎﻝ ﻣـﻲﺗﻮﺍﻧﻴـﺪ ﻫـﺮ ﻳـﻚ ﺍﺯ ﮔـﺮﻩ ﻫـﺎ ﺭﺍ ﺍﺯ ﻟﻴﺴـﺖ ﺍﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩﻩ ﻭ ﺁﻥ ﺭﺍ ‪ Drag‬ﻧﻤـﻮﺩﻩ ﺭﻭﻱ ﭘﺎﻳـﻪ ﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ‬
‫ﻗﺮﺍﺭ ﺩﻫﻴﺪ‪ .‬ﺩﻗﺖ ﻛﻨﻴـﺪ ﻛـﻪ ﮔـﺮﻩ ﻫـﺎﻱ ﻭﺭﻭﺩﻱ ﺭﺍ ﻓﻘـﻂ ﺑـﻪ ﭘﺎﻳـﻪ ﻫـﺎﻱ ﻭﺭﻭﺩﻱ ﻳـﺎ ﺩﻭ ﺳـﻮﻳﻪ ﻭ ﮔـﺮﻩ ﻫـﺎﻱ ﺧﺮﻭﺟـﻲ‬
‫ﺭﺍ ﻓﻘﻂ ﺑـﻪ ﭘﺎﻳـﻪ ﻫـﺎﻱ ﺧﺮﻭﺟـﻲ ﻳـﺎ ﺩﻭ ﺳـﻮﻳﻪ ﻭ ﮔـﺮﻩ ﻫـﺎﻱ ﺩﻭ ﺳـﻮﻳﻪ ﺭﺍ ﻓﻘـﻂ ﺑـﻪ ﭘﺎﻳـﻪ ﻫـﺎﻱ ﺩﻭ ﺳـﻮﻳﻪ ﺗﺨﺼـﻴﺺ‬
‫ﺩﻫﻴﺪ‪ .‬ﻧﻜﺘﻪ ﻱ ﺩﻳﮕﺮﻱ ﻛﻪ ﺑﺎﻳـﺪ ﺑـﻪ ﺁﻥ ﺗﻮﺟـﻪ ﺩﺍﺷـﺘﻪ ﺑﺎﺷـﻴﺪ ﺍﻳـﻦ ﺍﺳـﺖ ﻛـﻪ ﻣﻤﻜـﻦ ﺍﺳـﺖ ﺑـﺎ ﺗﺨﺼﻴﺼـﻲ ﻛـﻪ ﺷـﻤﺎ‬
‫ﺍﻧﺘﺨﺎﺏ ﻧﻤﻮﺩﻩ ﺍﻳـﺪ ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﻧﺘﻮﺍﻧـﺪ ﻃـﺮﺡ ﺭﺍ ﺩﺭﻭﻥ ﺗﺮﺍﺷـﻪ ﻗـﺮﺍﺭ ﺩﻫـﺪ‪ ،‬ﺍﺯ ﺍﻳﻨـﺮﻭ ﭘـﺲ ﺍﺯ ﺍﻳﻨﻜـﻪ ﺗﺨﺼـﻴﺺ ﺧـﻮﺩ‬
‫ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻧﻤﻮﺩﻳــﺪ ﺑﺎﻳــﺪ ﻣﺠــﺪﺩﺍ ﻃــﺮﺡ ﺭﺍ ﻛﺎﻣﭙﺎﻳــﻞ ﻛﻨﻴــﺪ‪ .‬ﺩﺭ ﺻــﻮﺭﺗﻴﻜﻪ ﻋﻤــﻞ ﻛﺎﻣﭙﺎﻳــﻞ ﻣﻮﻓﻘﻴــﺖ ﺁﻣﻴــﺰ ﺑﺎﺷــﺪ‪،‬‬
‫ﺗﺨﺼــﻴﺺ ﺷــﻤﺎ ﺍﻣﻜﺎﻧﭙــﺬﻳﺮ ﺍﺳــﺖ ) ﺍﻳــﻦ ﺍﻣــﺮ ﺑــﻪ ﻋﻠــﺖ ﻣﺤــﺪﻭﺩ ﺑــﻮﺩﻥ ﻣﺴــﻴﺮﻫﺎﻱ ﺍﺭﺗﺒــﺎﻃﻲ ﺍﻳــﺖ ﻛــﻪ ﺩﺭ ﺗﺮﺍﺷــﻪ‬
‫ﻣﻮﺟﻮﺩ ﺍﺳﺖ ( ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪٣٣‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫‪٣‬‬
‫ﻃﺮﺍﺣﻲ ﻣﺪﺍﺭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪AHDL‬‬
‫ﺑــﺮﺍﻱ ﻳــﺎﺩﮔﻴﺮﻱ ﻃﺮﺍﺣــﻲ ﻣــﺪﺍﺭ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑــﺎﻥ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖ ﺍﻓــﺰﺍﺭﻱ ‪ AHDL‬ﻫﻤــﺎﻥ ﻣﺜــﺎﻝ ﺟﻤــﻊ‬
‫ﻛﻨﻨﺪﻩ ﺭﺍ ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ ﻣﻲﺩﻫـﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟـﺖ ﻧﻴـﺰ ﺍﮔـﺮ ﭘـﺮﻭﮊﻩ ﻱ ﻣـﺎ ﺩﺍﺭﺍﻱ ﭼﻨـﺪ ﺯﻳـﺮ ﻃـﺮﺡ ﺑﺎﺷـﺪ‪ ،‬ﺍﺑﺘـﺪﺍ ﻫـﺮ‬
‫ﻳــﻚ ﺍﺯ ﺯﻳــﺮ ﻃﺮﺣﻬــﺎ ﺭﺍ ﺍﻳﺠــﺎﺩ ﻣــﻲﻛﻨــﻴﻢ ) ﺑــﺎ ﺭﻭﺵ ﻃﺮﺍﺣــﻲ ﺷــﻤﺎﺗﻴﻚ ﻳــﺎ ﺑــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺯﺑــﺎﻥ ﺗﻮﺻــﻴﻒ ﺳــﺨﺖ‬
‫ﺍﻓــﺰﺍﺭﻱ ( ﺳــﭙﺲ ﺍﺯ ﻫــﺮ ﻳــﻚ ﺍﺯ ﺯﻳــﺮ ﻃﺮﺣﻬــﺎ ﻳــﻚ ‪ Default Include File‬ﺍﻳﺠــﺎﺩ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺳــﭙﺲ ﺩﺭ ﻓﺎﻳــﻞ‬
‫ﺍﺻــﻠﻲ ﻛــﻪ ﻫﻤﻨــﺎﻡ ﭘــﺮﻭﮊﻩ ﺍﺳــﺖ‪ ،‬ﺗﻤــﺎﻡ ﺯﻳــﺮ ﻃﺮﺣﻬــﺎ ﺭﺍ ‪ include‬ﻣــﻲﻛﻨــﻴﻢ ﺗــﺎ ﺑﺘــﻮﺍﻧﻴﻢ ﺍﺯ ﺁﻧﻬــﺎ ﺍﺳــﺘﻔﺎﺩﻩ ﻛﻨــﻴﻢ‪ .‬ﺩﺭ‬
‫ﺍﻳﻨﺤﺎﻟــﺖ ﻧــﺎﻡ ﭘــﺮﻭﮊﻩ ﺭﺍ ‪ adder2‬ﻭ ﻧــﺎﻡ ﺟﻤــﻊ ﻛﻨﻨــﺪﻩ ﻱ ﺗــﻚ ﺑﻴﺘــﻲ ﺭﺍ ‪ fa1bit2‬ﻭ ﻧــﺎﻡ ﻓﺎﻳــﻞ ﺟﻤــﻊ ﻛﻨﻨــﺪﻩ ﻱ ﭼﻬــﺎﺭ‬
‫ﺑﻴﺘﻲ ﺭﺍ ‪ adder2‬ﻗﺮﺍﺭ ﻣﻲﺩﻫﻴﻢ‪.‬‬
‫ﺍﺑﺘـﺪﺍ ﻳـﻚ ﭘـﺮﻭﮊﻩ ﻱ ﺟﺪﻳـﺪ ﺍﻳﺠــﺎﺩ ﻣـﻲﻛﻨـﻴﻢ ﻭ ﺁﻥ ﺭﺍ ﺑـﺎ ﻧـﺎﻡ ‪ adder2‬ﺫﺧﻴــﺮﻩ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺳـﭙﺲ ﻳـﻚ ﻓﺎﻳــﻞ‬
‫ﺟﺪﻳﺪ ﻣﺘﻨﻲ ﺩﺭ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﺍﻳﺠﺎﺩ ﻣـﻲﻛﻨـﻴﻢ ﻭ ﺁﻥ ﺭﺍ ﺑـﺎ ﻧـﺎﻡ ‪ fa1bit2‬ﺫﺧﻴـﺮﻩ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺩﻗـﺖ ﻛﻨﻴـﺪ ﻛـﻪ ﭘﺴـﻮﻧﺪ ﻓﺎﻳـﻞ‬
‫ﻣﺘﻨـــﻲ ﺣﺘﻤـــﺎ ﺑﺼـــﻮﺭﺕ ‪ tdf‬ﺑﺎﺷـــﺪ ) ﭘﺴـــﻮﻧﺪ ﻓﺎﻳﻠﻬـــﺎﻱ ‪ AHDL‬ﺑﺼـــﻮﺭﺕ ‪ tdf‬ﺍﺳـــﺖ (‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟـــﺖ ﭘﻨﺠـــﺮﻩ‬
‫ﻭﻳﺮﺍﻳﺸﮕﺮ ﻣﺘﻨﻲ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ‪ ١-٣‬ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫‪Type your AHDL‬‬
‫‪code here‬‬
‫ﺷﻜﻞ ‪ -١-٣‬ﭘﻨﺠﺮﻩﻱ ﻭﻳﺮﺍﻳﺸﮕﺮ ﻣﺘﻨﻲ‬
‫ﺑﺮﺍﻱ ﻭﺍﺭﺩ ﻛـﺮﺩﻥ ﻛـﺪ‪ ،‬ﺍﺑـﺰﺍﺭ ﺳـﻨﺘﺰ ﺩﺍﺭﺍﻱ ﻳـﻚ ﻗﺎﺑﻠﻴـﺖ ﺑﺴـﻴﺎﺭ ﻣﻨﺎﺳـﺐ ﺑﻨـﺎﻡ ‪ Template‬ﺍﺳـﺖ ﻛـﻪ ﺍﻟﮕـﻮﻳﻲ‬
‫ﺍﺯ ﺗﻤﺎﻡ ﺳﺎﺧﺘﺎﺭﻫﺎﻱ ﺯﺑﺎﻥ ﺭﺍ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺷـﻤﺎ ﻗـﺮﺍﺭ ﻣـﻲﺩﻫـﺪ‪ .‬ﺑـﺮﺍﻱ ﺩﺳﺘﺮﺳـﻲ ﺑـﻪ ﺍﻳـﻦ ﻗﺎﺑﻠﻴـﺖ ﻛﺎﻓﻴﺴـﺖ ﺩﺭ ﺣﺎﻟﻴﻜـﻪ‬
‫ﻣﺎﻭﺱ ﺭﻭﻱ ﺻـﻔﺤﻪ ﻣﺘﻨـﻲ ﺩﺭ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺍﺳـﺖ‪ ،‬ﺑـﺎ ﻛﻠﻴـﺪ ﺳـﻤﺖ ﺭﺍﺳـﺖ ﻣـﺎﻭﺱ ﻛﻠﻴـﻚ ﻛﻨـﻴﻢ ﻭ ﺩﺭ ﻣﻨـﻮﻱ‬
‫‪ Case Sensitive‬ﻇــﺎﻫﺮ ﺷــﺪﻩ ﮔﺰﻳﻨــﻪ ﻱ ‪ AHDL‬ﺭﺍ ﺍﻧﺘﺨــﺎﺏ ﻣــﻲﻛﻨــﻴﻢ‪ .‬ﺩﺭ ﺍﻳﻨﺤﺎﻟــﺖ ﭘﻨﺠــﺮﻩ ﺍﻱ ﻣﻄــﺎﺑﻖ ﺷــﻜﻞ‬
‫‪ ١-٣‬ﺭﻭﻱ ﺻﻔﺤﻪ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ ﻛـﻪ ﻣـﻲﺗـﻮﺍﻥ ﺍﺯ ﺁﻥ ﺍﻟﮕـﻮﻱ ﻣـﻮﺭﺩ ﻧﻈـﺮ ﺭﺍ ﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩ ﻭ ﻛﻠﻴـﺪ ‪ Ok‬ﺭﺍ ﺯﺩ‪ .‬ﺩﺭ‬
‫ﺻﻔﺤﻪﻱ ‪٣٤‬‬
‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ ‪Max+PlusII‬‬
‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‪ :‬ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬
‫ﺍﻳﻨﺼﻮﺭﺕ ﻳـﻚ ﻛﭙـﻲ ﺍﺯ ﺍﻟﮕـﻮﻱ ﺍﻳـﻦ ﺳـﺎﺧﺘﺎﺭ ﺩﺭ ﻣﺤـﻞ ﻣـﻮﺭﺩ ﻇـﺎﻫﺮ ﻣـﻲﺷـﻮﺩ ﻭ ﺣـﺎﻻ ﻣـﻲﺗـﻮﺍﻥ ﺍﻳـﻦ ﺍﻟﮕـﻮ ﺭﺍ ﺑـﺮ‬
‫ﺍﺳﺎﺱ ﻧﻴﺎﺯ ﺗﻐﻴﻴﺮ ﺩﺍﺩ‪ .‬ﺍﻳﻦ ﻗﺎﺑﻠﻴﺖ ﻛﺎﺭﺑﺮ ﺭﺍ ﺍﺯ ﺑﻪ ﺧﺎﻃﺮ ﺳﭙﺮﺩﻥ ﺗﻤﺎﻡ ﺳﺎﺧﺘﺎﺭﻫﺎﻱ ﺯﺑﺎﻥ ﺑﻲ ﻧﻴﺎﺯ ﻣﻲﺳﺎﺯﺩ‪.‬‬
‫ﺷﻜﻞ ‪ -٢-٣‬ﭘﻨﺠﺮﻩﻱ ﺍﻟﮕﻮﻱ ‪AHDL‬‬
‫ﺣــﺎﻝ ﺩﺭ ﭘﻨﺠــﺮﻩﻱ ﻭﻳﺮﺍﻳﺸــﮕﺮ ﻣﺘﻨــﻲ ﺗﻮﺻــﻴﻒ ﺟﻤــﻊﻛﻨﻨــﺪﻩﻱ ﻳــﻚ ﺑﻴﺘــﻲ )ﻟﻴﺴــﺖ ‪ ١-٣‬ﺭﺍ ﺑﺒﻴﻨﻴــﺪ( ﺭﺍ ﻭﺍﺭﺩ‬
‫ﻣﻲﻛﻨﻴﻢ ﻭ ﺁﻧﺮﺍ ﺑﺎ ﻧﺎﻡ ‪ fa1bit2.tdf‬ﺁﻥ ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫‪SUBDESIGN fa1bit2‬‬
‫(‬
‫; ‪_x, _y, _ci : INPUT‬‬
‫‪s, co‬‬
‫;‪: OUTPUT‬‬
‫)‬
‫‪BEGIN‬‬
‫;‪s = ( _x XOR _y ) XOR _ci‬‬
‫;) ‪co = ( _x AND _y ) OR ( _x AND _ci ) OR ( _y AND _ci‬‬
‫;‪END‬‬
‫ﻟﻴﺴﺖ ‪ -١-٣‬ﺗﻮﺻﻴﻒ ﺟﻤﻊﻛﻨﻨﺪﻩﻱ ﻳﻚ ﺑﻴﺘﻲ ﺑﻪ ﺯﺑﺎﻥ ‪AHDL‬‬
‫ﺳــﭙﺲ ﺍﺯ ﺭﻭﻱ ﺍﻳــﻦ ﻓﺎﻳــﻞ ﻳــﻚ ‪ Default Include File‬ﺍﻳﺠــﺎﺩ ﻣــﻲﻛﻨــﻴﻢ‪ ،‬ﺑــﺮﺍﻱ ﺍﻳﺠــﺎﺩ ﺍﻳــﻦ ﻓﺎﻳــﻞ‪ ،‬ﺍﺑــﺰﺍﺭ‬
‫ﺳـﻨﺘﺰ ﻧـﺎﻡ ﭘــﺮﻭﮊﻩ ﺭﺍ ﺑـﻪ ‪ fa1bit2‬ﺗﻐﻴﻴــﺮ ﻣـﻲﺩﻫـﺪ ﻭ ﺳــﭙﺲ ﻃـﺮﺡ ﺭﺍ ﻛﺎﻣﭙﺎﻳــﻞ ﻣـﻲﻛﻨـﺪ ﺗــﺎ ﻣﻄﻤـﺌﻦ ﺷــﻮﺩ ﻛـﻪ ﻃــﺮﺡ‬
‫ﺩﺍﺭﺍﻱ ﺧﻄﺎ ﻧﻴﺴﺖ‪ .‬ﺣﺎﻝ ﻣﺠـﺪﺩﺍ ﭘـﺮﻭﮊﻩ ‪ adder2‬ﺭﺍ ﺑـﺎﺯ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺳـﭙﺲ ﻳـﻚ ﻓﺎﻳـﻞ ﺟﺪﻳـﺪ ﻣﺘﻨـﻲ ﺩﺭ ﺍﻳـﻦ ﭘـﺮﻭﮊﻩ‬
‫ﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﻴﻢ ﻭ ﺁﻥ ﺭﺍ ﺑـﺎ ﻧـﺎﻡ ‪ adder2‬ﺫﺧﻴـﺮﻩ ﻣـﻲﻛﻨـﻴﻢ‪ .‬ﺳـﭙﺲ ﺩﺭ ﺍﻳـﻦ ﻓﺎﻳـﻞ ﺗﻮﺻـﻴﻒ ﻟﻴﺴـﺖ ‪ ٢-٣‬ﺭﺍ ﻭﺍﺭﺩ ﻛـﺮﺩﻩ‬
‫ﻭ ﺁﻥ ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲﻛﻨﻴﻢ‪ .‬ﺍﺯ ﺍﻳﻦ ﺑﻪ ﺑﻌﺪ ﺗﻤﺎﻡ ﻣﺮﺍﺣﻞ ﻣﺎﻧﻨﺪ ﻣﺮﺍﺣﻞ ﺑﺨﺶ ﺍﻭﻝ ﺍﺳﺖ‪.‬‬
‫ﺻﻔﺤﻪﻱ ‪٣٥‬‬
Max+PlusII ‫ﺧﻮﺩﺁﻣﻮﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻧﺮﻡﺍﻓﺰﺍﺭ‬
‫ ﺳﻌﻴﺪ ﺻﻔﺮﻱ‬:‫ﺗﻬﻴﻪ ﻛﻨﻨﺪﻩ‬
INCLUDE "fa1bit2";
SUBDESIGN adder2
(
a[3..0], b[3..0], cin
: INPUT ;
s[3..0], cout
: OUTPUT;
)
VARIABLE
add1bit[3..0]
: fa1bit2;
c[3..1]
: NODE;
BEGIN
add1bit[0]._x = a[0];
add1bit[0]._y = b[0];
add1bit[0]._ci = cin;
s[0] = add1bit[0].s;
c[1] = add1bit[0].co;
add1bit[1]._x = a[1];
add1bit[1]._y = b[1];
add1bit[1]._ci = c[1];
s[1] = add1bit[1].s;
c[2] = add1bit[1].co;
add1bit[2]._x = a[2];
add1bit[2]._y = b[2];
add1bit[2]._ci = c[2];
s[2] = add1bit[2].s;
c[3] = add1bit[2].co;
add1bit[3]._x = a[3];
add1bit[3]._y = b[3];
add1bit[3]._ci = c[3];
s[3] = add1bit[3].s;
cout = add1bit[3].co;
END;
AHDL ‫ ﺗﻮﺻﻴﻒ ﺟﻤﻊﻛﻨﻨﺪﻩﻱ ﻳﻚ ﺑﻴﺘﻲ ﺑﻪ ﺯﺑﺎﻥ‬-١-٣ ‫ﻟﻴﺴﺖ‬
٣٦ ‫ﺻﻔﺤﻪﻱ‬