Đồ án vi xử lý

24 675 0
Đồ án vi xử lý

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đồ án vi xử Đề bài : Thiết kế hệ vi xử trên CPU 80x86 Intel cho nhiệm vụ sau: Một hệ thống đặt ngầm ở dưới biển có chức năng phát hiện các mục tiêu theo 16 hướng. Tín hiệu mục tiêu được coi là các chấn động thuỷ âm lan truyền tới hệ. Các chấn động này sẽ do các sensor cực nhạy phát hiện và tạo ở đầu ra là dạng xung điện áp (mức chuẩn TTL). Các xung này được dẫn vào các kênh tương ứng cho các hướng. Nhiệm vụ của hệ là bám sát và dếm tích luỹ số xung bắt được. Nếu số lượng đó đạt giá trị 1 triệu xung thì khẳng định là mục tiêu đã xuất hiện ở hướng tương ứng đó. Bản thân các tín hiệu này là các tín hiệu ngẫu nhiên cả về thời điểm xuất hiện cả về thời gian tồn tại của chúng. Yêu cầu: 1) Hệ hiển thị dùng thiết bị LCD (Liquid Crystal Display) HD44780 2) Chương trình phải viết bằng ngôn ngữ Assembly. 3) Chạy mô phỏng trên môi trường EMU8086. Bước 1. Phân tích chức năng, nhiệm vụ hệ vi xử cần thiết kế Nhiệm vụ của hệ vi xử cần thiết kế ở đây là hệ tự động phát hiện 16 kênh. Mỗi kênh hoạt động độc lập với nhau. Tín hiệu trên mỗi kênh là dạng xung điện áp, có các tham số là các đại lượng ngẫu nhiên. Căn cứ vào yêu cầu của nhiệm vụ như vậy, phần cứng phải được tổ chức trên hệ vi xử mới đủ khả năng thu thập và xử linh hoạt và mềm dẻo được. Đặc biệt là khối thu tin đa kênh phải được tổ chức sao cho có thể thu với xác suất mất tin là thấp nhất và phải phản ứng kịp thời với tín hiệu ngẫu nhiên đi tới đầu thu. Phần mềm sẽ đảm nhiệm thuật toán điều khiển hoạt động của hệ theo chức năng như phương thức thu tin, phương án xử tin, Bước 2. Tổ chức phần cứng cho hệ thu tín hiệu ngẫu nhiên 16 kênh. Trên cơ sở của các phân tích của bước 1, phần cứng của Hệ thu tín hiệu ngẫu nhiên 16 kênh được tổ chức theo sơ đồ khối trong hình sau : Mỗi thành phần của hệ được mô tả bằng một hộp chức năng. Các thành phần này liên hệ với nhau thông qua kênh hệ thống của hệ bao gồm : kênh địa chỉ, kênh dữ liệu và kênh điều khiển. Bộ vi xử (CPU) được chọn là bộ vi xử 80286 nó có tốc độ đáp ứng yêu cầu cho hệ, có kênh dữ liệu 16 bit nên có đủ khả năng xử thu tín hiệu cho cả 16 kênh. Khả năng quản không gian nhớ và quản các thiết bị ngoại vi của bộ vi xử 80286 hoàn toàn đáp ứng được yêu cầu của hệ thống. Các thành phần bên trong bao gồm : bộ nhớ trung tâm, bộ giải mã địa chỉ chọn chip và kênh dữ liệu. Bộ nhớ trung tâm gồm bộ nhớ ROM để chứa chương trình MONITOR và các tham số cố định như bảng địa chỉ cổng vào/ra, RAM để tạo bộ đệm dữ liệu cho các kênh và là nơi để chứa các kết quả trung gian trong quá trình thu thập, xử lý, gia công tín hiệu. RAM còn chứa các biến bộ nhớ của chương trình. Bộ giải mã địa chỉ chọn chip có nhiệm vụ kích hoạt các thành phần có trong hệ mỗi khi CPU quy chiếu tới. Mỗi thành phần ít nhất phải có một tín hiệu chip select lấy từ bộ giải mã địa chỉ chọn chip. Các ngoại vi được tổ chức bao gồm ngoại vi thu tin 16 kênh để thu thập thông tin, ngoại vi hiển thị để hiển thị thông tin thu được của các kênh sử dụng LCD HD44780. Do khả năng của bộ vi xử nên chỉ cần dùng 1 LCD hiển thị chung cho cả 16 kênh. Việc ra lệnh cho kênh nào được hiển thị sẽ do ngoại vi bàn phím đảm nhiệm. Kênh hệ thống gồm các kênh nội bộ và các kênh bên ngoài. Các bộ đệm được tổ chức nhằm ngăn chặn các ảnh hưởng có thể có của ngoại vi tới kênh nội tại. Để tổ chức kênh hệ thống nội tại cho hệ chúng ta sử dụng các IC bổ trợ là bộ tạo dao động 82284, bộ điều khiển kênh, mạch đệm địa chỉ 74AS533 và mạch đệm dữ liệu 74AS640. Như vậy kênh hệ thống gồm kênh địa chỉ 24 bit, kênh dữ liệu 16 bit và kênh điều khiển với mọi tín hiệu giao tiếp cần thiết đã được hình thành. I. Tổ chức phần cứng các thành phần có trong hệ Trên cơ sở sơ đồ khối của hệ (hình 1) chúng ta tiến hành tổ chức phần cứng cho từng thành phần có trong hệ. 1. Tổ chức không gian nhớ Do không gian nhớ thực của hệ vi xử cần thiết kế không chiếm hết không gian nhớ mà 80286 có thể quản nên cần lựa chọn dung lượng phù hợp và sắp xếp hợp lý. Dung lượng cho ROM và RAM được chọn là 16Kb cho mỗi loại. Với dung lượng này hoàn toàn có thể thỏa mãn để chứa chương trình Monitor và các vùng đệm dữ liệu cho hệ. Mặt khác có thể dễ dàng chọn IC nhớ cho ROM đó là sử dụng 2 chip EPROM 2764 dung lượng 8Kb mắc song song để tạo 2 băng nhớ (băng nhớ chứa byte cao và băng nhớ chứa byte thấp) để tạo kênh dữ liệu 16 bit. Tương tự, đối với RAM ta chọn 2 chip 6264 dung lượng 8Kb cho mỗi chip mắc song song để tạo 2 băng RAM. con trỏ chương trình CS : IP khi khởi động có giá trị F000 : FFF0 nên lệnh đầu tiên của chương trình Monitor phải chứa ở ngăn nhớ này. Chương trình Monitor được chứa trong ROM nên ROM phải chiếm không gian nhớ 16Kb của mảng 16Kb cuối cùng. Do không dùng cơ chế ngắt và để tiện quản chúng ta bố trí 16 Kb RAM nằm ngay sát vùng ROM. Như vậy cả vùng ROM và vùng RAM chiếm 32 Kb của mảng 64 Kb cuối cùng. Địa chỉ của vùng ROM bắt đầu từ giá trị F000 : C000H đến F000 : FFFFH, còn địa chỉ của vùng RAM bắt đầu từ F000 : 8000H đến F000 : BFFFH EPROM 2x2764 (16Kb) RAM 2x6264 (16Kb) F000:FFFFH F000:C000H F000:BFFFH F000:8000H 0000:0000H Chương trình Monitor và các bảng tham số hệ thống chứa ở đây. Lệnh đầu tiên phải đặt ở địa chỉ Seg:Off = F000:FFF0H Các bộ đệm kênh và các biến hệ thống chứa ở đây. Không gian nhớ không sử dụng. BIT : 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Đ/chỉ HEXA 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F000:8000 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 F000:BFFF 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F000:C000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 F000:FFFF Tổ chức không gian nhớ của hệ : Để quản được vùng nhớ vừa tổ chức cần tạo một bộ giải mã địa chỉ cho phù hợp. Để con trỏ bộ nhớ luôn trỏ tới nửa cuối của mảng nhớ cuối cùng thì các bit A19 đến A15 phải luôn bằng 1. Một mạch AND được dụng để tạo tín hiệu này. Để phân biệt vùng ROM và vùng RAM ta sử dụng bit A14. Khi A14 bằng 0 thì chọn vùng RAM còn khi A14 bằng 1 thì chọn vùng ROM. Để phân băng nhớ chứa byte thấp và byte cao ta sử dụng bit A0 và bit /BHE. Tổ hợp tín hiệu điều khiển này như sau : /BHE A0 Chức năng điều khiển 0 0 Kênh dữ liệu 16 bit : D15 - D0 0 1 Kênh dữ liệu 8 bit cao : D15 - D8 1 0 Kênh dữ liệu 8 bit thấp : D7 - D0 1 1 Không sử dụng Các tín hiệu điều khiển từ CPU bao gồm AEN, /MEMRD, /MEMWR phải tham gia vào bộ giải mã địa chỉ để tạo tín hiệu ra phù hợp. D7-D0 Như vậy, vùng nhớ rất lớn từ địa chỉ 0000:0000H đến F000:7FFFH không được sử dụng. Nếu các thao tác hướng tới vùng này sẽ không được thực hiện và hệ có thể bị dừng hoạt động. Hình 2 . Tổ chức không gian nhớ thực của hệ cần thiết kế D Q Clk __ R Vcc Sensor 0 Đệm vào (2 IC 74LS245) Đệm ra (2 IC 74LS245 D Q Clk __ R Sensor15 Vcc /FLOP_In /FLOP_Out K 0 K 15 Data Bus D15 D1 D0 Rst 15 Rst 0 FlipFop 7474 2. Tổ chức ngoại vi thu tin 16 kênh Theo chức năng của ngoại vi thu tin thì có 16 kênh, mỗi kênh hoạt động độc lập và được nối với các sensor cảm biến. Dạng tín hiệu từ sensor đưa đến là giá trị ngẫu nhiên theo cả hai tham số là thời điểm xuất hiện và thời gian tồn tại, nên mỗi đầu thu tin phải là dạng bẫy xung. Để tạo bẫy xung ta sử dụng một mạch lật FlipFlop kiểu D để thực hiện chức năng này với cách tổ chức như sau : đầu D được gán logic 1 bằng cách nối với nguồn Vcc, đầu Clock nối với kênh vào. Như vậy tại thời một thời điểm bất kỳ, nếu xuất hiện một xung điện áp ở đầu vào thì FlipFlop D sẽ lật ngay, đầu ra Q sẽ có mức logic 1. Tín hiệu này được đưa tới kênh dữ liệu hệ thống qua bộ đệm kênh 74LS245. Với cấu trúc này thì khi FlipFlop đã lật thì nó không thể tự trở về trạng thái ban đầu được nữa. Để lập lại trạng thái ban đầu cho FlipFlop phải Reset cưỡng bức từ phía hệ vi xử lý. Đầu /R được nối với dây điều khiển từ hệ qua bộ đệm 74LS245. Do bộ đệm 74LS245 chỉ có 8 bit nên để thu được tín hiệu từ 16 kênh và Reset cưỡng bức các FlipFlop ta phải sử dụng 2 bộ đệm vào và 2 bộ đệm ra. Tổ chức ngoại vi gồm 16 đầu thu như sau : Tín hiệu vào/ra giữa ngoại vi với hệ vi xử được nối với kênh dữ liệu D0 – D15. Các tín hiệu điều khiển hoạt động của ngoại vi gồm tín hiệu Flop_In và Flop_Out để điều khiển mở các bộ đệm 245 để nhận tin từ các đầu thu và cấp từ mã lập lại trạng thái ban đầu cho các đầu thu. Các tín hiệu này được lấy từ bộ giải mã chọn chip. LCD_Out LCD_Out RS RW E D7 D1 D0 LCD HD44780 D10D9D8 D7 D1D0 Bộ đệm ra 245 Bộ đệm ra 244 DATA BUS 3. Tổ chức ngoại vi hiển thị thông tin kênh Ngoại vi hiển thị dùng thiết bị LCD (Liquid Crystal Display) HD44780. Ta chỉ sử dụng 1 LCD dùng chung cho cả 16 kênh. Bắt đầu chương trình ta thiết lập cho LCD hiển thị 2 hàng, tắt con trỏ. Hàng thứ nhất hiển thị tên kênh cần hiển thị, hàng thứ hai hiển thị số xung đã thu được của kênh tương ứng. Khi tràn ở một kênh nào đó thì thông báo lên LCD mục tiêu đã xuất hiện tại kênh tương ứng. Tổ chức ghép nối với hệ vi xử như sau : 8 bit dữ liệu của LCD được nối với 8 bit thấp D0 D7 bus dữ liệu của bộ vi xử thông qua bộ đệm 8 bit 74LS245. Chân cho phép của 74LS245 nối với tín hiệu LCD_Out lấy từ bộ giải mã chọn chip. Các chân RS, RW và chân cho phép E lần lượt được nối tới các chân D 8 , D 9 và D 10 của bus dữ liệu thông qua bộ đệm ra 4 bit 244. Chân cho phép của bộ đệm này được này cũng được nối với tín hiệu LCD_Out lấy từ bộ giải mã. 4. Tổ chức ngoại vi bàn phím Bàn phím có chức năng đưa yêu cầu về kênh cần hiển thị giá trị lên LCD. Do đó cần tổ chức một bàn phím có số từ 16 trở lên. Tổ chức bàn phím như sau : r Bàn phím được tổ chức dạng ma trận 4x5 tọa độ, mỗi tọa độ là một phím. Mỗi phím gồm một công tắc mắc nối tiếp với một diode. Ở trạng thái bình thường tiếp xúc bị hở mạch, diode lúc này bị thiên áp ngược nên đầu ra tương ứng bị đặt lên giá trị logic 1 do nó được nối với nguồn +Vcc. Trạng thái này gọi là trạng thái thụ động. Khi phím bị ấn, tiếp xúc được gắn mạch, đầu ra tương ứng có giá trị loogic 0 do dòng từ điện thế cao của nguồn +Vcc qua điện trở hạn chế sẽ chảy qua diode lúc này đã được thiên áp thuận. Trạng thái này gọi là trạng thái tích cực, trạng thái mà hệ hiểu là nó phải đưa giá trị của kênh có số hiệu bằng số hiệu của phím được ấn từ bộ đệm kênh lên màn hình LCD. Như vậy, muốn nhận dạng một phím được ấn thì trình tự điều khiển như sau : • Hệ vi xử cấp mã quét từ hàng thứ nhất đến hàng thứ tư của bàn phím (hàng thứ năm chỉ cấp mã quét để kiểm tra phím Reset sau khi đã thông báo xuất hiện mục tiêu). Mã quét này được chốt vào bộ đệm ra 74174 của bàn phím bằng tín hiệu KBD_Out. Đối với mỗi hàng, hệ vi xử phải đọc cả 4 phím vào thanh ghi AL bằng tín hiệu KBD_In ở cửa vào. • Ghép 4 phím của cả 4 hàng vào một thanh ghi 16 bit nào đó. • Duyệt từng bit để kiểm tra xem trạng thái phím được ấn. Trường hợp có cả 2 phím trở lên bị ấn nhầm thì chỉ lấy phím có số hiệu thấp nhất. • Đề phòng trường hợp bàn phím bị hỏng, để tránh cho chương trình bị quẩn hệ thống sẽ coi phím thứ 16 luôn được ấn. Điều này không gây ảnh hưởng đến hoạt động thực của hệ phép duyệt bit lấy từ bit thấp nhất đến bit cao nhất. 5. Tổ chức bộ giải mã chọn chip Bộ giải mã chọn chip giúp bộ vi xử kích hoạt một cách đơn trị các thành phần có trong hệ. Mỗi thành phần có từ một địa chỉ trở lên. Nếu thành phần có nhiều địa chỉ thì mỗi địa chỉ sẽ quy chiếu một chức năng như chức năng chốt dữ liệu và chức năng mở cổng 3 trạng thái chẳng hạn. Tuy nhiên phần lớn các thành phần chỉ có một đầu chọn chip. Trong hệ thống này, bộ giải mã chọn chip dùng để điều khiển việc xuất/nhập thông tin cho các ngoại vi. Với các ngoại vi đã được xây dựng và phương thức điều khiển cho các ngoại vi đó thì phương án tổ chức bộ giải mã chọn chip được xây dựng như sau : [...]... 00H Ra [Out] Flop_Out 01H Ra [Out] LCD_Out 02H Ra [Out] Như vậy phần cứng của hệ thu tín hiệu ngẫu nhiên đa kênh theo yêu cầu đã hình thành với hệ vi xử có bộ xử trung tâm là 80286 Intel và các ngoại vi cần thiết cho phép các chức năng thu nhận xử và hiển thị thông tin thu được Trên cơ sở phần cứng đó, phần mềm của hệ phải thực hiện các chức năng còn lại là : /Q1 FLOP - Kiểm tra theo chu kỳ... hệ sẽ cộng tích lũy giá trị mới nhận được vào nội dung cũ của vùng đệm tương ứng Mỗi khi xử xong một byte phải đổi thành dạng mã BCD Chương trình sẽ xử lần lượt cả 16 kênh thì mới kết thúc chu kỳ kiểm soát thu tin Lưu đồ thuật toán của chương trình con Thu_XL như sau : Điểm vào của chương trình con Thu và xử tin Đọc thông tin từ các đầu thu là các Flip-Flop Lập lại trạng thái cho đầu thu nào... gán giá trị 0 cho các ngăn nhớ và chương trình trở lại hoạt động bình thường Lưu đồ thuật toán như sau : Start Khởi tạo LCD Hiển thị số hiệu kênh cần hiển thị Đọc thông tin từ các đầu thu và xử (có 16 đầu thu) Kiểm tra cờ tràn Xóa dữ liệu của kênh Yes Yes Thông báo mục tiêu đã xuất hiện Phím RESET được bấm No Kiểm tra điều kiện : Cấp số hiển thị = -1 ? No Yes Đọc thông tin từ các đầu thu và xử lý. .. lập trạng thái ban đầu cho các đầu thu Flop_Out Chip demultiplexer 74155 có hai bit địa chỉ lấy từ kênh địa chỉ A1A0 Tín hiệu điều khiển của bộ vi xử /IORD được nối với chân /E của nửa trái để xác định hướng truyền tin vào còn tín hiệu điều khiển của bộ vi xử /IOWR được nối với chân /E của nửa phải để xác định hướng truyền tin ra Với tổ chức như trên, bảng địa chỉ của từng cổng như sau : Tên cổng... đệm với nội dung mới thu được Đồng thời kết quả thu được phải để dưới dạng mã BCD - Kiểm tra theo chu kỳ trạng thái của bàn phím nhằm xác định kênh cần hiển thị ở chu kỳ tiếp theo là kênh nào - Đưa nội dung của kênh cần hiển thị ra LCD Mặt khác phải thường xuyên kiểm soát các đầu thu cho nên thuật toán của phần mềm phải đặt mức ưu tiên cao nhất cho chức năng thu và xử tin thu được, thứ đến mới là... AL INC BX ; gửi tạm vào DX ; gán AL = 0 ; cộng có nhớ với nội dung ngăn nhớ đầu tiên ; chỉnh thập phân ; tăng offset BX ; gán AL = 0 ; cộng có nhớ với nội dung ngăn nhớ thứ hai ; chỉnh thập phân ; chuyển vào ngăn nhớ ; tăng offset BX ; gán AL = 0 ; cộng có nhớ với nội dung ngăn nhớ thứ ba ; chỉnh thập phân ; chuyển vào ngăn nhớ ; tăng offset BX trỏ tới thanh ghi cờ ; gán AL = 0 ; đưa bit nhớ vào thanh... trạng thái thu tin LCD_Out EQU 02H ;cổng điều khiển LCD Phần INIT của chương trình chính đảm nhiệm vi c gán giá trị 0 cho các ngăn nhớ của RAM theo đoạn lệnh sau : RESET : MOV CX, 16*4+1+2 ; là dung lượng 16 kênh, 1 là dung lượng con trỏ ; pointer, 2 là dung lượng con trỏ chanel LOOP_RAM: MOV [BX], 0 ; gán 0 cho ngăn nhớ INC BX ;tăng con trỏ offset lên 1 đơn vị LOOP LOOP_RAM ;lặp lại 2 Chương trình con... MOV AX,1E0H ;byte mã của hàng thứ 5 cho bàn phím ;d4d5d6d7d8 = 01111b OUT KBD,AX ;đưa ra ngoại vi bàn phím IN AL,KBD ;nhận 4 phím hàng thứ năm vào AL NOT AL SHR AL,1 ;dịch phải 1 bit JNC CHECK_RESET ;lặp lại đến khi nào phím RESET được nhấn RET 7 Chương trình con hiển thị và kiểm tra bàn phím Lưu đồ thuật toán của chương trình con HT_BF như sau : Điểm vào của chương trình con Hiển thị và bàn phím Lấy... RET BF: MOV Byte Ptr DS:[POINTER],5 ;gán 5 cho biến Pointer MOV BX,RAM ;lấy địa chỉ của cả vùng đệm kênh MOV AX,F0H ;mã hàng thứ nhất cho bàn phím d8d7d6d5d4=01111b OUT KBD,AX ;đưa ra ngoại vi bàn phím IN KBD,AL ;nhận 4 phím hàng thứ nhất vào AL NOT AL MOV DL,AL ;chuyển sang DL MOV AX,170H ;mã hàng thứ hai cho bàn phím d8d7d6d5d4=10111 OUT KBD,AX ;đưa ra ngoại vi bàn phím IN AL,KBD ;nhận 4 phím hàng... thái của bàn phím Trạng thái của bàn phím được đọc vào và tính toán thành địa chỉ kênh cần hiển thị và chứa trong biến con trỏ kênh Channel Chương trình nguồn của thuật toán có dạng : HT_BF PROC : PUSHA MOV AL,DS:[POINTER] CMP AL,-1 ;so sánh với -1 JNC BF ;đúng thì chuyển điều khiển sang bàn phím MOV AH,AL ;cất tạm vào AH AND AL,AL ;xóa cờ CF SHR AL,1 ;dịch phải D0->CF PUSHF ;cất cờ CF vào stack MOV DX,Word . khiển. Bộ vi xử lý (CPU) được chọn là bộ vi xử lý 80286 vì nó có tốc độ đáp ứng yêu cầu cho hệ, có kênh dữ liệu 16 bit nên có đủ khả năng xử lý thu tín hiệu cho cả 16 kênh. Khả năng quản lý không. Đồ án vi xử lý Đề bài : Thiết kế hệ vi xử lý trên CPU 80x86 Intel cho nhiệm vụ sau: Một hệ thống đặt ngầm ở dưới biển. đa kênh theo yêu cầu đã hình thành với hệ vi xử lý có bộ xử lý trung tâm là 80286 Intel và các ngoại vi cần thiết cho phép các chức năng thu nhận xử lý và hiển thị thông tin thu được. Trên cơ

Ngày đăng: 29/05/2014, 13:40

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan