Thiết kế kỹ thuật số không có nhiều điểm chung với phát triển phần mềm (có thể ngoại trừ cú pháp Verilog trông hơi giống ngôn ngữ C nhưng nó chỉ có vẻ). Vì vậy, rất khó để trả lời loại câu hỏi này đầy đủ. Nhưng với tư cách là một người đi theo con đường từ phát triển phần mềm đến thiết kế phần cứng, tôi sẽ thử. Nhìn lại bản thân mình, đây là cách tôi sẽ tự khuyên mình trở lại sau đó nếu tôi biết những gì tôi biết bây giờ:
Bắt đầu từ đầu
Quên mọi thứ về phát triển phần mềm. Đặc biệt là ngôn ngữ lập trình. Những nguyên tắc đó không áp dụng trong thiết kế kỹ thuật số. Có lẽ sẽ dễ dàng cho một anh chàng thiết kế CPU để lập trình nó trong trình biên dịch chương trình hoặc thậm chí là C, nhưng một lập trình viên trình biên dịch sẽ không thể thiết kế CPU.
Trên con đường học tập của bạn không có xu hướng giải quyết những gì dường như là một vấn đề dễ dàng với kiến thức hiện có của bạn từ phần mềm. Một trong những ví dụ kinh điển là "vòng lặp for". Mặc dù bạn có thể viết một vòng lặp for, giả sử, verilog - nó phục vụ một mục đích khác. Nó chủ yếu được sử dụng để tạo mã. Nó cũng có thể là một vòng lặp for vì các nhà phát triển phần mềm nhìn thấy nó, nhưng nó sẽ không tốt cho bất cứ thứ gì ngoại trừ mô phỏng (tức là bạn sẽ không thể lập trình được như thế).
Vì vậy, đối với mọi nhiệm vụ bạn muốn giải quyết, đừng nghĩ rằng bạn biết cách thực hiện, thay vào đó hãy nghiên cứu - kiểm tra sách, ví dụ, hỏi những người có kinh nghiệm hơn, v.v.
Tìm hiểu ngôn ngữ phần cứng và HDL
Các ngôn ngữ HDL phổ biến nhất là Verilog và VHDL. Ngoài ra còn có những nhà cung cấp dành riêng cho nhà cung cấp như AHDL (Altera HDL). Vì các ngôn ngữ đó được sử dụng để mô tả các thành phần phần cứng, chúng đều được sử dụng khá nhiều để diễn tả cùng một thứ trong một thời trang tương tự nhưng với một cú pháp khác nhau.
Một số người khuyên bạn nên học Verilog vì nó trông giống C. Có, cú pháp của nó là sự pha trộn giữa C và Ada nhưng nó không giúp nhà phát triển phần mềm dễ dàng dựa vào. Trên thực tế, tôi nghĩ nó thậm chí có thể làm cho nó tồi tệ hơn bởi vì sẽ có một sự cám dỗ để viết C trong Verilog. Đó là một công thức tốt để có một thời gian rất xấu.
Có ý nghĩ đó, tôi khuyên bạn nên nhìn chằm chằm từ VHDL. Mặc dù Verilog cũng ổn miễn là những điều trên được tính đến.
Một điều quan trọng cần ghi nhớ là bạn phải hiểu những gì bạn đang thể hiện với ngôn ngữ đó. Loại phần cứng nào đang được "mô tả" và cách thức hoạt động.
Vì lý do đó, tôi khuyên bạn nên mua cho mình một số cuốn sách về điện tử nói chung và một cuốn sách hay như cuốn này - HDL Chip Design (hay còn gọi là một cuốn sách màu xanh).
Nhận một giả lập
Trước khi bạn bắt đầu làm bất cứ điều gì trong phần cứng và sử dụng bất kỳ tính năng cụ thể nào của Nhà cung cấp, v.v., hãy tạo cho mình một trình giả lập. Tôi đã bắt đầu với một Verilog và đã sử dụng Icarus Verilog cùng với GTK Wave. Đó là những dự án nguồn mở miễn phí. Chạy các ví dụ bạn thấy trong sách, thực hành bằng cách thiết kế các mạch của riêng bạn để có được một số hương vị của nó.
Nhận một ban phát triển
Khi bạn cảm thấy muốn đi tiếp, hãy lấy một bảng phát triển. Nếu bạn biết rằng chủ nhân của bạn muốn đi với Lattice, thì hãy lấy bảng Lattice.
Các phương pháp lập trình rất giống nhau, nhưng có những chi tiết khác nhau. Chẳng hạn, các công cụ khác nhau, các tùy chọn khác nhau, các giao diện khác nhau. Thông thường, nếu bạn có kinh nghiệm với một nhà cung cấp, không khó để chuyển đổi. Nhưng bạn có thể muốn tránh đường cong học tập thêm này.
Tôi cũng đảm bảo rằng bảng đi kèm với các thành phần mà bạn dự định sử dụng hoặc có thể mở rộng. Ví dụ: nếu bạn muốn thiết kế một thiết bị mạng như bộ định tuyến, hãy đảm bảo bo mạch có Ethernet PHY hoặc nó có thể được mở rộng thông qua, giả sử, đầu nối HSMC, v.v.
Bảng thường đi kèm với một tài liệu tham khảo tốt, hướng dẫn sử dụng và thiết kế. Nghiên cứu chúng.
Đọc sách
Bạn sẽ cần phải đọc sách. Trong trường hợp của tôi, tôi không có bạn bè nào biết thiết kế kỹ thuật số và trang web này cũng không hữu ích lắm vì một điều đơn giản - tôi thậm chí còn không biết cách diễn đạt câu hỏi của mình. Tất cả những gì tôi có thể nghĩ ra giống như "Uhm, các bạn, có một điều dcfifo và tôi đã nghe một vài điều về những thách thức vượt qua miền đồng hồ, đó là gì và tại sao thiết kế của tôi không hoạt động?".
Cá nhân tôi bắt đầu với những điều này:
Các nhà cung cấp đồ họa có rất nhiều sách dạy nấu ăn với các thực hành tốt nhất. Nghiên cứu chúng cùng với các thiết kế tham khảo. Đây là một từ Altera, ví dụ.
Trở lại với những câu hỏi cụ thể hơn
Trong khi bạn xem qua các cuốn sách của mình, mô phỏng một thiết kế, nháy một số đèn LED trên bảng phát triển của bạn, rất có thể, bạn sẽ có rất nhiều câu hỏi. Hãy chắc chắn rằng bạn không thấy câu trả lời cho những người ở trang tiếp theo của cuốn sách hoặc trực tuyến (tức là trong diễn đàn dành riêng cho Lattice) trước khi hỏi họ ở đây.