ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

บทความนี้ให้คำอธิบายเกี่ยวกับไมโครคอนโทรลเลอร์ PIC และเจาะลึกรายละเอียดของสถาปัตยกรรมภายใน

ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

PIC คือ ไมโครคอนโทรลเลอร์แบบ Peripheral Interface ซึ่งพัฒนาขึ้นในปี พ.ศ. 2536 โดยไมโครคอนโทรลเลอร์ของ General Instruments PIC ถูกควบคุมโดยซอฟต์แวร์และเขียนโปรแกรมเพื่อให้ทำงานต่างๆ และควบคุมสายการผลิต ไมโครคอนโทรลเลอร์ PIC ถูกนำไปใช้ในแอปพลิเคชันใหม่ๆ มากมาย เช่น สมาร์ทโฟน อุปกรณ์เสริมด้านเสียง และอุปกรณ์การแพทย์ขั้นสูง

ไมโครคอนโทรลเลอร์ PIC

มี PICs มากมายในตลาด ตั้งแต่ PIC16F84 ไปจนถึง PIC16C84 PICs เหล่านี้เป็น PICs แฟลชที่มีราคาไม่แพง Microchip เพิ่งเปิดตัวชิปแฟลชที่มีหลากหลายประเภท เช่น 16F628, 16F877 และ 18F452 16F877 มีราคาสองเท่าของ 16F84 รุ่นเก่า แต่มีขนาดใหญ่กว่าถึงแปดเท่า มี RAM มากขึ้น มีพิน I/O มากขึ้น มี UART มีตัวแปลง A/D และฟีเจอร์อื่นๆ อีกมากมาย

สถาปัตยกรรมไมโครคอนโทรลเลอร์ PIC

ไมโคร คอนโทรลเลอร์ PIC ใช้สถาปัตยกรรม RISC สถาปัตยกรรมหน่วยความจำเป็นไปตามรูปแบบฮาร์วาร์ด ซึ่งประกอบด้วยหน่วยความจำแยกกันสำหรับโปรแกรมและข้อมูล โดยมีบัสแยกกัน

1. โครงสร้างความจำ

สถาปัตยกรรม PIC ประกอบด้วยหน่วยความจำสองหน่วย: หน่วยความจำโปรแกรมและหน่วยความจำข้อมูล

หน่วยความจำโปรแกรม: เป็นพื้นที่หน่วยความจำขนาด 4K*14 ใช้สำหรับเก็บคำสั่ง 13 บิตหรือรหัสโปรแกรม ข้อมูลหน่วยความจำโปรแกรมสามารถเข้าถึงได้โดยรีจิสเตอร์ตัวนับโปรแกรมที่เก็บที่อยู่ของหน่วยความจำโปรแกรม ที่อยู่ 0000H ใช้เป็นพื้นที่หน่วยความจำรีเซ็ต และ 0004H ใช้เป็นพื้นที่หน่วยความจำขัดจังหวะ

หน่วยความจำข้อมูล: หน่วยความจำข้อมูลประกอบด้วย RAM ขนาด 368 ไบต์ และ EEPROM ขนาด 256 ไบต์ โดย RAM ขนาด 368 ไบต์ประกอบด้วยแบงก์หลายแบงก์ แต่ละแบงก์ประกอบด้วยรีจิสเตอร์อเนกประสงค์และรีจิสเตอร์ฟังก์ชันพิเศษ

รีจิสเตอร์ฟังก์ชันพิเศษประกอบด้วยรีจิสเตอร์ควบคุมเพื่อควบคุมการทำงานต่างๆ ของทรัพยากรชิป เช่น ตัวจับเวลา ตัวแปลงอนาล็อกเป็นดิจิทัลพอร์ตซีเรียล พอร์ต I/O เป็นต้น ตัวอย่างเช่น รีจิสเตอร์ TRISA ที่สามารถเปลี่ยนบิตได้เพื่อเปลี่ยนแปลงการทำงานอินพุตหรือเอาต์พุตของพอร์ต A

