2009-03-10 29 views
42

Tôi làm cách nào để tạo bộ vi điều khiển của riêng mình? Tôi đã thực hiện một số công việc bằng cách sử dụng chip GAL và lập trình một chip để làm các lệnh đơn giản như thêm, tải, di chuyển, xor, và đầu ra, nhưng tôi muốn làm một cái gì đó giống như một vi điều khiển thực sự.Tôi làm cách nào để tạo bộ vi điều khiển của riêng mình?

Tôi làm cách nào để thực hiện việc này? Tôi đã đọc một chút về FPGA và CPLD, nhưng không phải là rất nhiều, và do đó đã được tìm kiếm một số lời khuyên về những gì để có được và làm thế nào để bắt đầu phát triển trên nó.

+3

+1 cho sở thích. Bạn đã xem ở đây chưa? http://www.fpga4fun.com/ – epatel

Trả lời

25

Look here cho một cuốn sách wiki tốt. Tôi đã có một số môn học mà tôi đã viết khi tôi dạy Electronic Eng, nhưng tôi không thể tìm thấy nó xung quanh. Khi tôi đang giảng dạy, hầu hết các sinh viên rất vui khi sử dụng các công cụ chụp sơ đồ trong gói Xilinx Foundation. Họ đã chuyển sang ISE và WebPACK ngay bây giờ. Bạn có thể tải xuống WebPack miễn phí, điều này rất hữu ích và nó có sơ đồ chụp và mô phỏng trong đó.

Nếu bạn thực sự muốn tỏa sáng, hãy học VHDL hoặc Verilog (VHDL có vẻ phổ biến hơn ở nơi tôi đã làm việc, nhưng đó chỉ là một số địa điểm nhỏ) và mã hóa thiết kế thay vì nhập nó qua GUI.

Nếu bạn biết bất cứ điều gì về thiết kế logic kỹ thuật số (và một số HDL) tôi rekon bạn có thể có một bộ vi xử lý 8-bit hơi chức năng mô phỏng trong VHDL trong khoảng 2 ngày. Bạn sẽ không xây dựng bất cứ thứ gì cực nhanh hoặc cực kỳ mạnh mẽ trong thời gian đó nhưng đó là một điểm khởi đầu tốt để phát triển. Nếu bạn phải tìm hiểu về thiết kế kỹ thuật số, nhân tố trong một vài ngày để tìm hiểu cách các công cụ hoạt động và mô phỏng một số mạch logic cơ bản trước khi chuyển sang thiết kế uP.

Bắt đầu tìm hiểu kiến ​​thức cơ bản về hệ thống kỹ thuật số và cách tạo trình bổ sung nhị phân. Chuyển sang xây dựng một ALU để xử lý phép cộng, trừ, và, hoặc, xor, vv và sau đó là một trình tự sắp xếp để đọc các mã opcodes từ RAM và cung cấp chúng cho đơn vị thực hiện.

Bạn có thể bắt đầu với thiết kế hướng dẫn, nhưng tôi khuyên bạn nên bắt đầu thực sự đơn giản cho đến khi bạn có đầu xung quanh những gì đang diễn ra, sau đó vứt nó ra và bắt đầu lại với một cái gì đó phức tạp hơn.

Một khi bạn có thiết kế mô phỏng độc đáo, bạn có thể đánh giá mức độ phức tạp của nó và mua thiết bị cho phù hợp. Bạn nên xem xét một hệ thống phát triển cho gia đình thiết bị mà bạn đã chọn. Chọn một thiết bị lớn hơn những gì bạn cần để phát triển bởi vì thật tuyệt khi có thể thêm công cụ bổ sung để gỡ lỗi khi nó đang chạy và bạn gần như chắc chắn sẽ không tối ưu hóa thiết kế của mình trong giai đoạn đầu của việc thiết kế trên thiết bị.

EDIT: Colin Mackenzie có hướng dẫn tốt về thiết kế UC và một số bo mạch FPGA cũng như một số nội dung khác.

13

Bạn có thể muốn xem xung quanh OpenCores.org, trang web "giả mạo" để phát triển lõi IP nguồn mở. Ngoài ra, hãy xem xét việc tạo cho mình một hội đồng phát triển như one of these để chơi cùng.

Phần lớn các công cụ hệ sinh thái xoay quanh VHDL, mặc dù Avalda đang làm việc trên các công cụ để biên dịch F # cho FPGA.

