رضایت و نارضایتی، از دربستی های موبایلی

uber-login-signup

چند وقتی هست که خیلی از اهالی تکنولوژی، یا کسایی که دنبال آلترناتیوی برای زندگی بهتر و دیجیتالی تر هستند، باب شده که از ابزارهایی مثل اسنپ و تپ سی، استفاده کنند. حالا، بیاید چند تا توییت، با هشتگ اسنپ رو از توییتر بخونیم و ببینیم که چند نفر راضی و چند نفر از وضعیت ناراضی هستند :

 

 

 

توییت اول، پیگیری پشتیبانی اسنپ (که خودم چندین بار باهاش مواجه شدم) رو نشون میده. از این بابت کارشون قابل تقدیر و تشکره که حتی شده به ظاهر هم دنبال رفع نارضایتی هستند. اما توییت دوم، داره یک نارضایتی کلی رو بیان میکنه، آیا همه اسنپ های خالی رو نشون میده؟! یا هر اسنپی که دور و برمونه؟ حالا این مقوله، کاملا بر میگرده به این که کد چطور نوشته شده. اما دلیل اصلی نارضایتی اینه که چرا توی روز بارونی (یا شرایط مشابهی که باعث میشه راننده های «مستقل» گرون تر بگیرن) راننده ای اکسپت نمی کنه! که این به نظرم توجیه و آموزش راننده رو نیاز داره. و اما توییت سوم … کمی بی ادبانه و با لحن تند بیان شده. به نظر من لحن قشنگی نیست، اما صراحتی که در بیانش داشته واقعا جالبه. چیزی که خودم هم بهش رسیدم. راننده ای که همه جوره بهش فهموندم دوست ندارم زیاد حرف بزنه (حتی با گذاشتن هدفون و بلند کردن صدا تا حدی که بفهمه دارم آهنگ گوش میدم) ، گرفته تا راننده ای که حاضر نبود از نقشه استفاده کنه!

بیایید توییت های بیشتری رو بررسی کنیم و ببینیم که مردم دیگه از چه چیزی توی این سرویس ناراضی هستند :

خب، این توییت نارضایتی از قیمته. شاید الگوریتم قیمت گذاری تغییر کرده که بازی رو برد-برد کنه. مثلا شده که مسیری رو با ۱۴ هزار تومن رفتم، و موقع برگشت (که ساعت ترافیک دار بوده) هزینه رفته روی ۱۵ یا ۱۶ هزار تومن. البته هنوز مطمئن نیستم که این بخاطر موقعیت من در مبدا برگشت بوده، یا بخاطر ترافیک زیاد.  

در این توییت هم شاهد نارضایتی از ماشین نداشتن، و غیرقابل اعتماد بودن هستیم. در واقع ایشون بیان کردن (برداشت من البته!) که در ساعتی که ایشون نیاز مبرم به ماشین داشته، احتمالا اسنپ ماشین نداشته. شاید آژانسی که معمولا ازش ماشین میگیره، ماشین نداشته و نزدیک ترین شریان اصلی و ایستگاه تاکسی برای دربست گرفتن هم ازش خیلی دور بوده. خب این مشکل رو به همین راحتیا نمیشه حل کرد و باید زیرساختی تر حل بشه. نه تنها آموزش درست و با کیفیت میخواد، بلکه نیروی کار سازمان یافته بیشتری هم نیاز داره.

 

خب اینجا به همون مشکل الگوریتم قیمت دهی اشاره شده باز. به نظرم بهتر بود در آپدیتی که این رویه در پیش گرفته شده بود، اطلاعی به کاربران داده میشد.

و اما … در کل، میزان رضایت بیشتره یا نارضایتی؟

