MÀN HÌNH KHI MÔ PHỎNG

Một phần của tài liệu Thiết kế CPU dùng ngôn ngữ VHDL (Trang 65 - 71)

Hình 39.

Hỡnh 39 mụ phỏng cỏc tớnh hiệu ngừ vào và ngừ ra của khối ALU.

Trong khối alu thực hiện các lệnh cộng, trừ, and, not, nạp tín hiệu side_a, nạp tín hiệu side_b.

Cỏc tớn hiệu ngừ vào là alu_add, alu_sub, alu_and, alu_not, alu_a, alu_b, in_flags2, in_flags3, side_a, side_b, các tín hiệu ra là z_out, out_flags.

Khi tín hiệu alu_add được kích lên thì nó thực hiện phép cộng hai giá trị side_a side_b kết quả xuất ra ở z_out và các cờ xuất ra ở out_flags trong lệnh cộng nếu tín hiệu in_flags2 không kích nghĩa là không có giá trị thì phép cộng chỉ cộng giá trị trong side_a với side_b còn nếu có in_flags2 thì nó cộng thêm giá trị của in_flags2.

Trong phộp cộng ngừ ra out_flags cú thứ tự cỏc cờ như sau v, c, n, z cờ v được bật lên khi dấu của side_a, side_b cùng dấu và dấu của kết quả z_out khác với dấu của side_a (các bit dấu chính là bit thứ 7), cờ c bật lên khi kết quả z_out lớn 255, cờ n bằng với bit 7 của z_out, cờ z bật lên khi kết quả bằng 0.

Trong phép trừ cũng tương tự như phép cộng, chỉ khác cách kiểm tra cờ, cờ v bật lên khi dấu của side khác với dấu side_b và dấu kết quả cùng với dấu của side_a, cờ c bật lên khi kết quả âm còn cờ n và z thì giống như phép cộng.

Phép alu_and thì thực hiện phép and giữa side_a với side_b, cờ v bằng với tín hiệu vào in_flags3, cờ c bằng tín hiệu vào in_flags2 cờ n và cờ z thì tuỳ vào kết quả ra z_out.

Phép alu_not thì thực hiện phép phủ định của tín hiệu vào side_a các cờ thì giống như phép alu_and.

Phép alu_a thì thực hiện nạp giá trị của side_a vào các cờ cũng giống nhử pheựp alu_and.

Phép alu_a thì thực hiện nạp giá trị của side_b vào các cờ cũng giống nhử pheựp alu_and.

2. Khoỏi dũch chuyeồn SHU

Hình 41.

Màn hình mô phỏng phép dịch trái và dịch phải của khối SHU trong phần này có tính hiệu vào là arith_shift_left, arith_shift_left, in_flags, alu_side, tín hiệu ra là obus_side, out_flags

Nếu khụng cú phộp dịch thỡ ngừ ra obus_side cú giỏ trị bằng với ngừ vào alu_side và các cờ ra out_flags giống như cờ vào in_flags, nếu dịch trái thì cờ v bật lên khi bit 6 và bit 7 của tín hiệu vào alu_side khác nhau, cờ c bật lờn khi bit 7 của tớn hiệu vào alu_side là 1, cờ n bật lờn khi bit 7 của ngừ ra obus_side là 1, cũn cờ z bật lờn khi ngừ ra obus_side là 0, nếu dịch phải thỡ cờ v và c ở ngừ ra out_flags giống như cờ v và c ở ngừ vào in_flags, cũn cờ n và z thì giống như dịch trái.

3. Khoỏi ủieàu khieồn

Hình 43.

Hình 43 mô phỏng khối CONTROL của CPU trong khối này có 9 trạng thái từ s1 đến s9

Khi trạng thái s1 tích cực thì thực hiện những chức năng như:

pc_on_mar_page_bus, pc_on_mar_offset_bus, load_page_mar, load_offset_mar và kiểm tra interrupt nếu interrupt =1 thì nó quay lại trạng thái s1 ngược lại thì sang trạng thái s2.

Khi trạng thái s2 được tích cực thực hiện những chức năng mar_on_adbus, read_mem, databus_on_dbus, alu_a, load_ir, increment_pc, rồi chuyển sang trạng thái s3.