รีจิสเตอร์เอนกประสงค์ประกอบด้วยรีจิสเตอร์ที่ใช้สำหรับจัดเก็บข้อมูลชั่วคราวและประมวลผลผลลัพธ์ของข้อมูล รีจิสเตอร์เอนกประสงค์เหล่านี้มีขนาด 8 บิตต่อรีจิสเตอร์

รีจิสเตอร์ทำงาน: ประกอบด้วยพื้นที่หน่วยความจำที่ใช้เก็บตัวดำเนินการสำหรับแต่ละคำสั่ง นอกจากนี้ยังเก็บผลลัพธ์ของการดำเนินการแต่ละครั้งด้วย

รีจิสเตอร์สถานะ: บิตของรีจิสเตอร์สถานะแสดงสถานะของ ALU (หน่วยคำนวณและตรรกะ) หลังจากการดำเนินการคำสั่งแต่ละครั้ง นอกจากนี้ยังใช้เพื่อเลือกธนาคารใดธนาคารหนึ่งจาก 4 ธนาคารของ RAM อีกด้วย

รีจิสเตอร์การเลือกไฟล์: ทำหน้าที่เป็นตัวชี้ไปยังรีจิสเตอร์อเนกประสงค์อื่นๆ ประกอบด้วยที่อยู่ไฟล์ของรีจิสเตอร์ และใช้ในการกำหนดแอดเดรสทางอ้อม

รีจิสเตอร์เอนกประสงค์อีกตัวหนึ่งคือรีจิสเตอร์ตัวนับโปรแกรม ซึ่งเป็นรีจิสเตอร์ขนาด 13 บิต บิตบน 5 บิตใช้เป็น PCLATH (Program Counter Latch) เพื่อทำงานอย่างอิสระเช่นเดียวกับรีจิสเตอร์อื่นๆ ส่วนบิตล่าง 8 บิตใช้เป็นบิตตัวนับโปรแกรม ตัวนับโปรแกรมทำหน้าที่เป็นตัวชี้ไปยังคำสั่งที่เก็บไว้ในหน่วยความจำโปรแกรม

อีพีรอม: ประกอบด้วยพื้นที่หน่วยความจำ 256 ไบต์ เป็นหน่วยความจำถาวรเช่นเดียวกับรอม แต่สามารถลบและเปลี่ยนแปลงข้อมูลได้ระหว่างการทำงานของไมโครคอนโทรลเลอร์ เนื้อหาในอีพีรอมสามารถอ่านหรือเขียนได้โดยใช้รีจิสเตอร์ฟังก์ชันพิเศษ เช่น EECON1, EECON เป็นต้น

2. พอร์ต I/O

ซีรีส์ PIC16 ประกอบด้วยพอร์ต 5 พอร์ต ได้แก่ พอร์ต A, พอร์ต B, พอร์ต C, พอร์ต D และพอร์ต E

  • พอร์ต A: เป็นพอร์ต 16 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตหรือเอาต์พุตได้ตามสถานะของรีจิสเตอร์ TRISA
  • พอร์ต B: เป็นพอร์ต 8 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตและเอาต์พุตได้ โดย 4 บิตเมื่อใช้เป็นอินพุตสามารถเปลี่ยนแปลงได้เมื่อมีสัญญาณขัดจังหวะ
  • พอร์ต C: เป็นพอร์ต 8 บิตซึ่งการทำงาน (อินพุตหรือเอาต์พุต) จะถูกกำหนดโดยสถานะของรีจิสเตอร์ TRISC
  • พอร์ต D: เป็นพอร์ต 8 บิต ซึ่งนอกจากจะเป็นพอร์ต I/O แล้ว ยังทำหน้าที่เป็นพอร์ตสเลฟสำหรับการเชื่อมต่อกับ  บัสไมโครโปรเซสเซอร์ อีกด้วย
  • พอร์ต E: เป็นพอร์ต 3 บิตที่ทำหน้าที่เพิ่มเติมของสัญญาณควบคุมไปยังตัวแปลง A/D

3. ตัวจับเวลา

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วย ตัวจับเวลา 3 ตัว โดยที่ Timer 0 และ Timer 2 เป็นตัวจับเวลา 8 บิต และ Time-1 เป็นตัวจับเวลา 16 บิต ซึ่งสามารถใช้เป็น ตัวนับได้ เช่นกัน