به عنوان یک کاربر سرویس، شخصا بیشتر ناراضیم تا راضی. چرا که :

  1. در ساعتای شلوغ و پرترافیک، کم پیش میاد که با همون بار اول درخواست اسنپ دادن، ماشینی پیدا شه که اکسپت کنه.
  2. راننده های نزدیک، زودتر پیام رو دریافت نمیکنن، و نتیجه میشه این که راننده ای که در میدان نور (تقاطع کاشانی – ستاری) حضور داره، مسافری رو از شهر زیبا (منتهی علیه غربی کاشانی 😐 ) رو اکسپت کنه و این خودش معطلی برای مسافر هست
  3. خیلی از مشکلات کلاسیک مردم با راننده ها حل نشده. یک نمونش راه بلد بودن هست، نمونه دیگرش پرچونگی و پرحرفی راننده ها، که اگر هشتگی مثل «راننده»، «مسافر کش» یا «راننده تاکسی» رو در توییتر سرچ کنید، میرسید به این مشکلات.

و با گشت و گذار در توییتر هم بیشتر به ناراضی ها میرسیم. میشه گفت که مردم وقتی راضی باشن فیدبک نمیدن یا خیلی کم پیش میاد که فیدبک بدن. اما مردمی که ناراضی هستند معمولا خیلی سریع عدم رضایت خودشون رو جایی که میدونن پشتیبانی اون سرویس فعال هست، منتشر میکنن تا فیدبک بگیرن (مثل اولین توییتی که بررسی کردیم). حالا مهم نیست که کدوم بیشتره، مهم اینه که چرا انقدر ناراضی داره این سرویس؟! چرا با سرچ هشتگ، بیش از این که به معرفی و … برسیم، به نارضایتی رسیدیم؟! این ها سوالاتی هست که باهاش مواجه هستیم. سوالاتی که برای یک بیزنس میتونن بسیار بسیار مهم باشن.

ریشه مشکل کجاست؟ چاره چیه؟!

خب، ریشه مشکل میتونه احتمالا عدم وجود زیرساخت، و نداشتن دانش مدیریتی و تجاری کافی باشه. با حالت مافیایی ای که بازار به خودش گرفته، عده ای خاص (که عموما سواد درست و حسابی هم ندارند) میشن CTO و مدیر روابط عمومی و مدیر داخلی و این عناوین خوشگل رو میگیرن. حالا مهم نیست که این اتفاق افتاده، بریم سراغ زیرساخت. ما میدونیم که عموم افرادی که توی کشورمون اسمارتفون های گرون گرون میخرن، یک دلیل بیشتر نداره، اونم اینه :

یعنی مردم برای پز دادن و پولدار تر به نظر رسیدن، حاضرن گوشی هوشمند بخرن ولی از امکاناتش استفاده ای نبرن و این خودش یعنی یک زیرساخت شدیدا خراب! اگرچه، با داشتن مدیران خوب و باسواد در بیزنس ها، میشه زیرساخت رو هم درست کرد. مثلا خیلی ها هستن که همین اسنپ رو به هم معرفی میکنن و تازه یک کاربردی برای اون محصولی که پول کمی هم براش ندادن، پیدا کردن. بخش دیگر این زیرساخت، اینترنت هست. مثلا دم در خونه ما درست آنتن نمیده و من همیشه مجبورم که به راننده اسنپ (یا تپسی) آدرس رو تلفنی یا از طریق پیام کوتاه منتقل کنم. و برام عذابه که وقتی یه پین روی نقشه انداختم، چرا باید دوباره بگم؟؟؟؟ و این زیرساخت چیزی فراتر از کابر و بیزنسه.

با اصلاح مواردی که در این متن گفته شد، میشه تا حد زیادی به مشکلات رسیدگی کرد. آموزش درست راننده و مسافر، داشتن یک نرم افزار User-friendly تر و با UX بهتر و … همش میتونه به بهتر شدن و افزایش میزان رضایت مشتری، کمک کنه!

در آخر هم ممنونم که این پست بلند و بالای من رو خوندید! در مورد Uber هم در تصویر اول متن بگم که همینطوری خواستم بذارم، چون مشابهش رو برای اسنپ پیدا نکردم 😀 

موفق باشید 🙂

Share

دوستی با محصول جدید اتودسک

اکثرا میدونیم که شبیه سازی و استفاده از بردهای آردوینو و AVR و … ، برای کاربران لینوکس خیلی مشکله. حتی شبیه سازی ساده مدارهای الکتریکی و الکترونیکی هم مشکلیه که اکثرا کاربران لینوکس باهاش روبرو هستند. اما امروز، میخوام ابزاری رو معرفی کنم، که هم رایگانه و هم تحت وب. به شما امکان کد زدن روی آردوینو و تست کردن مدارهای مجتمع، ساختن مدارهای دیجیتال و آنالوگ رو میده.

شرکت اتودسک که پیش تر با محصولاتی مثل اتوکد و مایا شناخته شده بود، الان اومده محصولی به اسم 123D Circuits رو ارائه کرده که با ساختن یک اکانت و عضویت درش، میتونید به راحتی آزمایشات الکترونیکی خودتون رو انجام بدید.

این هم نمونه مداری که بستم، یک آی سی 7408 هست که داره دو ورودی رو با هم AND میکنه :

کافیه روی start simulation کلیک کنید و بعد با کلید ها بازی کنید تا تغییرات توی ولت متر و LED قرمز رنگ روی برد بورد رو شاهد باشید.

Share

FreeBSD 11.0-RC1 – نخستین دیدار

امروز بعد از مدتها به وبسایت محبوب و معروف دیستروواچ سر زدم و دیدم که یکی از سیستم عامل های محبوبم یعنی FreeBSD یک نسخه نامزد انتشار منتشر کرده!

خب با خوشحالی تمام دانلودش کردم.

اولین چیزی که در FreeBSD 11 برام جالب شد، این بود که توی نصاب خیلی ریز شده بودن و سوال پرسیده بودن، یعنی عمده پیکربندی رو جزئی از نصاب کردن که این خودش یک پوئن مثبت در نوع خودش محسوب میشه. و یک پیشرفت خیلی بزرگ، چون عمده کاربران FreeBSD مدیران سیستم ها هستند، پس این تیپ پیکربندی هنگام نصب بدرد میخوره.

خب، بعد نصب، تصمیم گرفتم اول pkg رو راه بندازم. بعد nano رو نصب کردم (ادیتور محبوب من در CLI ! یه چیز تنبل پسند و عالی!) ، بعدش تصمیم گرفتم دسکتاپ رو راه اندازی کنم. دیدم توی هندبوک، به gnome3 اشاره شده، اونجا بود که فهمیدم احتمالا گنوم شل دوست داشتنیمون هم اومده به FreeBSD . پس gnome3 رو نصب کردم و این خطوط رو به rc.conf افزودم :

کد   
dbus_enable="YES"
hald_enable="YES"
 
#Running GNOME and GDM services
 
gdm_enable="YES"
gnome_enable="YES"

و بعد از یک ریبوت، چشممون به جمال گنوم شل با 3D Acceleration روشن شد :

و این عکس هم به جهت تایید اصالت سیستم عامل :

در مورد این دسکتاپ، که خب یک دسکتاپ مدرن محسوب میشه و تا مدتها در FreeBSD پیداش نبود، میشه گفت که با اضافه شدنش بدون مشکل به سیستم عامل، میتونه به پیشرفت این سیستم عامل در حوزه دسکتاپ کمک کنه. البته، در کل 11 نرم تر از ۹ و ۱۰ بود که قبل تر تست کرده بودم و حتی به عنوان سیستم عامل اصلی ازشون استفاده میکردم.

موفق باشید 🙂

Share

بررسی معماری MIPS

خب، همونطور که داریم سلسله آموزش های ساخت کامپیوتر ساده در Logisim رو دنبال میکنیم، گفتم این وسط یه توضیحی هم در مورد معماری MIPS داشته باشیم. در واقع MIPS یکی از ساده ترین و کم دستور ترین معماری های ممکنه، و البته پیاده سازی دوبارش در نرم افزارهایی مثل Logisim بسیار ساده. میشه.

این یک ALU بسیار ساده بر اساس میپس هست (که البته یک بیتی پیاده شده) :

MIPS

در اینجا، برای تفریق مدار جداگانه ای در نظر نگرفته، بلکه مقدار B رو با یک، XOR کرده (هوشمندانه به نظر میرسه، نه؟) و از less هم برای مقایسه، از یک مالتی پلکسر ۸ به ۱ هم برای انتخاب عملیات استفاده شده (به جای استفاده از دیکدر و گیت های AND )، در کل میشه یک ساختار خیلی قشنگ براش قائل شد، البته بهتر از این هم میشد الگوریتم هایی مثل تفریق رو هم پیاده کرد (مثلا با استفاده از یه mux میشد انتخاب کرد که خود B نیازه یا نقیضش؟ و البته نیاز بود که cin هم حتما روشن شه که مکمل ۲ گرفته شه).

زبان ماشین این ALU هم خیلی سادس، به ازای مقدار ۰ ، عملیات AND ، به ازای ۱ عملیات OR ، به ازای ۲ عملیات XOR ، به ازای ۳ عملیات NOR ، به ازای ۴ عملیات ADD و به ازای ۵ عملیات مقایسه رو انجام میده (البته برای مقایسه هم میشه از XNOR استفاده کرد و تساوی رو سنجید).

امیدوارم که این مطلب به دردتون خورده باشه، همچنین میتونید این معماری رو پیاده کنید و نتیجش رو حتی روی برد بُرد بیارید 🙂 .

موفق باشید.

Share

ساخت یک کامپیوتر ساده در Logisim – قسمت دوم (مجموعه دستور العمل ها)

در قسمت قبلی، چالش رو مطرح کردیم که کامپیوتر هشت بیتی خودمون رو بسازیم. ببینیم چه مداراتی نیاز داریم؟!

خب ما دو ورودی هشت بیتی A و B رو خواهیم داشت، پس به این موارد نیاز داریم :

  1. مداری برای NOT کردن ورودی A
  2. مداری برای NOT کردن ورودی B
  3. مداری برای AND کردن هر دو ورودی
  4. مداری برای OR کردن هر دو ورودی
  5. مداری برای جمع کردن دو ورودی
  6. مداری برای تفریق دو ورودی

خب، چون ما از یک قطعه به اسم «دیکدر» برای انتخاب دستورات استفاده میکنیم، و دیکدرها هم یک ورودی با سایز n میگیرن، و خروجی اونها «دو به توان n» هست، و ما اینجا «مجموعه دستور العمل» یا Instruction Set مون دارای ۶ دستور هست، بهینه ترین حالت استفاده از یک دیکدر ۳ به ۸ هست. خب، با این حساب، باید کد عملیات ها یا Operation Code ها رو به این شکل تعریف کنیم :

Operation Code
NOT A 000
NOT B 001
AND A, B 010
OR A, B 011
ADD A , B 100
SUB A, B 101

خب الان ما میدونیم که کامپیوتر محترم باید چه دستوراتی رو اچرا کنه. در واقع، وقتی میگیم ۰ ، کامپیوتر اون رو به دیکدر میده و میفهمه که باید نقیض A رو بهمون بده. وقتی ۱ رو فراخوانی میکنیم، باید نقیض B بهمون داده شه، وقتی میگیم ۵ در واقع مقدار B رو از A کم میکنیم و … . با توجه به این که الان، ما یک دیکدر ۳ به ۸ در مدار «واحد محاسبه و منطق» داریم، میتونیم ۴ دستور العمل دیگه هم بهش اضافه کنیم (با شما 🙂 ). در قسمت بعدی این آموزش، میرسیم به این که ورودی ها و خروجی ها رو چطوری مدیریت کنیم. بعدش هم در مورد ساختار کلی ALU صحبت میشه و بعد از چند پست دیگه، یک ALU کامل با هم خواهیم داشت. پس فعلا در مورد بلاهایی که سر ۸ بیت ورودی میشه آورد فکر کنید و شاد باشید 🙂

Share

ساخت یک کامپیوتر ساده در Logisim – قسمت اول

بالاخره یه سری پست جدید تصمیم گرفتم بنویسم، و خب این سری قراره که مرحله به مرحله پیش بریم تا یک کامپیوتر ساده بسازیم. تنها دانشی که شما برای این سری از پست ها نیاز دارید :

۱. دونستن کمی مدار منطقی (که قبلا در وبلاگ راجع بهش حسابی صحبت کردم)

۲. بلد بودن کار با Logisim (که میشه گفت مثل نقاشی کشیدن میمونه و همین پست ها رو دنبال کنید یاد میگیرید.).

راه اندازی محیط کار

برای این که بتونیم مداراتمون رو طراحی و آزمایش کنیم، نیاز داریم که نرم افزار Logisim رو داشته باشیم. یه نسخه خوب از این نرم افزار به اسم Logisim Evolution طراحی شده که کار ما رو به شدت ساده تر کرده، خروجی گرفتن ازش بی دردسر تره، و همچنین مدارات و ویژگی هاشون دقیق تر طراحی شده. برای دانلود و نصب و روش راه اندازیش میتونید به اینجا برید. فقط هم نیازه که جاوا روی سیستمتون نصب باشه.

چالش های پیش رو

خب، برای این که بیایم یک کامپیوتر بسیار ساده طراحی کنیم نیاز داریم که یک سری سوالات از خودمون بپرسیم و جواب بدیمشون، اینطوری راحت تر میتونیم مدارات مورد نیاز رو طراحی کنیم و از پیچیدگی محصول نهایی جلوگیری کنیم.

کامپیوتر ما باید چه عملیاتی انجام بده؟

یک کامپیوتر ساده که بتونه به راحتی قابل درک هم باشه، هم باید Word Size کوچیکی داشته باشه (توی آموزش ها با ۸ بیت میریم جلو) و هم Instruction Setش باید کوچیک باشه. یک سری دستور پایه هست که هر کامپیوتری میتونه انجامش بده، ما کامپیوترمون رو اینطور طراحی مکنیم که AND, OR, NOT رو بتونه انجام بده، علاوه بر اون بتونه جمع و تفریق هم بکنه. پس باید :

  1. مداری طراحی کنیم که بتونه ۸ بیت رو NOT کنه
  2. مداری طراحی کنیم که بتونه ۸ بیت رو OR کنه
  3. مداری طراحی کنیم که بتونه ۸ بیت رو AND کنه
  4. و مدار(ها)ی طراحی کنیم که بتونن ۸ بیت رو جمع و تفریق کنن.

حالا به سادگی میتونیم بفهمیم که چی میخوایم. البته این صرفا واحد محاسبه و منطق هست، ما باید یک واحد حافظه، یک واحد کنترل و چند واحد حافظه موقتی و کوچک هم طراحی کنیم که با چسبوندنشون به هم، بتونیم به کامپیوتر کامل برسیم.

در پست های بعدی، زیرمدارهای کامپیوتر خودمون رو میسازیم. در این پست صرفا با کامپیوتر ساده و کوچیکمون آشنا شدیم 🙂

Share

درآمدی بر پردازنده ها

ALUwithRegister

پس از مدتها تحقیق و بررسی در مورد پردازنده های مرسوم، و همچنین خوندن داکیومنت های مربوط به ساخت و پیاده سازی پردازنده ها، تصمیم گرفتم یک داکیومنت ساده دست و پا کنم، که توی اون از ساده ترین قطعات و بخش های کامپیوتر، به یک پردازنده ساده برسیم که بتونه چند عملیات انجام بده و نتیجه رو ذخیره کنه.

داکیومنت از اینجا قابل دریافت هست.

با تشکر.

Share

روز آفتابی و لامپ روشن