Khi trạng thái s3 tích cực thì thực hiện pc_on_mar_page_bus, pc_on_mar_offset_bus, load_page_mar, load_offset_mar nếu bit 7 đến 4 của ir_lines không bằng “1110” thì chuyển sang trạng thái s4. Nếu bit 7 đến 4 của ir_lines bằng “1110” thì kiểm tra bit 1 của ir_lines nếu = 1 thì thực hiện alu_not nếu = 0 thì thực hiện alu_b, nếu bit 3 đến 0 của ir_lines =

“1000” thì thực hiện arith_shift_left, nếu bit 3 đến bit 0 bằng “1001” thì thực hiện arith_shift_right, nếu bit 3 bằng 1 hoặc bit 1 bằng 1 thì thực hiện load_sr, load_ac, nếu bit 2 bằng 1 thì thực hiện cm_carry_sr, nếu bit 3 của ir_lines bằng 0 và bit 0 của ir_lines bằng 1 thì thực hiện zero_ac rồi quay về trạng thái s2.

Khi s4 được kích hoạt thì thực hiện mar_on_adbus, read_mem, databus_on_dbus, dbus_on_mar_offset_bus, load_offset_mar, kieồm tra bit 7 đến bit 6 của của ir_lines nếu không bằng “11” thì thực hiện ir_on_mar_page_bus, load_page_mar và kiểm tra tiếp bit 4 của ir_lines nếu bằng 1 thì thì chuyển sang trạng thái s5 ngược lại thì chuyển sang trạng thái s6, nếu bit 7 đến bit 6 của ir_lines bằng “11” thì kiểm tra tiếp bit 5 của ir_lines nếu bằng 0 thì chuyển sang trạng thái s7 nếu bằng 1 thì chuyển sang trạng thái s9, rồi thực hiện increment_pc.

Trong trạng thái s5 thực hiện mar_on_adbus, read_mem, databus_on_dbus, dbus_on_mar_offset_bus, load_offset_mar roài chuyeồn sang trạng thái s6.

Ở trạng thái s6 kiểm tra bit 7 đến bit 5 của ir_lines nếu bằng “100

thì thực hiện load_page_pc, load_offset_pc rồi quay về trạng thái s2, nếu bằng “101” thì thực hiện mar_on_adbus, alu_b, obus_on_dbus, dbus_on_databus, write_mem rồi quay về trạng thái s1, nếu bit 7 của ir_lines bằng 0 thì thực hiện read_mem, mar_on_adbus, databus_on_dbus và kiểm tra bit 6 đến bit 5 của ir_lines nếu bằng “00” thì thực hiện alu_a, nếu bằng “01” thì thực hiện alu_and, nếu bằng “10” thì thực hiện alu_add, nếu bằng “11” thì thực hiện alu_sub, thực hiện tiếp load_sr, load_ac rồi quay về trạng thái s1.

Trạng thái s7 thực hiện mar_on_adbus, pc_offset_on_dbus, dbus_on_databus, write_mem, load_offset_pc rồi chuyển sang trạng thái s8.

Trạng thái s8 thực hiện increment_pc rồi quay lại trạng thái s1.

Ở trạng thái s9 nếu bit 3 đến bit 0 của status và của ir_lines khác

0000” thì thực hiện load_offset_pc rồi quay về trạng thái s1.

4. Sơ đồ chân CPU

Sơ đồ chân của CPU sử dụng chíp EPF10K10LC84-3 của họ FLEX10K nhử hỡnh 44.

Hình 44.

Trong sơ đồ chõn (hỡnh 44) của CPU ngừ vào nối cỏc chõn 1, 2, 5, 6, 7, 8, 19, 21, 25, 38, 39, 42, 43, 44, 58, 59, 60, 62, 64, 65, 66, 67, 69, 72, 73, 84.

Ngừ ra nối cỏc chõn 10, 22, 23, 24, 28, 29, 30, 36.

Các chân 4, 12, 13, 14, 15, 20, 26, 31, 32, 33, 34, 40, 41, 45, 46, 55, 56, 57, 63, 68, 74, 75, 76, 77, 82 là những chân dành riêng không được sử dụng.

Những chân còn lại là những chân rỗng không có tín hiệu.

5. Màn hình mô phỏng lệnh

Hình 45 màn hình mô phỏng lệnh cộng của CPU.

Một phần của tài liệu Thiết kế CPU dùng ngôn ngữ VHDL (Trang 65 - 71)

Tải bản đầy đủ (DOC)

(73 trang)
w