4. ตัวแปลง A/D

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยตัวแปลงอนาล็อกเป็นดิจิทัล 8 ช่องสัญญาณ ขนาด 10 บิต การทำงานของ ตัวแปลง A/D ถูกควบคุมโดยรีจิสเตอร์ฟังก์ชันพิเศษเหล่านี้ ได้แก่ ADCON0 และ ADCON1 บิตล่างของตัวแปลงจะถูกเก็บไว้ใน ADRESL (8 บิต) และบิตบนจะถูกเก็บไว้ในรีจิสเตอร์ ADRESH ต้องใช้แรงดันอ้างอิงอนาล็อก 5V สำหรับการทำงาน

5. ออสซิลเลเตอร์

ออสซิลเลเตอร์ ใช้สำหรับกำหนดเวลา ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยออสซิลเลเตอร์ภายนอก เช่น คริสตัล หรือ RC ออสซิลเลเตอร์ ในกรณีของคริสตัลออสซิลเลเตอร์ คริสตัลจะเชื่อมต่อระหว่างขาออสซิลเลเตอร์สองขา และค่าของตัวเก็บประจุที่เชื่อมต่อกับแต่ละขาจะเป็นตัวกำหนดโหมดการทำงานของออสซิลเลเตอร์ โหมดต่างๆ ได้แก่ โหมดพลังงานต่ำ โหมดคริสตัล และโหมดความเร็วสูง ในกรณีของ RC ออสซิลเลเตอร์ ค่าของตัวต้านทานและตัวเก็บประจุจะเป็นตัวกำหนดความถี่สัญญาณนาฬิกา ความถี่สัญญาณนาฬิกามีตั้งแต่ 30 kHz ถึง 4 MHz

6. โมดูล CCP:

โมดูล CCP ทำงานในสามโหมดต่อไปนี้: 

โหมดจับภาพ: โหมดนี้จะจับภาพเวลาที่สัญญาณมาถึง หรืออีกนัยหนึ่งคือ จับภาพค่าของ Timer1 เมื่อพิน CCP มีค่าสูง

โหมดเปรียบเทียบ: ทำหน้าที่เป็นตัวเปรียบเทียบแอนะล็อกที่สร้างเอาต์พุตเมื่อค่าตัวจับเวลา 1 ถึงค่าอ้างอิงที่กำหนด

โหมด PWM: ให้ เอาต์พุต แบบปรับความกว้างพัลส์ ด้วยความละเอียด 10 บิตและรอบการทำงานที่ตั้งโปรแกรมได้

บทความที่เกี่ยวข้อง

ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

บทความนี้ให้คำอธิบายเกี่ยวกับไมโครคอนโทรลเลอร์ PIC และเจาะลึกรายละเอียดของสถาปัตยกรรมภายใน

นักเขียนบทความ
by 
นักเขียนบทความ
ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

บทความนี้ให้คำอธิบายเกี่ยวกับไมโครคอนโทรลเลอร์ PIC และเจาะลึกรายละเอียดของสถาปัตยกรรมภายใน

PIC คือ ไมโครคอนโทรลเลอร์แบบ Peripheral Interface ซึ่งพัฒนาขึ้นในปี พ.ศ. 2536 โดยไมโครคอนโทรลเลอร์ของ General Instruments PIC ถูกควบคุมโดยซอฟต์แวร์และเขียนโปรแกรมเพื่อให้ทำงานต่างๆ และควบคุมสายการผลิต ไมโครคอนโทรลเลอร์ PIC ถูกนำไปใช้ในแอปพลิเคชันใหม่ๆ มากมาย เช่น สมาร์ทโฟน อุปกรณ์เสริมด้านเสียง และอุปกรณ์การแพทย์ขั้นสูง

ไมโครคอนโทรลเลอร์ PIC

มี PICs มากมายในตลาด ตั้งแต่ PIC16F84 ไปจนถึง PIC16C84 PICs เหล่านี้เป็น PICs แฟลชที่มีราคาไม่แพง Microchip เพิ่งเปิดตัวชิปแฟลชที่มีหลากหลายประเภท เช่น 16F628, 16F877 และ 18F452 16F877 มีราคาสองเท่าของ 16F84 รุ่นเก่า แต่มีขนาดใหญ่กว่าถึงแปดเท่า มี RAM มากขึ้น มีพิน I/O มากขึ้น มี UART มีตัวแปลง A/D และฟีเจอร์อื่นๆ อีกมากมาย

สถาปัตยกรรมไมโครคอนโทรลเลอร์ PIC

ไมโคร คอนโทรลเลอร์ PIC ใช้สถาปัตยกรรม RISC สถาปัตยกรรมหน่วยความจำเป็นไปตามรูปแบบฮาร์วาร์ด ซึ่งประกอบด้วยหน่วยความจำแยกกันสำหรับโปรแกรมและข้อมูล โดยมีบัสแยกกัน

1. โครงสร้างความจำ

สถาปัตยกรรม PIC ประกอบด้วยหน่วยความจำสองหน่วย: หน่วยความจำโปรแกรมและหน่วยความจำข้อมูล

หน่วยความจำโปรแกรม: เป็นพื้นที่หน่วยความจำขนาด 4K*14 ใช้สำหรับเก็บคำสั่ง 13 บิตหรือรหัสโปรแกรม ข้อมูลหน่วยความจำโปรแกรมสามารถเข้าถึงได้โดยรีจิสเตอร์ตัวนับโปรแกรมที่เก็บที่อยู่ของหน่วยความจำโปรแกรม ที่อยู่ 0000H ใช้เป็นพื้นที่หน่วยความจำรีเซ็ต และ 0004H ใช้เป็นพื้นที่หน่วยความจำขัดจังหวะ

หน่วยความจำข้อมูล: หน่วยความจำข้อมูลประกอบด้วย RAM ขนาด 368 ไบต์ และ EEPROM ขนาด 256 ไบต์ โดย RAM ขนาด 368 ไบต์ประกอบด้วยแบงก์หลายแบงก์ แต่ละแบงก์ประกอบด้วยรีจิสเตอร์อเนกประสงค์และรีจิสเตอร์ฟังก์ชันพิเศษ

รีจิสเตอร์ฟังก์ชันพิเศษประกอบด้วยรีจิสเตอร์ควบคุมเพื่อควบคุมการทำงานต่างๆ ของทรัพยากรชิป เช่น ตัวจับเวลา ตัวแปลงอนาล็อกเป็นดิจิทัลพอร์ตซีเรียล พอร์ต I/O เป็นต้น ตัวอย่างเช่น รีจิสเตอร์ TRISA ที่สามารถเปลี่ยนบิตได้เพื่อเปลี่ยนแปลงการทำงานอินพุตหรือเอาต์พุตของพอร์ต A

รีจิสเตอร์เอนกประสงค์ประกอบด้วยรีจิสเตอร์ที่ใช้สำหรับจัดเก็บข้อมูลชั่วคราวและประมวลผลผลลัพธ์ของข้อมูล รีจิสเตอร์เอนกประสงค์เหล่านี้มีขนาด 8 บิตต่อรีจิสเตอร์

รีจิสเตอร์ทำงาน: ประกอบด้วยพื้นที่หน่วยความจำที่ใช้เก็บตัวดำเนินการสำหรับแต่ละคำสั่ง นอกจากนี้ยังเก็บผลลัพธ์ของการดำเนินการแต่ละครั้งด้วย

รีจิสเตอร์สถานะ: บิตของรีจิสเตอร์สถานะแสดงสถานะของ ALU (หน่วยคำนวณและตรรกะ) หลังจากการดำเนินการคำสั่งแต่ละครั้ง นอกจากนี้ยังใช้เพื่อเลือกธนาคารใดธนาคารหนึ่งจาก 4 ธนาคารของ RAM อีกด้วย

รีจิสเตอร์การเลือกไฟล์: ทำหน้าที่เป็นตัวชี้ไปยังรีจิสเตอร์อเนกประสงค์อื่นๆ ประกอบด้วยที่อยู่ไฟล์ของรีจิสเตอร์ และใช้ในการกำหนดแอดเดรสทางอ้อม

รีจิสเตอร์เอนกประสงค์อีกตัวหนึ่งคือรีจิสเตอร์ตัวนับโปรแกรม ซึ่งเป็นรีจิสเตอร์ขนาด 13 บิต บิตบน 5 บิตใช้เป็น PCLATH (Program Counter Latch) เพื่อทำงานอย่างอิสระเช่นเดียวกับรีจิสเตอร์อื่นๆ ส่วนบิตล่าง 8 บิตใช้เป็นบิตตัวนับโปรแกรม ตัวนับโปรแกรมทำหน้าที่เป็นตัวชี้ไปยังคำสั่งที่เก็บไว้ในหน่วยความจำโปรแกรม

อีพีรอม: ประกอบด้วยพื้นที่หน่วยความจำ 256 ไบต์ เป็นหน่วยความจำถาวรเช่นเดียวกับรอม แต่สามารถลบและเปลี่ยนแปลงข้อมูลได้ระหว่างการทำงานของไมโครคอนโทรลเลอร์ เนื้อหาในอีพีรอมสามารถอ่านหรือเขียนได้โดยใช้รีจิสเตอร์ฟังก์ชันพิเศษ เช่น EECON1, EECON เป็นต้น

2. พอร์ต I/O

ซีรีส์ PIC16 ประกอบด้วยพอร์ต 5 พอร์ต ได้แก่ พอร์ต A, พอร์ต B, พอร์ต C, พอร์ต D และพอร์ต E

  • พอร์ต A: เป็นพอร์ต 16 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตหรือเอาต์พุตได้ตามสถานะของรีจิสเตอร์ TRISA
  • พอร์ต B: เป็นพอร์ต 8 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตและเอาต์พุตได้ โดย 4 บิตเมื่อใช้เป็นอินพุตสามารถเปลี่ยนแปลงได้เมื่อมีสัญญาณขัดจังหวะ
  • พอร์ต C: เป็นพอร์ต 8 บิตซึ่งการทำงาน (อินพุตหรือเอาต์พุต) จะถูกกำหนดโดยสถานะของรีจิสเตอร์ TRISC
  • พอร์ต D: เป็นพอร์ต 8 บิต ซึ่งนอกจากจะเป็นพอร์ต I/O แล้ว ยังทำหน้าที่เป็นพอร์ตสเลฟสำหรับการเชื่อมต่อกับ  บัสไมโครโปรเซสเซอร์ อีกด้วย
  • พอร์ต E: เป็นพอร์ต 3 บิตที่ทำหน้าที่เพิ่มเติมของสัญญาณควบคุมไปยังตัวแปลง A/D

3. ตัวจับเวลา

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วย ตัวจับเวลา 3 ตัว โดยที่ Timer 0 และ Timer 2 เป็นตัวจับเวลา 8 บิต และ Time-1 เป็นตัวจับเวลา 16 บิต ซึ่งสามารถใช้เป็น ตัวนับได้ เช่นกัน

4. ตัวแปลง A/D

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยตัวแปลงอนาล็อกเป็นดิจิทัล 8 ช่องสัญญาณ ขนาด 10 บิต การทำงานของ ตัวแปลง A/D ถูกควบคุมโดยรีจิสเตอร์ฟังก์ชันพิเศษเหล่านี้ ได้แก่ ADCON0 และ ADCON1 บิตล่างของตัวแปลงจะถูกเก็บไว้ใน ADRESL (8 บิต) และบิตบนจะถูกเก็บไว้ในรีจิสเตอร์ ADRESH ต้องใช้แรงดันอ้างอิงอนาล็อก 5V สำหรับการทำงาน

5. ออสซิลเลเตอร์

