Thiết kế hệ vi xử lý nhúng trên nền tảng công nghệ FPGA

40 1.5K 51
Thiết kế hệ vi xử lý nhúng trên nền tảng công nghệ FPGA

Đ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

Tác giả: Dương Bá Dũng . k42 Hoàng Thị Yến. k44 Học viện Kỹ thuật Quân sự

ĐỀ TÀI: Thiết kế hệ vi xử nhúng trên nền tảng công nghệ FPGA Tác giả: Dương Bá Dũng. Ra đa K42 Hoàng Thị Yến. ĐTYS K44 Học viện Kỹ thuật Quân sự 1 Mở đầu Ngày nay, chúng ta đang sống trong kỷ nguyên của khoa học và công nghệ ,càng ngày càng có những đột phá về khoa học và công nghệ mới. Đất nước ta đang trong thời kỳ đổi mới, công nghiệp hoá, hiện đại hoá, với xu thế hội nhập kinh tế quốc tế. Ngành Điện tử - Viễn Thông Việt Nam, một trong những ngành có vai trò quan trọng trong kết cấu hạ tầng cơ sở của nền kinh tế quốc dân cũng đang có sự đóng góp lớn lao cho sự lớn mạnh của nền kinh tế, ổn định chính trị và an ninh quốc phòng nước nhà. Công nghệ Điện tử nói chung và công nghệ FPGA nói riêng ngày càng lớn mạnh ở Việt Nam chúng ta. Hầu hết những thiết bị phức tạp đều giải quyết nhiệm vụ trên cơ sở Hệ vi xử lý. Bên cạnh đó,tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính. Ngoài ra, nhờ mật độ cổng logic cao, FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn. Những ứng dụng trong thực tế của FPGA rất rộng rãi, bao gồm: Các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính . Đặc biệt, với khả năng tái lập trình, người sử dụng có thể thay đổi lại thiết kế của mình chỉ trong vài giờ… Nhờ những đặc điểm mạnh mẽ và ứng dụng thực tiễn của FPGA cùng với vai trò giải quyết bài toán của Vi xử lý,chúng em đã chọn đề tài “Thiết kế hệ Vi Xử nhúng chuyên năng trên nền tảng công nghệ FPGA”. Đề tài được viết bằng ngôn ngữ VHDL Chúng em xin chân thành cảm ơn thầy giáo Đỗ Xuân Tiến,thầy giáo Trịnh Quang Kiên đã tận tình hướng dẫn, giúp đỡ chúng em để có thể hoàn thành đề tài. Trong thời gian ngắn,đề tài nghiên cứu chưa được sâu,kính mong các thầy cô cùng các bạn góp ý kiến để Đề tài tiếp tục hoàn thiện và phát triển. 2 I. Giới thiệu chung về Hệ Vi Xử Lý. 1. Lịch sử phát triển của chip Vi xử lý. Những vi mạch tích hợp đầu tiênVới những tiến bộ của công nghệ, vi xử đã ra đời và phát triển theo thời gian. Ba hãng sản xuất chíp Intel, Texas Instruments (TI) và Garrett AiResearch đã cho ra đời ba bộ vi xử cùng một thời điểm với các tên gọi lần lượt là Intel 4004, TMS 1000 và Central Air Data Computer. Đây là ba dự án đầu tiên cho ra đời các bộ vi xử hoàn chỉnh. Năm 1968, hãng Garrett đã được mời chế tạo một máy tính số để đua tài với các hệ thống cơ điện tử và sau đó nó được phát triển để làm bộ điều khiển chính của máy bay chiến đấu Tomcat F-14 của Hải quân Mỹ. Sản phẩm này đã hoàn thiện vào năm 1970 và nó sử dụng một chíp được xây dựng bằng công nghệ MOS đóng vai trò là lõi của CPU. Sản phẩm này có kích thước nhỏ hơn và hoạt động tin cậy hơn nhiều lần so với các hệ thống cơ điện tử và nó được dùng cho những mô hình máy bay Tomcat đầu tiên. Tuy nhiên, hệ thống này tân tiến đến mức Hải quân Mỹ đã từ chối việc cấp phép công bố sản phẩm cho đến tận năm 1997.TI đã phát triển bộ vi xử 4-bits TMS 1000 và tập trung vào các ứng dụng nhúng lập trình trước. Sau đó, TI đã tiếp tục công bố một phiên bản khác gọi là TMS1802NC vào ngày 17 tháng 9 năm 1971. TMS1802NC tích hợp trên nó một bộ tính toán nhằm hỗ trợ khả năng xử toán học của vi xử lý. Tiếp đến, ngày 15 tháng 11 năm 1971, Intel đã công bố vi xử 4-bits Intel 4004 được phát triển bởi Federico Faggin. 3 2. Tổng quan về hệ vi xử lí. Tổ chức chung của hệ vi xử lí được thể hiện trong hình vẽ 1.1. Hình 1.1: Kiến trúc chung hệ vi xử lí. Hệ vi xử lí gồm các thành phần chính sau: CPU đơn vị xử lí trung tâm là bộ nào của hệ vi xử lí. Nhiệm vụ của CPU là điều khiển tất cẩ các thành phần có trong hệ vi xử lí, thực hiện mọi thao tác có liên quan tới tính toán, xử lí, gia công, biến đổi tín hiệu nhị phân trong hệ dưới sự điều khiển của chương trình cài đặt trong bộ nhớ trung tâm của hệ vi xử lí. Memory là bộ nhớ trung tâm của hệ vi xử lí gồm hai thành phần. Thành phần thứ nhất là bộ nhớ cố định ROM dùng để chứa nội dung chương trình điều hành hoạt động của hệ vi xử lí. Nó còn được gọi là chương trình monitor. ROM còn được sử dụng để chứa các bảng biểu và các tham số của hệ thống. Chương trình trong ROM phải được chuẩn bị trước khi cho hệ thống hoạt động. Thành phần thứ hai của bộ nhớ trung tâm là bộ nhớ đọc/ghi RAM được dùng làm môi trường lưu trữ kết quả trung gian, kết quả cuối của của xử lí thông tin. Nó cũng được sử dụng để làm vùng đệm dữ liệu cho các thao tác thu phát chuyển đổi số liệu. I/O là cổng vào ra, có nhiệm vụ giao tiếp giữa hệ vi xử lí và thế giới bên ngoài. Thực hiện truyền dữ liệu số nhị phân đã được xử lí từ bên trong hệ thống ra 4 bên ngoài và thực hiện truyền ngược lại tín hiệu nhị phân từ bên ngoài vào bên trong hệ vi xử lí để thực hiện tín toán và xử lí tín hiệu. Có hai loại cổng vào ra: cổng vào ta nối tiếp và cổng vào ra song song. Ngoài ra trong hệ vi xử lí còn có bàn điều khiển, hiển thị thực hiện điều khiển hệ thống và hiển thị kết quả điều khiển và trạng thái hoạt động của hệ vi xử lí. Các bộ biến đổi tương tự - số (ADC) và bộ biến đổi số - tương tự (DAC) thực hiện chuyển đổi tín hiệu tương tự sang tín hiệu số nhị phân và ngược lai Hệ thống trong hệ vi xử thực hiện kết nối liên lạc các bộ phận trong hệ thống với nhau. Hệ thống gồm 3 thành phần chính: Thành phần thứ nhất là địa chỉ là thành phần một chiều bộ vi xử lí dùng nay để điều khiển các thành phần có trong bằng cách gán cho mỗi thành phần một địa chỉ xác định. Thành phần thứ hai là kênh dữ liệu. Đây là kênh dữ liệu hai chiều thực hiện trao đổi thông tin giữa đơn vị xử lí trung tâm và các thành phần có trong hệ thống. Thành phần thứ ba là kênh điều khiển. Là tập hợp các tín hiệu điều khiển để tạo liên lạc giữa đơn vị xử lí trung tâm và các thành phần có trong hệ nhằm đồng bộ hóa mọi chế độ và mọi thao tác của hệ thống. Hệ vi xử được sử dụng rộng rãi trong cuộc sống, với các ứng dụng như: Xử ảnh, xử tín hiệu, thông tin di động, thiết bị y tế . Tính chuyên dụng của các ứng dụng được thể hiện một cách rõ nét khi mà các hệ vi xử ra đời phục vụ một lớp bài toán ứng dụng vào từng lĩnh vực cụ thể. Các hệ vi xử chuyên dụng tuy không mạnh nhưng lại được bán và sử dụng ở nhiều nơi: Các bo mạch tạo nhạc, máy thu hình điện thoại di động, lò vi ba, mạch điện tử trong xe con… Trong phạm vi nghiên cứu của đề tài chúng em thực hiện thiết kế một hệ vi xử nhỏ gọn, với một tập lệnh chuyên năng đã được thu gọn đơn giản, không hoàn toàn đầy đủ các lệnh như các hệ vi xử lớn. 5 II. Xây dựng hệ vi xử lí cần thiết kế . 1. Thiết kết tập lệnh. a. Giới thiệu tập lệnh. Hoạt động của CPU được xác định bởi các lệnh mà nó thực hiện. Các lệnh này giống như lệnh cho máy hoạt động…Tập hợp các lệnh khác nhau mà CPU có thể thực hiện được gọi là tập lệnh của CPU. Từ tập lệnh định nghĩa được phần dữ liệu và mọi phần khác trong bộ xửnên một việc cần thiết đầu tiên là nghiên cứu tập lệnh của nó. Bảng 1.1 Tóm tắt tập lệnh chuyên năng của CPU cần thiết kế. Có 28 lệnh được nhóm lại làm 4 nhóm: các lệnh toán học và lệnh logic. Các lệnh chuyển dữ liệu và các lệnh bit. Xây dựng tập lệnh này dựa trên tập lệnh của các loại vi xử lí và vi điều khiển thông dụng hiện nay dụ: 89C51, Atmel AVR… Mã Opcode Function Chú thích 1 nop 0000 0000 Nop 0000 0000 0000 0000 2 halt 1111 1111 Halt 1111 1111 0000 0000 3 MOVRd 1001 - RF[rn] <= mem[direct] 1001 rrrr dddd rrrr 4 MOVMd 1010 - mem[direct] <= RF[rn] 1010 dddd dddd rrrr 5 MOVM 0000 0001 mem[RF[rn]] <= RF[rm] 0000 0001 dddd rrrr 6 MOVRFi 1011 - RF[rn] <= imm 1011 kkkk dddd kkkk 7 ADD 0000 0010 RF[rn] <= RF[rn] + RF[rm] 0000 0010 dddd rrrr 8 ADDi 1100 - RF[rn] <= RF[rn] +imm 1100 kkkk dddd kkkk 9 SUB 0000 0011 RF[rn] <= RF[rn] - RF[rm] 0000 0011 dddd rrrr 10 SUBi 1101 - RF[rn] <= RF[rn] – imm 1101 kkkk dddd kkkk 11 JZ 1110 - jz if R[rn] = 0 1110 dddd dddd rrrr 12 lcall 1011 - 1111 dddd dddd dddd 13 Jmp 1000 - 1000 dddd dddd dddd 14 SLL 0001 0000 RF[rn] <= RF[rn] sll RF[rm] 0001 0000 dddd rrrr 15 SLA 0001 0001 RF[rn] <= RF[rn] sla RF[rm] 0001 0001 dddd rrrr 16 SRL 0001 0010 RF[rn] <= RF[rn] srl RF[rm] 0001 0010 dddd rrrr 17 SRA 0001 0011 RF[rn] <= RF[rn] sra RF[rm] 0001 0011 dddd rrrr 18 NOTx 0010 0000 RF[rn] <= not RF[rm] 0010 0000 dddd rrrr 19 ANDx 0010 0001 RF[rn] <= RF[rn] and RF[rm] 0010 0001 dddd rrrr 20 NAND 0010 0010 RF[rn] <= RF[rn]nand RF[rm] 0010 0010 dddd 0000 21 OR 0010 0011 RF[rn] <= RF[rn] or RF[rm] 0010 0011 dddd rrrr 22 NOR 0011 0001 RF[rn] <= RF[rn] nor RF[rm] 0011 0000 dddd rrrr 23 XOR 0011 0010 RF[rn] <= RF[rn] xor RF[rm] 0011 0001 dddd rrrr 24 XNOR 0011 0011 RF[rn] <= RF[rn] nxor RF[rm] 0011 0011 dddd rrrr 25 SETB 0111 0000 I/O(A, b) ← 1 0111 0000 aaaa arrr 26 CLRB 0111 0001 I/O(A, b) ← 0 0111 0001 aaaa arrr 27 IN 0111 0010 Rd ← I/O(A) 0111 0010 dddd iiii 6 28 OUT 0111 0011 I/O(A) ← Rr 0111 0011 uuuu rrrr a. Các phương pháp định địa chỉ. CPU có thể truy nhập dữ liệu theo nhiều cách khác nhau. Dữ liệu có thể ở trong một thanh ghi, ở trong bộ nhớ hoặc được cho dưới dạng địa chỉ tức thời. Cách CPU truy nhập dữ liệu được gọi là chế độ định địa chỉ. Trong tập lệnh trên chúng ta đã xây dựng có 4 chế độ định địa chỉ cơ bản: Chế độ định địa chỉ tức thời: Toán hạng nguồn là một hằng số. dụ: MOVRFi R1,4 ; // nhập giá trị 4 vào thanh ghi R1. Chế độ định địa chỉ thanh ghi: Sử dụng thanh ghi để lưu dữ liệu cần thao tác. dụ: ADD R1,R2 ; // cộng giá trị thanh ghi R1 với thanh ghi R2 và lưu kết quả vào thanh ghi R1. Chế độ định địa chỉ trực tiếp: Định địa chỉ thanh trực tiếp có thể truy nhập toàn bộ không gian bộ nhớ RAM của hệ vi xử lý. dụ: MOVRd R1, 7 ;// Dịch chuyển dữ liệu từ ô nhớ địa chỉ là 7 trong RAM vào thanh ghi R1. Chế độ định địa chỉ gián tiếp thanh ghi: Thanh ghi được sử dụng để trỏ đến dữ liệu có trong ô nhớ. dụ: MOVM R1,R2; // Dịch chuyển dữ liệu từ thanh ghi R2 vào ô nhớ có địa chỉ nằm trong R1. b. Cấu trúc lệnh. Trong thực tế có rất nhiều họ vi xử lí mỗi họ lại có một cấu trúc tập lệnh khác nhau. Để tiện cho việc thiết kế hệ vi xử lí, thực hiện mã hóa và giải mã lệnh một cách đơn giản ta lựa cấu trúc lệnh có độ dài cố định 16 bit. Cho các lệnh yêu cầu hai thanh ghi. Ta lựa chọn d là địa chỉ thanh ghi đích còn r là đia chỉ thanh nghi nguồn. 4 bit có thể được đánh địa chỉ cho toàn bộ 16 thanh ghi ( ). Các lệnh cho cấu trúc này bao gồm ADD, SUB và AND…Đối với nhóm lệnh này thì 8 bít đầu bao gồm opcode(mã hoạt động) và function(mã chức năng) để xác định chức năng của lệnh và 8 bit sau đánh địa chỉ cho hai thanh ghi nguồn(rrrr) và đích(dddd) trong tập thanh ghi nháp. 7 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 o o o o f f f f d d d d r r r r Đối với các lệnh yêu cầu một thanh ghi, d là thanh ghi nguồn hoăc r là thanh ghi đích. Đối với các lệnh có chứa một toán tử và giá trị trực tiếp trong câu lệnh, k là giá trị trực tiếp (cố định) và d là địa chỉ thanh ghi đích. Cấu trúc lệnh này áp dụng cho các lệnh SUBI,ADDI,MOVI. 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 o o o o k k k k d d d d k k k k Nhóm lệnh này sử dụng bốn bít đầu opcode (mã hoạt động) xác định chức năng của mỗi lệnh cũng được sử dụng phân biệt với các lệnh khác. Tám bít (kkkkkkk)từ (11…7) và (3…0) chứa giá trị trực tiếp trong câu lệnh. Bốn bít (dddd) từ (7…4) xác định địa chỉ thanh ghi đích trong tập thanh ghi nháp(tập thanh ghi đa năng RF) . Đối với lệnh rẽ nhánh: lệnh jmp là lệnh nhảy không điều kiện thực hiện nhảy tới một địa chỉ lệnh trong bộ nhớ lệnh… Mã máy của từng lệnh được thể hiện trong bảng 1.1 . 8 2. Tổ chức hệ vi xử lí. a. Mô tả chân. Hình 2.1 Mô tả chân của vi xử lí. Hình 2.1 mô tả cấu hình chân cho bộ vi xử lí. Bộ vi xử lí có các cổng vào và cổng ra được quy định rõ. Mỗi cổng có 8 chân tương ưng với 8 bit. Tín hiệu clk sẽ được đưa trực tiếp vào trong hệ vi xử lí. Reset sẽ được đặt ở mức thấp.khi Reset được xác lập thì hệ vi xử lí ở trạng thái mặc định khi chưa có xung clk. 9 a. Kiến trúc tổng quát. Hình 2.1Kiến trúc tổng quát của CPU. Hình 2.1 chỉ ra sơ đồ khối tổng quát của thiết kế, mỗi khối được đưa ra là một modul cần được thiết kế. Trên sơ đồ có 13 khối, trong đó có những khối đơn giản (RF)và những khối phức tạp (CU, ALU). Chúng ta phải hiểu các modul đó trước khi bắt tay vào thiết kế từng modul cụ thể. Thực hiện kết nối giữa các khối lại với nhau bằng các đường dữ liệu. Có hai loại đường dữ liệu cơ bản là trực tiếp và chung. trực tiếp là các kết nối trực tiếp giữa hai khối với nhau. Còn chung kết nối nhiều khối lại với nhau. 10 [...]... khi bắt gặp sườn lên xung clock Kết quả thanh ghi thay đổi giá trị sau sườn lên xung clock một thời gian ngắn 13 3 Thiết kế phần dữ liệu(datapath) a Tổng quát Trong thiết kế hệ vi xử lí chúng ta cần thiết kế hai phần quan trọng: thiết kế phần dữ liệu và thiết kế phần điều khiển Trong chương này chúng ta thảo luận chi tiết thiết kế phần dữ liệu, chương tiếp theo ta thiết kế phần điều khiển Trong sơ đồ... PINB 14 DIRA 12 DIRB 15 4 Thiết kế đơn vị điều khiển a Tổng quát Trong mục 3 ta đã đi phân tích thiết kế phần dữ liệu Trong phần này ta đi thiết kế khối đơn vị điều khiển Nội dung chính là hiểu rõ quá trình thực hiện lệnh trong vi xử lí, phân tích rõ từng giai đoạn và từ đó đưa ra tín hiệu điều khiển thích hợp đúng khối và đúng thời điểm Thiết kế khối điều khiển ta cần đi thiết kế hai khối con của nó... duy trì cho tới xung nhịp clock thứ hai của chu kì lệnh kế tiếp e Tập các thanh ghi đa năng (tập thanh ghi mục đích chung) Trong các hệ vi xử lí thường có số lượng lớn các thanh ghi đa năng ( 32 hoặc 64) Trong phạm vi thiết kế tập các thanh ghi đa năng có 16 thanh ghi đánh số từ 0(0x0) đến 15(0xf) Tại một thời điểm, tập các thanh ghi đa năng sẽ kết nối trực tiếp tới ALU thông qua hai bộ dồn , hai thanh... được tách ra tại bộ giải mã và đưa tới bộ chọn địa chỉ d Thiết kế máy trạng thái 26 Hình 4.2 Sơ đồ máy trạng thái Máy trạng thái thiết kế cho đơn vị điều khiển dựa trên cơ sở các xung nhịp clock, và các bước thực hiện một lệnh Máy trạng thái có 4 trạng thái đó là: fetch(tham chiếu lệnh),decode (giải mã lệnh), excute (thực hiện lệnh), write back (vi t kết quả trở lại) Trạng thái tham chiếu lệnh (fetch):... khiển tương ứng thực hiện lệnh Tất cả các khối được kết nối với nhau bằng trực tiếp Đơn vị thực hiện trong hệ thực hiện phần lớn các lệnh Bình thường thực hiện một lệnh Hai toán tử là đầu ra của tập thanh ghi lệnh tới ALU ALU khi ấy sử dụng toán tử và gửi kết quả tới dữ liệu Nội dung của dữ liệu được lưu trở lại tập thanh ghi lệnh Trong thiết kế không thực xử lí đường ống đường ống mà các lệnh được thực... thì tương tự lệnh OUT nhưng thay tám bit dữ liệu mà chỉ có một bít mà thui Nhóm lệnh dịch… c Thiết kế bộ giải mã Đầu vào đơn vị điều khiển là mã máy từ thanh ghi lệnh(IR) và các tín hiệu cờ trạng thái Mã máy được giải mã trước khi đưa tới máy trạng thái Trong phần trước chúng ta tìm hiểu bộ vi xửthiết kế chỉ thực hiện 24 lệnh đơn giản Bộ giải mã thực hiện thao tác xác định chức năng của lệnh nhờ... qua bộ nhớ chương trình (ROM) tới thanh ghi lệnh Thanh ghi lệnh sẽ nhận lệnh từ bộ nhớ chương trình (ROM) được chỉ bởi PC vậy quá trình thiết kếthiết kế các thanh ghi cùng với mạch tổ hợp và quan hệ giữa chúng Đây được gọi là phần dữ liệu (datapath) của hệ thống Tín hiệu điều khiển được sử dụng xác định truyền được dữ liêu như thế nào từ thanh ghi nào tới thanh ghi nào và tại thời điểm nào Tín... thanh ghi trạng thái thông qua trạng thái Cờ Zero(Z) là một khi kết quả của hoạt động bằng không Động tác kiểm tra kết quả được thực hiện ngay tại tín hiệu đầu ra của khối mux_out trước khi tới địa chỉ Cờ N … g Thanh ghi trạng thái h Bộ nhớ dữ liệu (RAM) Tổ chức không gian bộ nhớ dữ liệu, trong thiết kế CPU có 128 byte RAM Ta xem xét phân bố và công dụng của nó Trong cấu trúc lệnh đọc hoặc ghi dữ liệu vào... điều khiển Hình trên giải thích sinh động khái niệm Cả hai tín hiệu điều khiển ADD và WR_REG được xác lập và không được xác lập sau một sườn lên xung clock Tín hiệu ADD đưa ra tác động ngay lập tức sau khi nó được xác lập bởi kết quả đầu ra của bộ cộng Kết quả có được sau một thời gian trễ phụ thuộc vào tốc độ của bộ cộng Tín hiệu WR_REG chốt kết quả vào trong thanh ghi tại thời điểm kết thúc của tín... điều khiển còn lại các khối khác là thuộc về phần dữ liệu Các khối này được thể liệt trong hìn phía dưới đây.Ta thiết kế từng khối trong chương này Các khối trong phần dữ liệu b Bộ đếm chương trình Bộ đếm chương trình sẽ được tăng lên sau khi lệnh trước nó được thực hiện xong, trong thiết kế một lệnh sẽ được thực hiện trong 4 xung nhịp clock nên cứ sau 4 xung nhịp clock thì thanh ghi bộ đếm chương trình . l n m nh c a n n kinh t , n đ nh ch nh tr và an ninh qu c ph ng n c nh . C ng ngh Đi n t n i chung và c ng ngh FPGA n i ri ng ngày c ng l n m nh. hi n xong, trong thi t k m t l nh sẽ đư c th c hi n trong 4 xung nh p clock n n c sau 4 xung nh p clock thì thanh ghi bộ đếm chư ng tr nh đư c t ng l n

Ngày đăng: 22/04/2013, 20:59

Từ khóa liên quan

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

Tài liệu liên quan