سلام. در این مطلب، قصد داریم در مورد ساختار کامپیوتر بحث کنیم. البته بیشترین چیزی که توی این مطلب بهش پرداخته میشه، دروازه های منطقی هستند و این که چطور میتونیم اون ها رو بسازیم.

بسیار خوب، عنوان مطلب به قدر کافی گویا هست که قراره چی رو به چی ربط بدیم، ولی بیاید این مثال رو در نظر بگیریم :

یک اتاق داریم که پنجره های زیادی داره و موقعیتش طوریه که در طول روز، بسیار نورگیره. واردش میشیم و می بینیم که یه لامپ روشنه. بعد دنبال کلید میگردیم. می بینیم که دو تا کلید کنار در هست، که هردو در وضعیت خاموش قرار داره. اولین احتمالی که پیش خودمون در نظر میگیریم، اینه که برقکار محترم کلید رو برعکس بسته. خب میگیم ایرادی نداره. یکی رو میزنیم، چراغ خاموش نمیشه. برش میگردونیم به حالت اول و اون یکی رو میزنیم. بازم چراغ خاموش نمیشه. یهو کنجکاو میشیم که هر دو کلید رو با هم در حالت روشن قرار بدیم، اون موقعه که می بینیم چی شد؟ چراغ خاموش شد!

حالا چه چیزی باعث شد که چراغ ما خاموش بشه؟ اینجاست که به جادوی ترانزیستورها باید ایمان بیاریم. در واقع دو کلید ما به یک مدار به این شکل وصل هستند :

0 -NAND Gate using transistors

 

این مدار، یک مدار یا بهتر بگم دروازه منطقیه که بهش NAND میگن. این مدار رو ما توی اون کلید قرار دادیم، و جدول درستیش به این شکله که هر وقت هر دو ورودی صحیح باشن، خروجی غلط میشه. حالا برای نمایش دادن بهتر این گیت، از این نماد استفاده میشه :

1- NAND gate

خب، سایر گیت ها (که با نماد های دیگه ای نشون داده میشن) رو میتونیم از این گیت بسازیم. اما چیزی که هست اینه که این گیت، چیزیه که کامپیوتر رو میسازه. در واقع در عمده IC هایی که خریداری میکنیم تعداد زیادی گیت NAND قرار داره که با وصل کردنش به هم، میتونیم گیت های دیگه ای رو هم بسازیم.

2-NAND Logic

خب، حالا فرض کنیم که به جای دو تا ورودی، یه ورودی دادیم به گیت NAND . یعنی از یک کلید، دو سیم به هر دو ورودی گیت وصل کردیم، به این شکل :

3-NOT Logic using NAND

حالا، اگر این کلید رو بزنیم، خروجی غلط و اگر خاموشش کنیم خروجی درست میشه. این ترکیب رو «نقض کننده» یا NOT هم بهش میگیم. در واقع گیت NOT که یک گیت با یک ورودی هست رو میتونیم به این شکل بسازیم.

الان میدونیم که یک NOT یا نقیض وجود داره. حالا میتونیم به جای اون ورودی، یک NAND با دو ورودی قرار بدیم که به این شکل در بیاد :

4-AND Logic using NAND

خب این مدار، یکم پیچیده شد. ولی دقت کنید که داره نقیض نتیجه NAND رو به ما میده. یعنی چی؟ یعنی در صورتی خروجی درست میشه که هر دو ورودی درست باشن. این منطق و این مدار هم که AND هست، و اگر جبر بول رو کمی بدونید میدونید که از بیسیک ترین دستورات جبر بول هست.

حالا، یه مدل دیگه این گیت ها رو پیش هم میچینیم. چطوری؟ این بار به جای نقض کردن نتیجه، نقیض ورودی ها رو به عنوان ورودی میدیم به یک گیت NAND . در واقع به این شکل :

5-OR Logic using NAND

حالا نتیجه به این شکل هست که «درصورتی که حداقل یکی از ورودی ها درست باشه، نتیجه درست میشه». و این منطق، منطق OR هست. در واقع گیت OR رو هم با NAND پیاده سازی کردیم.