ออสซิลเลเตอร์ ใช้สำหรับกำหนดเวลา ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยออสซิลเลเตอร์ภายนอก เช่น คริสตัล หรือ RC ออสซิลเลเตอร์ ในกรณีของคริสตัลออสซิลเลเตอร์ คริสตัลจะเชื่อมต่อระหว่างขาออสซิลเลเตอร์สองขา และค่าของตัวเก็บประจุที่เชื่อมต่อกับแต่ละขาจะเป็นตัวกำหนดโหมดการทำงานของออสซิลเลเตอร์ โหมดต่างๆ ได้แก่ โหมดพลังงานต่ำ โหมดคริสตัล และโหมดความเร็วสูง ในกรณีของ RC ออสซิลเลเตอร์ ค่าของตัวต้านทานและตัวเก็บประจุจะเป็นตัวกำหนดความถี่สัญญาณนาฬิกา ความถี่สัญญาณนาฬิกามีตั้งแต่ 30 kHz ถึง 4 MHz

6. โมดูล CCP:

โมดูล CCP ทำงานในสามโหมดต่อไปนี้: 

โหมดจับภาพ: โหมดนี้จะจับภาพเวลาที่สัญญาณมาถึง หรืออีกนัยหนึ่งคือ จับภาพค่าของ Timer1 เมื่อพิน CCP มีค่าสูง

โหมดเปรียบเทียบ: ทำหน้าที่เป็นตัวเปรียบเทียบแอนะล็อกที่สร้างเอาต์พุตเมื่อค่าตัวจับเวลา 1 ถึงค่าอ้างอิงที่กำหนด

โหมด PWM: ให้ เอาต์พุต แบบปรับความกว้างพัลส์ ด้วยความละเอียด 10 บิตและรอบการทำงานที่ตั้งโปรแกรมได้

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

ไมโครคอนโทรลเลอร์ PIC และสถาปัตยกรรมพร้อมคำอธิบาย

บทความนี้ให้คำอธิบายเกี่ยวกับไมโครคอนโทรลเลอร์ PIC และเจาะลึกรายละเอียดของสถาปัตยกรรมภายใน

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

PIC คือ ไมโครคอนโทรลเลอร์แบบ Peripheral Interface ซึ่งพัฒนาขึ้นในปี พ.ศ. 2536 โดยไมโครคอนโทรลเลอร์ของ General Instruments PIC ถูกควบคุมโดยซอฟต์แวร์และเขียนโปรแกรมเพื่อให้ทำงานต่างๆ และควบคุมสายการผลิต ไมโครคอนโทรลเลอร์ PIC ถูกนำไปใช้ในแอปพลิเคชันใหม่ๆ มากมาย เช่น สมาร์ทโฟน อุปกรณ์เสริมด้านเสียง และอุปกรณ์การแพทย์ขั้นสูง

ไมโครคอนโทรลเลอร์ PIC

มี PICs มากมายในตลาด ตั้งแต่ PIC16F84 ไปจนถึง PIC16C84 PICs เหล่านี้เป็น PICs แฟลชที่มีราคาไม่แพง Microchip เพิ่งเปิดตัวชิปแฟลชที่มีหลากหลายประเภท เช่น 16F628, 16F877 และ 18F452 16F877 มีราคาสองเท่าของ 16F84 รุ่นเก่า แต่มีขนาดใหญ่กว่าถึงแปดเท่า มี RAM มากขึ้น มีพิน I/O มากขึ้น มี UART มีตัวแปลง A/D และฟีเจอร์อื่นๆ อีกมากมาย

สถาปัตยกรรมไมโครคอนโทรลเลอร์ PIC

ไมโคร คอนโทรลเลอร์ PIC ใช้สถาปัตยกรรม RISC สถาปัตยกรรมหน่วยความจำเป็นไปตามรูปแบบฮาร์วาร์ด ซึ่งประกอบด้วยหน่วยความจำแยกกันสำหรับโปรแกรมและข้อมูล โดยมีบัสแยกกัน

1. โครงสร้างความจำ

สถาปัตยกรรม PIC ประกอบด้วยหน่วยความจำสองหน่วย: หน่วยความจำโปรแกรมและหน่วยความจำข้อมูล

หน่วยความจำโปรแกรม: เป็นพื้นที่หน่วยความจำขนาด 4K*14 ใช้สำหรับเก็บคำสั่ง 13 บิตหรือรหัสโปรแกรม ข้อมูลหน่วยความจำโปรแกรมสามารถเข้าถึงได้โดยรีจิสเตอร์ตัวนับโปรแกรมที่เก็บที่อยู่ของหน่วยความจำโปรแกรม ที่อยู่ 0000H ใช้เป็นพื้นที่หน่วยความจำรีเซ็ต และ 0004H ใช้เป็นพื้นที่หน่วยความจำขัดจังหวะ

