MỤC LỤC
Để sử dụng PACKAGE, bạn chỉ đơn giản dùng một LIBRARY và câu lệnh USE cho Package đó.Trước khi kết hợp Mođun dùng Package, trước tiên bạn cần kết hợp chính Package như một ENTITY cấp cao. Sau khi phát biểu cuối cùng được thực thi , việc xử lý sẽ hoãn lại cho đến thời gian tiếp theo khi một tín hiệu trong danh sách thay đổi giá trị trước khi thực thi lần nữa.
Theo ý tưởng này, chúng ta phải có: một công tắc điều khiển đóng ngắt chính cho hệ thống được đặt tên là M; một công tắc đại diện cho việc đóng mở cửa xe được đặt tên là D; một bộ phát hiện dao động được đặt tên là V. Như vậy có ba trường hợp làm cho chuông báo hiệu reo lên là D=1 hoặc V=1 hoặc cả hai D=V=1, trong ba trường hợp trên công tắc điều khiển chính của hệ thống sẽ đóng lại làm chuông báo động vang lên tức là M=1.
Trong bảng dưới đõy ta chỳ ý rằng cỏc giỏ trị ngừ vào từ 1010 đến 1111 thỡ khụng được biểu thị, và ta cũng không cần quan tâm đến những giá trị của các đoạn LED hiển thị cho các giá trị đó. Các từ trong dấu “( )” của khối Process để chỉ các biến đang xét trong khối process, nếu một trong các biến này thay đổi giá trị thì các dòng lệnh trong khối Process mới được thực thi từ đầu cho đến cuối khối Process đó.
Khi chúng ta cần lặp lại 4 lần bộ cộng toàn phần, chúng ta có thể dùng 4 lần câu lệnh PORT MAP hoặc là có thể sử dụng câu lệnh FOR-GENERATE để vận hành 4 thành phần này một cách tự động như trong đoạn mã biểu diễn dưới đây. Bộ cộng Ripple Carry Adder thỡ thực hiện việc cộng chậm bởi vỡ trạng thỏi nhớ ngừ vào của một cặp bit thỡ phụ thuộc vào trạng thỏi nhớ ngừ ra của cặp bit liền trước nú. Trong bộ cộng hai số nhị phân nhiều bit cho kết quả hiển thị nhanh (Carry-Lookahead Adder) thì mỗi một mẫu bit loại trừ sự phụ thuộc vào trạng thái nhớ ngừ ra của tớn hiệu trước đú, nú sử dụng giỏ trị của hai bit X và Y một cỏch trực tiếp để suy ra cỏc tớn hiệu cần thiết.
Chúng ta có thể xây dựng một thành phần trong đó chứa đựng hai thành phần tách biệt là bộ cộng và bộ trừ bằng cách sửa đổi lại sơ đồ của mạch cộng Ripple Carry (hay có thể là mạch Carry-Lookahead Adder). Để phủ định một giá trị nhị phân như trong phần trước đã giới thiệu, chúng ta sẽ chuyển đổi tất cả các bit trong chuỗi bit từ 0 thành 1 và ngược lại một cách dễ dàng. Một mạch thực hiện cả hai việc cộng và trừ được biểu diễn trong hình 2.12(b) và ký hiệu logic của nó được thể hiện trong hình 2.12(c).
Chúng ta thấy từ sơ đồ mạch phối hợp bộ cộng và bộ trừ cho đến việc cộng và trừ, chúng ta chỉ cần sửa lại ngừ vào thứ hai của bộ FA yi mà thụi, vỡ thế tất cả cỏc hoạt động cú thể được thực hiện với phộp cộng. Do đó, nếu chúng ta muốn thực hiện phép toán A OR B, thì bộ LE sẽ lấy từng cặp bit thứ ai và bi (của A và B) thực hiện phép Or chúng lại với nhau. Khi giỏ trị chuẩn bị hiển thị kết quả của cỏc hoạt động logic, chỳng ta khụng muốn bộ FA sửa đổi nú, mà đưa giỏ trị này hiển thị ra ngừ ra sơ cấp fi.
Nếu ngừ vào địa chỉ là 101 thỡ thỡ ngừ ra Y5 được lựa chọn để đưa dữ liệu ra (Y5 lờn mức cao), trong khi đú tất cả cỏc ngừ ra cũn lại đều khụng được lựa chọn (tớch cực mức thấp). Một bộ giải mã thường dùng rất nhiều thành phần và chúng ta muốn tại mỗi thời điểm chỉ có một thành phần được cho phép hoạt động mà thôi. Ví dụ trong một hệ thống nhớ lớn sử dụng nhiều con chip nhớ, tại mỗi thời điểm chỉ có một con chip nhớ được tích cực cho phép hoạt động mà thụi.
Trong trương hợp khụng cú ngừ vào nào được chọn thỡ ta cần thờm một ngừ ra Z để phõn biệt sự khỏc nhau giữa trường hợp khụng cú ngừ vào nào được chọn và trường hợp cú một hay nhiều ngừ vào được chọn.
Từ việc giới thiệu cách xây dựng bộ ghép kênh 2 sang 1 ta có thể xây dựng các bộ ghép kênh có kích thước lớn hơn như bộ ghép kênh 8 sang 1 tương tự như cách đã làm ở trên. Chỳng ta cũng cú thể sử dụng cổng AND 2 ngừ vào như trong hỡnh 2.24(a), một ngừ vào dữ liệu và một ngừ vào lựa chọn được điều khiển từ ngừ ra của bộ giải mó 3 sang 8. Biểu thức cú n biến thỡ ta sử dụng bộ ghộp kờnh cú 2 ngừ vào và n đường tớn hiệu điều n khiển lựa chọn, n biến ngừ vào sẽ được kết nối với n ngừ vào lựa chọn của bộ ghộp kờnh.
Ngừ ra của cỏc cổng XOR được nối đến cổng OR cú 4 ngừ vào, vỡ thế nếu một trong cỏc cặp bit tương ứng của hai số nhị phõn mà khỏc nhau, thỡ kết quả ngừ ra F sẽ bằng 1. Để xây dựng một bộ so sánh hai số có nhiều bit, ta thường sử dụng cấu trúc của một mạch lặp, tức là sẽ xây dựng một mạch so sánh từng cặp bit tương ứng của hai số sau đó ta kết nối các mạch so sánh từng cặp bit này lại với nhau để tạo thành mạch so sánh nhiều bit. Kết quả cuối cùng, nếu p4 p3 p2 p1 p0 1 thì hai số được so sánh là bằng nhau, các trường hợp còn lại hai số đem so sánh là không bằng nhau.
Ban đầu bit p0 được bật lên 1, việc so sánh cứ thực hiện từ bộ so sánh từng cặp đầu tiên đến bộ so sánh từng cặp bit cuối cùng. Những ngừ vào của cỏc bộ ghộp kờnh được kết nối như thế nào sẽ tùy thuộc vào 4 trạng thái hoạt động trong bảng 2.30(a). Ngôn ngữ VHDL cho bộ dịch / bộ xoay 8 bit được viết theo cấu trúc Behavioral có chức năng được giới thiệu ở trong hình 2.30(a).
Trong hình 2.31(c) biểu diễn sự kết nối của các bộ cộng toàn phần để cộng các kết quả trung gian và cộng kết quả cuối cùng. Bốn bộ cộng trong mỗi hàng được kết nối theo kiểu bộ cộng có nhớ trạng thái dư của bit trước (Ripple Carry Adder). Bit nhớ cuối cùng của bộ cộng được kết nối thẳng ra bit có trọng số lớn nhất của kết quả tích.
Một điểm khác nhau trong hai hình là đối với Moore FSM, ngừ ra lụgic chỉ cú trạng thỏi hiện thời như ngừ vào của nú, trong khi đú đối với Mealy FSM, ngừ ra lụgic cú cả trạng thỏi hiện thời và cỏc tớn hiệu vào như cỏc ngừ vào của nó. Phân tích mạch tuần tự là quá trình trong đó ta đưa ra cho một mạch tuần tự và ta muốn mô tả chính xác sự hoạt động của mạch đang có.Việc mô tả của một mạch tuần tự có thể là trong bảng trạng thái tiếp theo / bảng đầu ra, hay một sơ đồ trạng thái. Cỏc giỏ trị ngừ ra này cú được bằng việc thế trạng thỏi hiện tại và cỏc giỏ trị ngừ vào vào trong những phương trỡnh ngừ ra thớch hợp hỡnh 2.35a và 2.35b cho thấy rằng bảng ngừ ra mẫu cho Moore và Mealy được bắt nguồn từ phương trỡnh ngừ ra (5) và (6) tương ứng ở mục 2.13.2.4 ở trờn.
Hai D flip-flop được dùng trong mạch để kích cạnh dương flip-flop vì thế chúng thay đổi trạng thái của chúng tại mỗi cạnh lên xung clock. Bình thường, flip-flop sẽ thay đổi trạng thái vào thời gian này, tuy nhiên, một khi C=0 giá trị các flip-flop vẫn không đổi. Vào thời gian t6, C thay đổi thành 1 và vì thế tại cạnh lên xung clock tiếp theo vào thời gian t7, Q1Q0 tăng dần lần nữa tới 00 và chu trình lặp lại.
Ngoại trừ sự khỏc nhau trong mạch này là tạo tớn hiệu ngừ ra Y như thế nào, Mealy FSM chạy giống như FSM Moore từ ví dụ 2.1 theo cách nó thay đổi từ một trạng thái tới trạng thái tiếp theo. Mục đớch của việc dựng 1 bộ đệm ngừ vào cho mỗi đường dữ liệu là chỉ cần để tớn hiệu bờn ngoài vào để điều khiển đúng 1 linh kiện (bộ đệm) hơn là vài linh kiện (Ví dụ tất cả các ô nhớ trong cùng cột). Để bắt đầu với 1 giá trị được lưu trữ trong thanh ghi, tiếp tục đếm lên, đơn giản ta phải thêm 1 bit vào nú.Ta cú thể dựng bộ cộng toàn phần được núi ở mục 2.3.1 như ngừ vào cho thanh ghi, nhưng chúng ta có thể làm tốt hơn.
Nếu chúng ta muốn chuỗi đếm quay trở lại chu kỳ với giá trị được gán ban đầu sau mỗi lần như vậy, ta cần tích cực chân Load, tại bắt đầu của mỗi chu kỳ đếm và giỏ trị nạp ban đầu sẽ vẫn cũn tồn tại trờn cỏc chõn ngừ vào dữ liệu. Để chuyển dữ liệu nối tiếp ra song song, các bit được chuyển vào trong thanh ghi tại mỗi chu kỳ xung clock và khi tất cả các bit (thường 8 bits) được chuyển vào trong thanh ghi, thanh ghi 8-bit cú thể được đọc để xuất 8 bit ở ngừ ra song song. Chúng ta có thể thực hiện cả hai chức năng vào trong mạch nối tiếp ra song song từ phần trước 1 cách đơn giản bằng việc thêm một chức năng Load song song vào mạch như trong hình 2.64a.
Mã VHDL mô tả cho thanh ghi dịch nối tiếp ra song song và song song ra nối tiếp.
LED DONE kết nối đến chân DONE của FPGA và sáng lên khi cấu hình FPGA thành công hay nói cách khác chương trình đã được nạp thành công vào kit Spartan 3. Nếu chân JP1 được tháo ra thì Platform Flash không được cho phép ; điều này cho phép cấu hình mở rộng qua 1 board mở rộng kết nối đến 1 trong các connector mở rộng của Kit. Một vài chân được chia sẻ để sử dụng một số các chức năng khác trên board, những chân mà có thể được dùng cho việc giảm bớt hiệu quả của việc đếm xuất nhập cho những ứng dụng đặc biệt.
Như vậy mỗi chân chức năng đều có ảnh hoặc chiều trả lời theo hướng ngược lại để cho phép hoạt động song công. Tuy nhiên không phải chân nào cũng có chức năng ví dụ chân số 9 và 10 còn dùng để dự phòng và chân số 11 chưa được gán chức năng. DB9: nhiều chân của DB25 không cần thiết cho kết nối đơn bất đồng bộ cho nên có thể giảm xuống còn 9 chân.