یک مدار دیگه هم میمونه که نوع خیلی خاصی از OR هست. در واقع به این شکله :

6-XOR Logic using NAND

توی این گیت جدید، ما در واقع وقتی به نتیجه درست میرسیم، که تعداد «فرد» از ورودی ها (در اینجا یک، چون دو تا ورودی بیشتر نداریم) درست باشن. این منطق و این گیت رو «یای انحصاری» یا XOR میگن. اگر یک IC داشته باشیم که ۵ تا گیت NAND داخلش باشه، میتونیم ازش یک XOR بسازیم.

همه ما میدونیم که این گیت ها خودشون نماد انحصاری دارن و وقتی قراره چیزی با استفاده ازشون طراحی کنیم، بهتره (و باید!) از نمادهای خودشون استفاده کنیم، ولی یکی از دلایلی که این مطلب رو نوشتم این بود که میخواستم شما رو با ساختار درونی گیت ها آشنا کنم، همچنین میخواستم بررسی کنم که با استفاده از IC هایی که گیت NAND داخلشون هست، چطور میشه به سایر گیت ها رسید.

سال نو مبارک، موفق باشید 🙂

Share

ساخت یک کامپیوتر ۴ بیتی ساده با استفاده از مدارات منطقی

یک زمانی، حتی فکر کردن به این که بتونیم با چندتا مدار ساده یک کامپیوتر (حتی ۴ بیتی) هم داشته باشیم، احمقانه و ناممکن به نظر میرسید. چرا که هزینه شبیه سازی خیلی از مدارها و تستشون بسیار بالا بود. اما توی این دوره، شما با خوندن چند تا داکیومنت و نصب چند نرم افزار ساده، میتونید کامپیوتر خودتون رو بسازید. بسیار خوب، منبع این پست ، این مقالست که یک ویدئوی خوب هم داره. توی این مقاله به جای استفاده مستقیم از مدارات منطقی، اومدن و از ترانزیستور استفاده کردن، اما باز هم استفاده از ترانزیستور منطقی به نظر نمیرسه، چرا که مدارهای منطقی کوچک ترن و فهمشون هم راحت تره.

مدارهای منطقی چی هستن؟

به صورت خیلی ساده بخوام این رو توضیح بدم، میگم مجموعه ای از ترانزیستور ها که عملیات منطقی (با جبر بول) مثل «و» و «یا» و «نفی» رو انجام میدن. و از ترکیبشون هم میشه مدارهای پیچیده تر یا مدارهای منطقی دیگه رو ساخت. برای فهم بهتر این قضیه، مقاله ویکیپدیا در این باره رو بخونید. توی این پست فرض بر اینه که شما، مدارهای منطقی رو بلدید و میدونید که چی هستن و چی کار میکنن.

برای پردازنده کوچکمون چی نیازه؟

اول از همه، نیاز داریم که یک مدار Adder بسازیم. مدارهای Adder معمولا از چند تا Full Adder یک بیتی تشکیل میشن، و هر فول ادر یک بیتی هم از دو تا Half-adder .

برای ساخت Half-adder کافیه که یک بار ورودی A رو NOT کنیم و با B اون رو AND کنیم، سپس B رو NOT کنیم و با A اون رو AND کنیم. آخر هم نتیجه دو تا AND رو با هم OR کنیم. برای بدست آوردن رقم نقلی هم کافیه که A و B رو مستقیما با هم AND کنیم.half-adder2

مدار Half Adder نهاییمون به این شکل میشه. اما استفاده مدوام از NOT و AND و OR باعث سخت شدن توسعه ماشین میشه، پس از مجموعه ای که برای ساخت Half Adder استفاده کردیم میتونیم صرف نظر کنیم و از مدار XOR استفاده کنیم. البته همچنان برای رقم نقلیمون به AND نیاز خواهیم داشت.