หน่วยความจำข้อมูล: หน่วยความจำข้อมูลประกอบด้วย RAM ขนาด 368 ไบต์ และ EEPROM ขนาด 256 ไบต์ โดย RAM ขนาด 368 ไบต์ประกอบด้วยแบงก์หลายแบงก์ แต่ละแบงก์ประกอบด้วยรีจิสเตอร์อเนกประสงค์และรีจิสเตอร์ฟังก์ชันพิเศษ

รีจิสเตอร์ฟังก์ชันพิเศษประกอบด้วยรีจิสเตอร์ควบคุมเพื่อควบคุมการทำงานต่างๆ ของทรัพยากรชิป เช่น ตัวจับเวลา ตัวแปลงอนาล็อกเป็นดิจิทัลพอร์ตซีเรียล พอร์ต I/O เป็นต้น ตัวอย่างเช่น รีจิสเตอร์ TRISA ที่สามารถเปลี่ยนบิตได้เพื่อเปลี่ยนแปลงการทำงานอินพุตหรือเอาต์พุตของพอร์ต A

รีจิสเตอร์เอนกประสงค์ประกอบด้วยรีจิสเตอร์ที่ใช้สำหรับจัดเก็บข้อมูลชั่วคราวและประมวลผลผลลัพธ์ของข้อมูล รีจิสเตอร์เอนกประสงค์เหล่านี้มีขนาด 8 บิตต่อรีจิสเตอร์

รีจิสเตอร์ทำงาน: ประกอบด้วยพื้นที่หน่วยความจำที่ใช้เก็บตัวดำเนินการสำหรับแต่ละคำสั่ง นอกจากนี้ยังเก็บผลลัพธ์ของการดำเนินการแต่ละครั้งด้วย

รีจิสเตอร์สถานะ: บิตของรีจิสเตอร์สถานะแสดงสถานะของ ALU (หน่วยคำนวณและตรรกะ) หลังจากการดำเนินการคำสั่งแต่ละครั้ง นอกจากนี้ยังใช้เพื่อเลือกธนาคารใดธนาคารหนึ่งจาก 4 ธนาคารของ RAM อีกด้วย

รีจิสเตอร์การเลือกไฟล์: ทำหน้าที่เป็นตัวชี้ไปยังรีจิสเตอร์อเนกประสงค์อื่นๆ ประกอบด้วยที่อยู่ไฟล์ของรีจิสเตอร์ และใช้ในการกำหนดแอดเดรสทางอ้อม

รีจิสเตอร์เอนกประสงค์อีกตัวหนึ่งคือรีจิสเตอร์ตัวนับโปรแกรม ซึ่งเป็นรีจิสเตอร์ขนาด 13 บิต บิตบน 5 บิตใช้เป็น PCLATH (Program Counter Latch) เพื่อทำงานอย่างอิสระเช่นเดียวกับรีจิสเตอร์อื่นๆ ส่วนบิตล่าง 8 บิตใช้เป็นบิตตัวนับโปรแกรม ตัวนับโปรแกรมทำหน้าที่เป็นตัวชี้ไปยังคำสั่งที่เก็บไว้ในหน่วยความจำโปรแกรม

อีพีรอม: ประกอบด้วยพื้นที่หน่วยความจำ 256 ไบต์ เป็นหน่วยความจำถาวรเช่นเดียวกับรอม แต่สามารถลบและเปลี่ยนแปลงข้อมูลได้ระหว่างการทำงานของไมโครคอนโทรลเลอร์ เนื้อหาในอีพีรอมสามารถอ่านหรือเขียนได้โดยใช้รีจิสเตอร์ฟังก์ชันพิเศษ เช่น EECON1, EECON เป็นต้น

2. พอร์ต I/O