1

Một vi điều khiển có thể đơn giản như một ROM (lệnh * 2^x + (pha đồng hồ) là địa chỉ, đầu ra là tín hiệu điều khiển và bạn tốt để đi). Hoặc nó có thể là một con thú harry phức tạp với ba phần cứng hỗ trợ vũ khí và nhánh.

Bạn có thể cung cấp thêm chi tiết về nguyện vọng của mình không?

+0

Tôi muốn thực hiện một cái gì đó tương tự như một AVR có thể, mặc dù tôi biết nó sẽ đơn giản hơn nhiều. Khi tôi đang sử dụng chip GAL, lớp tôi đã nhanh chóng đạt đến giới hạn vật lý của GAL, và tôi muốn biết bước tiếp theo mà tôi có thể thực hiện để làm cho thứ gì đó mạnh hơn một chút. – samoz

0

Bạn cần một fpga lớn cho một MCU nhỏ.

Bạn cần một fpga với các khối phần cứng chính xác nếu bạn cần những thứ như AD.

Bạn cần một lõi mềm để đưa vào fpga.

Nhưng làm thế nào để chỉ chơi xung quanh với MCU bình thường trước dự án này, để bạn biết bạn đang đi đâu? Làm thế nào về một số AVR: s từ Atmel.

+0

Tôi thực sự có một số chip AVR đã có;) – samoz

+0

Nhưng sau đó bạn không phải là màu xanh lá cây như bạn câu hỏi ngụ ý ... Có lẽ một bản cập nhật cho câu hỏi của bạn. – Johan

1

Sau khi tìm kiếm một số liên kết rất hữu ích của tất cả các bạn, tôi đã xem qua this khóa học Wikiversity.

Một trong những câu đầu tiên là, "Bạn đã bao giờ nghĩ để xây dựng bộ vi xử lý của riêng mình chưa?"

7

Tôi thấy một cuốn sách giáo khoa một khi bước qua xây dựng một máy từ chip TTL. Điều này có cùng một lệnh được đặt làm PDP-8, nghĩa là rất - và tôi có nghĩa là rất - đơn giản, vì vậy kiến ​​trúc máy thực sự dễ thực hiện theo cách này.

Các PDP-8 FAQ đề cập đến một cuốn sách: "The Art of Digital Design," phiên bản thứ hai, bởi Franklin Prosser và David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4). Nó cũng đề cập đến những người thực hiện nó trong FPGA.

Do sự đơn giản cực kỳ của kiến ​​trúc CPU này và tính sẵn có của mã PDP-8 hoặc triển khai tham chiếu, đây có thể là điểm khởi đầu tốt để khởi động.

Ngoài ra, một người quen của tôi đã thực hiện một ngón tay cái (cắt giảm ARM) trên một FPGA như một dự án đại học được điều hành bởi một Steve Furber (một cựu sinh viên Acorn nổi bật). Cho rằng điều này có thể được nén thành một định dạng đủ nhỏ cho một dự án đại học nó cũng có thể là một khởi đầu tốt.

+2

+1 chỉ để đề cập đến PDP-8 ;-) – RBerteig

3

Để phát với bộ vi xử lý lõi mềm, tôi thích Spartan 3 Starter Board từ Digilent chỉ vì nó có RAM 1M. SDRAM và DDR RAM khó thực hiện hơn, bạn biết đấy.

Các đèn LED, công tắc và giao diện nối tiếp đơn giản là một điểm cộng để gỡ lỗi và giao tiếp.

Như ai đó đã chỉ ra, OpenCores.org là một nơi tốt để tìm ví dụ hoạt động. Tôi đã sử dụng Plasma uC để viết một số giấy tờ trong khi đang học đại học.

1

XilinxMicroBlaze và bộ điều khiển mềm PicoBlaze cho FPGA của nó. Sau này là miễn phí, trong khi, IIRC, Microblaze là để được trả tiền cho.
Như tên gọi của nó cho thấy PicoBlaze là một bộ xử lý nhỏ, trong đó có những hạn chế của nó, nhưng OTOH là đủ nhỏ gọn để run on a CPLD. Dù sao một bộ xử lý tốt đẹp để giúp bạn bắt đầu.
Pablo Bleyer có tương thích với PicoBlaze PacoBlaze. PacoBlaze được viết bằng Verilog (giống như Adam nói, ít phổ biến hơn VHDL).

Các vấn đề liên quan