بسیار خوب، برای Full Adder نیاز داریم که از پیش تعیین کنیم رقم نقلی ای وجود داره؟ یا نه! و برای این کار غیر از A و B یک ورودی به اسم Carry In یا «رقم نقلی ورودی» خواهیم داشت. و سپس، رقم نقلی ورودی رو باید به عنوان ورودی به یک Half-Adder دیگه بدیم. سپس، نتیجه AND شدن A و B رو با نتیجه AND شدن اولین Half-Adder و Carry In رو با هم OR کنیم تا رقم نقلی کلی بدست بیاد. پس مدار ما به این شکل خواهد شد :

full adderخب، این دو مدار رو الان ساختیم. قدم بعدی، ساختن کامپیوترمونه!

برای ساختن یک Adder چهار بیتی، باید به این شکل فول ادر ها رو کنار هم بچینیم :

Slide11همونطور که دیدید، این روش چیدن Adder ها پشت هم، مدل Ripple Carry نامیده میشه. خب، این کامپیوتر کوچک، میتونه اعداد ۰ تا ۱۶ (در دنیای بدون علامت و با در نظر گرفتن رقم نقلی) و -۱۶ تا ۱۵ (در دنیای علامت دار و بدون در نظر گرفتن رقم نقلی) رو به ما نمایش بده. با خاموش و روشن کردن به موقع مدارها عملیات جمع و تفریق رو میتونید انجام بدید.

من خودم با ترکیب این مدارها، این رو ساختم، و بیت ها  رو با لامپ نشون دادم :

4-bit computer simulation

برای شبیه سازی چه نرم افزاری نیازه؟

من برای کشیدن نقشه Half Adder و Full Adder از تخته وایت برد اتاقم (بله! تخته وایت برد توی اتاقا الزامیه!) و نرم افزار Logisim (موجود در مخازن اوبونتو) استفاده کردم. برای شبیه سازی کلی ماشین هم از Logic.ly که آزمایشگاه آنلاین داره استفاده کردم. البته هر نرم افزار دیگه ای میتونه بهتون در شبیه سازی کمک کنه. حتی میتونید با VHDL هم بنویسیدش و تستش کنید!

امیدوارم که این پست هم براتون مفید واقع شده باشه!

موفق باشید.

Share

ملاقات با اوبونتو ۱۵.۰۴

Screenshot from 2015-04-24 16:09:07پنجشنه، نسخه جدید اوبونتو، یعنی ۱۵.۰۴ منتشر شد. این نسخه، اولین نسخه منتشر شده در سال ۲۰۱۵ و در ماه آپریل، یعنی ماه چهارم هست و طبیعتا بخاطر همین نامش میشه ۱۵.۰۴ . در این تاپیک قصد بررسی فنی ندارم، فقط تنها خوبیش برام این بود که مینت مزاحم رو پاک کردم و این رو جاش نصب کردم. نسخه بعدی، ۶ ماه دیگه یعنی در ماه ۱۰ میلادی منتشر میشه. هنوز جزئیاتی ازش منتشر نشده. در مورد این نسخه بخوام بگم (۱۵.۰۴) باید بگم که در یک کلام «عالی» بود. تقریبا همه نسخه هایی که روی لپتاپی که یک سال از عمرش میگذره نصب کردم، خیلی خیلی خوب جواب دادن. تست ها و Review های دیگر هم همینو میگن :).

نرم افزار پخش ویدئوی این نسخه هم ظاهر جالبی پیدا کرده :

Screenshot from 2015-04-25 01:24:41تقریبا این نرم افزار رو ظاهرش  رو به مینیمالیست ترین شکل ممکن باز-طراحی کردن (بابت عکس ترسناکش معذرت! این کنسرت تنها ویدئوی موجود بود اون موقع که داشتم تست میکردم نرم افزارها رو!).

خلاصه که تغییرات زیادی کرده این نسخه و در یک مطلب طولانی، در موردش بیشتر خواهم نوشت 🙂

Share