ซีรีส์ PIC16 ประกอบด้วยพอร์ต 5 พอร์ต ได้แก่ พอร์ต A, พอร์ต B, พอร์ต C, พอร์ต D และพอร์ต E

  • พอร์ต A: เป็นพอร์ต 16 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตหรือเอาต์พุตได้ตามสถานะของรีจิสเตอร์ TRISA
  • พอร์ต B: เป็นพอร์ต 8 บิต ซึ่งสามารถใช้เป็นพอร์ตอินพุตและเอาต์พุตได้ โดย 4 บิตเมื่อใช้เป็นอินพุตสามารถเปลี่ยนแปลงได้เมื่อมีสัญญาณขัดจังหวะ
  • พอร์ต C: เป็นพอร์ต 8 บิตซึ่งการทำงาน (อินพุตหรือเอาต์พุต) จะถูกกำหนดโดยสถานะของรีจิสเตอร์ TRISC
  • พอร์ต D: เป็นพอร์ต 8 บิต ซึ่งนอกจากจะเป็นพอร์ต I/O แล้ว ยังทำหน้าที่เป็นพอร์ตสเลฟสำหรับการเชื่อมต่อกับ  บัสไมโครโปรเซสเซอร์ อีกด้วย
  • พอร์ต E: เป็นพอร์ต 3 บิตที่ทำหน้าที่เพิ่มเติมของสัญญาณควบคุมไปยังตัวแปลง A/D

3. ตัวจับเวลา

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วย ตัวจับเวลา 3 ตัว โดยที่ Timer 0 และ Timer 2 เป็นตัวจับเวลา 8 บิต และ Time-1 เป็นตัวจับเวลา 16 บิต ซึ่งสามารถใช้เป็น ตัวนับได้ เช่นกัน

4. ตัวแปลง A/D

ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยตัวแปลงอนาล็อกเป็นดิจิทัล 8 ช่องสัญญาณ ขนาด 10 บิต การทำงานของ ตัวแปลง A/D ถูกควบคุมโดยรีจิสเตอร์ฟังก์ชันพิเศษเหล่านี้ ได้แก่ ADCON0 และ ADCON1 บิตล่างของตัวแปลงจะถูกเก็บไว้ใน ADRESL (8 บิต) และบิตบนจะถูกเก็บไว้ในรีจิสเตอร์ ADRESH ต้องใช้แรงดันอ้างอิงอนาล็อก 5V สำหรับการทำงาน

5. ออสซิลเลเตอร์

ออสซิลเลเตอร์ ใช้สำหรับกำหนดเวลา ไมโครคอนโทรลเลอร์ PIC ประกอบด้วยออสซิลเลเตอร์ภายนอก เช่น คริสตัล หรือ RC ออสซิลเลเตอร์ ในกรณีของคริสตัลออสซิลเลเตอร์ คริสตัลจะเชื่อมต่อระหว่างขาออสซิลเลเตอร์สองขา และค่าของตัวเก็บประจุที่เชื่อมต่อกับแต่ละขาจะเป็นตัวกำหนดโหมดการทำงานของออสซิลเลเตอร์ โหมดต่างๆ ได้แก่ โหมดพลังงานต่ำ โหมดคริสตัล และโหมดความเร็วสูง ในกรณีของ RC ออสซิลเลเตอร์ ค่าของตัวต้านทานและตัวเก็บประจุจะเป็นตัวกำหนดความถี่สัญญาณนาฬิกา ความถี่สัญญาณนาฬิกามีตั้งแต่ 30 kHz ถึง 4 MHz

6. โมดูล CCP:

โมดูล CCP ทำงานในสามโหมดต่อไปนี้: 

โหมดจับภาพ: โหมดนี้จะจับภาพเวลาที่สัญญาณมาถึง หรืออีกนัยหนึ่งคือ จับภาพค่าของ Timer1 เมื่อพิน CCP มีค่าสูง

โหมดเปรียบเทียบ: ทำหน้าที่เป็นตัวเปรียบเทียบแอนะล็อกที่สร้างเอาต์พุตเมื่อค่าตัวจับเวลา 1 ถึงค่าอ้างอิงที่กำหนด

โหมด PWM: ให้ เอาต์พุต แบบปรับความกว้างพัลส์ ด้วยความละเอียด 10 บิตและรอบการทำงานที่ตั้งโปรแกรมได้