GIỚI THIỆU VỀ BỘ KIỂM SOÁT CID CHO THUÊ BAO CÓ ĐĂNG KÝ DỊCH VỤ CLI (2).
Trang 12 Điều kiện cần:
Truyền dữ liệu từ tổng đài đến trạm cuối:
Hoạt động trên đường truyền âm thanh và xảy ra ở thời gian thiết lập cuộc gọi,trước khi chuông reo, máy trạm cuối ở trạng thái gác máy
Sử dụng cách truyền dữ liệu bằng tần âm thanh dựa vào phương thức điều chế ITU_TV23
+Yêu cầu thiết bị ở hai đầu để truyền dữ liệu V23:
Ơû phía khách hàng có thuê bao dịch vụ này có một bộ điều chế có thể giải mã cáctần số V23
II Phương thức phục vụ:
1 Cung cấp:
Dịch vụ CLI (nhận dạng số của cuộc gọi đến) được cung cấp ở thuê bao
2 Hoạt động tổng quát:
Truyền các dữ liệu trên điều chế V23 được thực hiện ở cấp đơn vị kiểm soát
Phương thức kiểm soát cuộc gọi cơ bản thực hiện bắc cầu nối đến bộ điều chế, bộnày truyền các thông tin trên tần số V23 khi thiết lập cuộc gọi đến khách hàng có thuê baodịch vụ này
Truyền dữ liệu đến thiết bị đầu cuối của khách hàng phải tuân theo nghi thức đượcmô tả trong tài liệu BELLCORE
3 Huỷ bỏ:
Dịch vụ được huỷ bỏ bởi nhà khai thác dịch vụ
4 Tính cước phí:
Cuộc gọi được tính cước phí như các cuộc gọi bình thường khác
Cước thuê bao được cộng thêm khi có dịch vụ này
III Nghi thức truy xuất tín hiệu:
Thông tin được truyền cho trạm cuối tuân theo một chuẩn giao tiếp bao gồm ba lớpnhư sau:
Trang 2
-Lớp Presentation định nghĩa dữ liệu được mã hóa và xây dựng như thế nào
-Lớp Datalink mô tả cách phát hiện lỗi trên đường truyền và liên lạc từ đầu này đến đầukia
-Lớp Physical đặc tả thuộc tính và yêu cầu của truyền dữ liệu tương tự
1 Lớp Presentation:
Lớp này đặc tả hình thức và trình tự xuất hiện dữ liệu để đảm bảo giao tiếp đúngđắn Nó xác định dạng của mỗi byte và cách xây dựng các message
+Qui luật mã hoá cho mỗi byte:
Nghi thức này sử dụng dữ liệu 8 bit được giới hạn bởi một bit star (0) và một bit stop (1)
+Qui luật mã hoá cho mỗi message:
Phối hợp các byte được dùng để truyền message gồm có loại message, chiều dài message,dữ liệu và Word phát hiện lỗi
Tất cả các field của message ( loại, chiều dài, dữ liệu) bắt đầu bằng CHANNELSEIZURE và MARK SIGNAL (logic 1) và tận cùng bằng CHECK
1.CHANNEL SEIZURE SIGNAL bao gồm một khối 300 bit liên tục (bit “0” và “1”xen kẽ nhau, đầu tiên là bit “0”, cuối cùng là bit “1”)
2.MARK SIGNAL bao gồm 180 bit “1” liên tục
3.CHECK chứa một số bù 2 của tổng các byte trong message mod 256
Các bit Mark bao gồm ít hơn 20 bit liên tục có thể được đưa vào giữa các field khácnhau (T, V, L)
PRESENTETION LAYER
DATA LINK LAYER
PHYSICAL LAYER
PRESENTETION LAYER
DATA LINK LAYER
PHYSICAL LAYER
TRANSMISSION
DATA
First bit transmitted
Mark bits
Parameter 2 Parameter 1 Data
Level 1 Data level 2
Trang 3Các bit Mark không được truyền bởi E10 Vì mỗi thông số có thể đễ dàng đượcnhận ra và phân biệt với nhau dựa vào loại thông tin và chiều dài thông số.
Các field khác gồm có:
-T: loại message, chứa một giá trị để nhận dạng message
-L: chiều dài message, chỉ số byte của message, chiều dài tối đa 255
-T1,T2: loại thông số, chứa một giá trị để nhận dạng thông số
-L1,L2: chiều dài thông số
Không có Message nào được giữ lại để báo lỗi đã được phát hiện
Nghi thức này không cung cấp khả năng sửa lỗi và giữ lại thông báo
3 Lớp Physical:
Kỹ thuật truyền trên băng tần âm thanh bất đồng bộ đơn công (Simplex) được dùngđể truyền dữ liệu đến trạm cuối
Các thông số truyền dựa trên khuyến cáo ITU-TV23
Đặc điểm chính như sau:
-Tốc độ: 1200 bit/s
-Loại liên kết: chế độ đơn công (Simplex mode)
-Tần số điều chế:
FZ: 1300Hz +- 10Hz (Logic 1)
FA: 2100Hz+- 10Hz (Logic 0)
-Mức truyền: -7dB+-1.5dB
-Trong quá trình truyền, trạm cuối ở mức trở kháng thấp
-Dữ liệu: nối tiếp, bất đồng bộ
B CA
E
Trang 4Tín hiệu báo xung chuông đầu tiên Bước này cần để đánh thức bộ giải điều chế đặt
ở phía trạm cuối (min: 200ms, max: 300ms)
c Bước C: thời gian chờ đợi:
Quãng delay này cần để đảm bảo rằng trạm cuối có đủ thời gian để chuyển sangmức trở kháng thấp (min: 500ms, max: 700ms)
d Bước D:
Truyền dữ liệu dựa trên điều chế V23 Bước này không vượt quá 3s
e Bước E: cho phép trạm cuối chuyển lại mức trở kháng cao
Bước này cần để tránh hư hỏng ở phía thiết bị đầu cuối khi đang gửi dòng điện reochuông (min: 200ms, max: 400ms )
f Bước F:
Tín hiệu chuông thứ hai trong chu kì chuông
5 Message và giải mã thông số:
a Loại của message:
Message này được truyền đến thuê bao ở bước D gồm những thông số: +Ngày vàthời gian
+Số cuộc gọi (CLI)hoặc lí do không có của CLI
-Byte 1: loại của message (T): HGFEDCBA=10000000
-Byte 2: chiều dài của message (L): HGFEDCBA=giá trị chiều dài
b Loại của thông số:
@ Thông số ngày và thời gian:
-Byte 1: loại của thông số (T): HGFEDCBA=00000001: ngày và thời gian
-Byte 2: chiều dài của thông số (L): HGFEDCBA=00001000 :8 byte
Tám byte cần thiết để giải mã thông số ngày và thời gian
+Dùng mã ASCII để giải mã và cấu trúc như sau:
Byte 1
Byte 2
Trang 5@ Thông số của cuộc gọi:
-Byte 1: loại của thông số:
HGFEDCBA=00000010: loại thông số của cuộc gọi
-Byte 2: chiều dài
HGFEDCBA= tối đa 18 số
-Byte 3 đến 20: danh sách của số
@ Trường hợp không có thông số CLI:
8 7 6 5 4 3 2 1
A B C D E F G H
Loại của thông số (T)Chiều dài của thông số (L)
Byte 1Byte 2Chiều dài của thông số (V)
… … …Chiều dài của thông số (V)
Chiều dài của thông số (V)
Byte 3Byte 4
Byte 10
8 7 6 5 4 3 2 1
A B C D E F G H
Loại của thông số (T)Chiều dài của thông số (L)
Byte 1Byte 2Lý do không có thông số CLI Byte 3
8 7 6 5 4 3 2 1
A B C D E F G H
Loại của thông số (T)Chiều dài của thông số (L)
Byte 1Byte 2Số thứ nhất
… … …Số thứ 18
Số thứ hai
Byte 3
Byte 4
Trang 6-Byte 1: loại của thông số
HGFEDCBA=00000100: lí do không có thông số CLI
-Byte 2: chiều dài
-Byte 3: hiển thị lí do không có:
Giá trị 0: không có giá trị
Giá trị P: vô danh hoặc hạn chế cuộc gọi
Trang 7CHƯƠNG II: TOPDOWN DESIGN, FPGA VÀ VHDL.
I P hương pháp luận thiết kế:
Mục đích của phần này là đưa ra một cái nhìn tổng quát về VHDL và phương pháp để nó có thể được sử dụng trong thực tiễn thiết kế Những nhận thức khác nhau của một ngôn ngữ, như ngôn ngữ của phần cứng và ngôn ngữ của phần mềm thì phụ thuộc lẫn nhau.Một kiến thức chung của hầu hết các ngôn ngữ thì rất cần thiết trước khi nó được đề xuất, những nhận thức đã được mô tả rất chi tiết Phần này cung cấp một kiến thức cần thiết về VHDL để tạo điều kiện cho sự hiểu biết những chi tiết của ngôn ngữ tạo thuận lợi cho việc lập trình Một cái nhìn tổng quát nữa, phần này cho thấy làm thế nào mà một người thiết kế có thể sử dụng một cách thuận lợi VHDL và những công cụ sẵn có giúp cho việc tổ chức những ý tưởng tốt hơn và cố gắng để quản lý việc thi hành những thiết kế lớn
Trong quá trình thiết kế, trước hết chúng ta đưa ra một cái nhìn tổng quát về VHDL và những thành phần của ngôn ngữ này, sau đó chúng ta sẽ mô tả qui trình Top-Down design Trong quá trình Top-Down design, chúng ta sẽ chỉ ra những mức độ khác nhau của những ý niệm (cấu trúc, dòng dữ liệu và hành vi) trong VHDL, làm thế nào để mỗi mức độcủa những ý niệm đó có thể được sử dụng
Việc xây dựng ngôn ngữ VHDL dành cho việc mô tả những thành phần của phần
cứng, việc gói gọn các bộ phận, sự có ích và hữu dụng của thư viện (library) và cho việc
truy cập đến những thư viện thiết kế Do mục tiêu riêng của ngôn ngữ là dùng cho thiết kế phần cứng Cho nên nhiều phần đặc biệt trong ngôn ngữ VHDL được mô tả để tạo điều kiện cho cách dùng này
1 Phương pháp to p_down design :
Đối với những hệ thống lớn thì ta không thể mô tả hết tất cả các hành vi bên trong mà ta phải phân chia ra nhiều thành phần và theo từng cấp khác nhau ta gọi là quá trình top_down design
Top_down design là phương pháp phân chia nhiều lần của hệ thống thành những thành phần con của nó cho đến khi các thành phần con này ta có thể quản lý được Một thành phần có thể quản lý được nếu nó đã có sẵn trong thư viện ( nó có thể được mở rộng thêm từ những thành phần trong thư viện) hoặc nó có thể được mô tả bằng chương trình
tổng hợp được viết bởi người thiết kế hoặc một phần cứng được tạo ra một cách tự động
Việc phân chia đó có thể được mô tả như sau:
Trang 8Sau khi tiến hành phân cấp hệ thống thiết kế thì ta sẽ ánh xạ vào phần cứng Việc ánh xạ vào phần cứng phụ thuộc vào công nghệ cuối cùng, thư viện và công nghệ sẳn có Đối với những hệ thống có thể lập trình được thì từ công cụ sẵn có ta có thể sử dụng để tạo
ra các file lập trình thiết bị gọi là Design File Một phần mềm được trang bị những công cụ tốt và thư viện đầy đủ sẽ hổ trợ cho việc phân chia tốt hơn và hệ thống có những thành phần đơn giản hơn, dễ dàng cho việc thiết kế Như trong ví dụ trên thì bộ ALU được phân chia thành phần con và từ những thành phần đó lại được phân chia thành những thành phầnnhỏ hơn nữa đến khi các thành phần ở các nút lá đã có trong thư viện hoặc ta có thể thiết kế chúng một cách dễ dàng, đơn giản
II Tìm hiểu về công nghệ FPGA: (Field Programmable Gate Arrays)
1 FPGA là gì?
Cũng giống như MPGA (Mask-Programed Gate Arrays), FPGA (Field
Programmable Gate Array) là một dãy các thành phần không có sự ràng buộc với nhau Chúng có thể được nối kết lại với nhau theo rất nhiều cách khác nhau Giống như PAL (Programmable Array Logic), sự kết nối giữa các thành phần trong FPGA là do người sử dụng lập trình FPGA được công ty Xilinx giới thiệu đầu tiên vào năm 1985 Sau đó nhiều FPGAs đã được một số công ty khác giới thiệu như là Actel, Altera, Plessey, Plus, AMD, …
Một FPGA bao gồm 1 dãy hai chiều các khối logic Các khối này có thể được nối lại với nhau bởi 1 hệ thống liên kết có mặt trong toàn dãy Việc kết nối được thực hiện bằng các đoạn dây (segments of wire) Chiều dài các đoạn dây này có thể có nhiều kích cỡ
Trang 9khác nhau Sự kết nối giữa các đoạn dây với nhau và giữa các đoạn dây với các khối logic thông qua các công tắc có thể lập trình được (programmable switches) Các mạch logic được thực thi bằng công nghệ FPGA này theo cách thức phân bổ logic vào từng khối logic (logic blocks) cụï thể, sau đó nối các khối đó lại với nhau qua các công tắc có thể lập trình được.
Khối Logic: (logic block): cấu trúc và nội dung của logic block được gọi là kiến trúc
của khối Kiến trúc của khối được thiết kế theo nhiều cách khác nhau, có loại có cấu trúckhối đơn giản chỉ có 2-input NAND cũng có loại phức tạp hơn như là multiplexers haylookup tables Đa số các logic block đều có một vài loại flipflop nhằm bổ sung cho việcthực thi các mạch tuần tự
Bộ kết nối: (interconnection resources): cấu trúc và nội dung của việc kết nối trong
FPGA được gọi là kiến trúc đường nối (routing architecture) Kiến trúc đường nối bao
gồm cả các đoạn dây (wire segments) và các công tắc (programmable swiches) Các côngtắc này được tạo ra bằng nhiều cách như là pass-transitor controlled, anti-fuses, EPROMtransitor, EEPROM transitor Kiến trúc đường nối được thiết kế theo nhiều hướng khácnhau, một số thì dùng một số lượng lớn các kết đơn giản giữa các block, số còn lại thìdùng ít số lượng kết nối nhưng lại có tính phức tạp cao hơn
2 Ưu, nhược điểm của công nghệ FPGA:
Ưu điểm: FPGA được sử dụng một cách có hiệu quả trong rất nhiều lãnh vực khác
nhau So với công nghệ MPGA trước đó thì nó có 2 ưu điểm nổi bật là chi phí cho việc chếtạo các mạch mẫu là thấp hơn rất nhiều, và thời gian sản xuất cũng được rút ngắn lại
Nhược điểm: So với MPGA thì FPGA có 2 nhược điểm chính là tốc độ hoạt động
của mạch thấp hơn đáng kể, và độ tích hợp về logic thấp hơn Mạch chayï chậm hơn là docác công tắc trong liên kết có trở kháng và dung kháng lớn Độ tích hợp các cổng logicthấp hơn cũng là do các công tắc vì sau khi chúng được lập trình, chúng sẽ chiếm nhiều thểtích hơn trong con chíp so với các mối nối bằng kim loại trong công nghệ MPGA Mộtnhược điểm khác của FPGA là khi sản xuất với số lượng lớn, giá thành trên đơn vị sảnphẩm sẽ cao hơn so với dùng MPGA
3 Các lãnh vực ứng dụng của FPGA:
FPGA có thể được sử dụng trong hầu hết các ứng dụng mà hiện tại đang dùngtrong các chip MPGA, PLD và SSI (Small Scale Integrated) Các ứng dụng của FPGA cóthể được liệt kê ra như sau:
Mạch tổ hợp đặc dụng ASIC (Application-Specific Integrated Circuit): FPGA
là một công cụ có tính tổng quát, và hoàn toàn có thể hiện thực được mạch logic số Nó
đặc biệt thích hợp cho việc hiện thực ASIC Một vài ứng dụng đã được ghi nhận như: 1
megabit FIFO controller, kênh giao tiếp IBM PS/2, DRAM controller, graphic engine,
mạch nhận biết ký tự qua hình ảnh, …
Mạch hiện thực logic ngẫu nhiên (Implementation of Random Logic): trước
đây mạch logic ngẫu nhiên thường dùng PAL (PAL chạy nhanh hơn so với FPGA) Tuy
nhiên, trong những mạch logic mà tốc độ không phải là mối quan tâm hàng đầu thì FPGA
được sử dụng bởi vì hiện thực nó dễ dàng hơn PAL nhiều Hiện nay một FPGA có thể hiệnthực được một mạch mà phải cần đến 10 đến 20 PAL mới hiện thực được Trong tương lai
ưu điểm này của FPGA còn vượt xa hơn nữa
Trang 10Thay thế các chip SSI cho mạch logic ngẫu nhiên: Những mạch hiện có trong
các sản phẩm thương mại thường chứa các chip SSI Trong rất nhiều trường hợp, các chipnày có thể được thay thế bởi các FPGA Việc dùng các FPGA có lợi là giảm đáng kể kíchthước các board mạch chứa các chip
Xây dựng mạch mẫu (prototyping): FPGA là phương tiện lý tưởng cho việc
thiết kế các mạch mẫu Chi phí thấp cho việc sản xuất cũng như thời gian thực thi trong
thiết kế tương đối ngắn đem lại nhiều thuận lợi to lớn so với phương pháp xây dựng mạch
mẫu truyền thống Các mạch mẫu có thể được thay đổi và chỉnh sửa một cách nhanh
chóng, dễ dàng và không tốn nhiều chi phí.
Ưùng dụng trong các máy tính dựa trên nền các FPGA: một loại máy tính mới
hoàn toàn được ra đời nhờ vào các FPGA có thể tái lập trình được ngay trên mạch của nó.
Những máy tính này bao gồm các mạch được thiết kế từ các FPGA Yù tưởng này xuất pháttừ việc dùng một chương trình phần mềm để “dịch” vào phần cứng thay vì vào phần mềmtheo cách thông thường Phần cứng này sau đó được hiện thực bằng cách lập trình cácboard mạch FPGA Phương pháp mới này có 2 thuận lợi cơ bản là:
Không yêu cầu quá trình lấy lệnh như là các bộ vi xử lý truyền thống bởi vì chính bản thân phần cứng là sự thể hiện của các lệnh đó Ưu thế này có thể giúp
cho tốc độ của mạch tăng lên đến 100 lần.
Loại thiết bị mới này còn có thể hỗ trợ các quá trình xử lý song song ở mức
độ rất cao, dẫn đến tốc độ xử lý tăng vọt.
Ưùng dụng vào việc tái cấu hình phần cứng (On- Site Re- Configuration of
Hardware): Công nghệ FPGA còn được yêu thích ở chỗ nó cho phép thay đổi được cấu trúc các máy đã sản xuất hoàn chỉnh hay đã được xử dụng Ngay cả đối với các máy ở xa cũng có thể được thay đổi, bổ sung cho thích ứng hoặc ngay cả chỉnh sửa lại sự sai sót của công việc thiết kế mạch đó Loại FPGA thích hợp nhất cho việc táicấu hình này là loại chứa những công tắc có thể tái lập trtình được (re-
programmable switches)
Trang 114 Quá trình hiện thực FPGA:
Môt người thiết kế muốn sử dụng tốt FPGA phải có được một hệ thống CAD
(Computer Aided Design) có hiệu quả Hình 4 miêu tả các bước mà một hệ thống CAD điển hình hiện thực một mạch FPGA
Khối logic khởi đầu (initial logic entry): bước này có liên quan đến việc vẽ lược
đồ (sử dụng chương trình schematic capture), việc nhập vào sự miêu tả phần cứng bằngngôn ngữ VHDL, và việc đặc tả các biểu thức boolean Bất kể nhập vào khối khởi đầu nàybằng cách nào, việc miêu tả mạch thường được chuyển sang một dạng chuẩn là các biểuthức boolean
Khối tối ưu hoá logic (logic optimization): các biểu thức boolean được đưa vào xử
lý khối này bởi một công cụ tối ưu hoá logic, mà nó có thể quản lý được các biểu thức boolean đó Mục tiêu của khối này là điều chỉnh các biểu thức đầu vào để tối ưu hoá kích thước và tốc độ của mạch điện sau cùng Sự kết hợp của những yêu cầu về tốc độ và kích thước cũng được xem xét tại khối này Việc tối ưu hóa này thường thể hiện bằng cách giảm thiểu tối đa về mặt đại số của các biểu thức boolean Các biểu thức sau khi được tối
ưu hóa có thể được hiện thực thành một mạch logic bằng bất kỳ phương tiện nào, chứkhông phải chỉ dùng FPGA
Hệ thốngCAD
Khối logic khởi đầu (Initial design logic)
Khối tối ưu hóa logic (Logic optimization)
Khối ánh xạ vào công nghệ (Technology mapping)
Khối sắp xếp vị trí (Placement)
Khối tạo liên kết (Routing)
Khối lập trình (Programing unit)FPGA
(được cấu hình)
Trang 12Khối ánh xạ vào công nghệ (Technology mappy): Tại đây, các biểu thức boolean
(đã được tối ưu hóa) được biến đổi thành một mạch bao gồm các khối logic FPGA Công việc này được thực hiện nhờ vào một chương trình gọi là technology mapping program Việc ánh xạ có thể nhằm vào mục tiêu giảm thiểu số lượng tổng cộng các khối logic, tức
tối ưu hóa về mặt kích thước, hay giảm các giai đoạn của các khối logic để hạn chế thời
gian delay
Khối sắp xếp vị trí (Placement): Nhiệm vụ của khối này là quyết định đặt mỗi
khối logic vào khối nào ở trong dãy FPGA Một chương trình gọi là placement được sửdụng để giải quyết vấn đề này Giải thuật sắp xếp điển hình nhắm vào việc giảm thiểu
chiều dài tổng cộng các liên kết.
Khối tạo liên kết (Routing): đây là bước cuối cùng trong hệ thống CAD được thực
hiện bởi một phần mềm gọi là routing Nó gán trị cho các đoạn dây và các con tắc để thànhlập nên những liên kết cần thiết giữa các khối logic với nhau Phần mềm routing phải bảođảm được rằng 100% các mối liên kết đã được thiết lập, và thời gian delay trên các mốiliên kết đó phải được giảm thiểu
Khối lập trình (programing unit): ngõ ra của hệ thống CAD sẽ được đưa vào khối
này để cấu hình cho chip FPGA Quá trình hiện thực mạch trên FPGA có thể kéo dài từ vàiphút cho đến 1 giờ, tùy loại FPGA nào được sử dụng
III To ùm tắt sơ lược ngôn ngữ VHDL :
1 Giới thiệu:
Ngôn ngữ VHDL ra đời với mục đích phục vụ cho việc mô phỏng phần cứng Nó tạo
ra sự liên kết chặt chẽ giữa máy tính và điện tử Lĩnh vực ứng dụng quan trọng của ngôn
ngữ là mô tả phần cứng bằng sự tổng hợp Nó cung cấp cho người thiết kế một cái nhìn
tổng quát vấn đề để việc thiết kế đạt hiệu quả nhanh chóng Trong thời đại ngày nay sự
kết hợp giữa phần cứng và phần mềm là không thể thiếu được Ngôn ngữ VHDL là một công cụ hỗ trợ đắc lực cho việc nhúng phần cứng vào phần mềm tạo ra những sản phẩm điện tử có giá trị một cách nhanh chóng và hiệu quả Công nghệ FPGA là một bằng chứng
chứng tỏ kỹ thuật mới sẽ phát triển cấp trừu tượng về sự mô tả công cụ điện tử Vì vậy mà
các công nghệ mới cần sự hổ trợ rộng rãi của các ngôn ngữ miêu tả phần cứng nhờ vào sự
tổng hợp.
Tổng hợp là một quá trình cho phép sự mô tả hành vi sang sự mô tả cấu trúc mà
mỗi phần tử đại diện là một tài nguyên được xác định trước Trong chu kỳ thiết kế, tổng
hợp mô tả là một trong các bước sau cùng Chức năng chính của phần tử thiết kế phải được
duy trì Kỹ thuật tổng hợp nhằm mục đích sắp xếp kết quả việc lựa chọn kiến trúc dựa vào
tập hợp các phần tử cơ bản Một phần tử có thể đại diện cho một tài nguyên phần cứng hoặc một vài ô nhớ chuẩn cho mạch tích hợp
Tầm quan trọng của việc tổng hợp:
- Sự thuận lợi đầu tiên là cấp mô tả phần cứng được thể hiện ở mức mô tả cao hơn, sự ứng dụng của người thiết kế càng ít việc chi tiết hóa mô tả Việc đạt được từ sự trừu tượng được là giảm bớt và rút gọn sự mô tả ban đầu, do đó sẽ làm thuận lợi việc debug của chúng
Trang 13- Càng trừu tượng ở các cấp thì càng có nhiều chức năng mô tả hơn Sự tổng hợp ở
phương diện này sẽ làm ngắn con đường dẫn từ ý tưởng đến ứng dụng
- Tổng hợp dẫn đến thông tin thiết kế an toàn hơn và được xem như là một nhãn chất
lượng trong chu trình thiết kế
- Từ lúc tổng hợp làm giảm kích thước mô tả, nó cũng là phép cập nhật dể dàng hơn,
debug nhanh hơn và sự khám phá của việc lựa chọn kiến trúc rộng hơn
- Phần lớn dòng mô tả phần cứng cùng với khả năng thông số hóa sẽ dẫn đến việc tạo
thư viện tài nguyên để sản sinh các thiết kế điện tử tốt hơn.
2 Các thành phần thiết kế chủ yếu trong ngôn ngữ VHDL:
Thiết kế bằng ngôn ngữ VHDL ta có thể thấy được trong ngôn ngữ có các đơn vị thiết kế chủ yếu sau:
a Entity:
Một thiết kế VHDL chứa đựng một hay nhiều entities Entity mô tả một thực thể bao gồm các giao diện bên ngoài như các ngõ inputs và outputs và thực hiện một chức
năng đã được định nghĩa Mỗi thiết kế thực thể gồm hai phần:
- Phần đặc tả thực thể : định nghĩa các ngõ vào ra của thiết kế Khi một thực thể được sử dụng thì người sử dụng chỉ biết về thực thể như một hộp đen, chỉ biết được ngõ vào ra, chức năng và cách thức hoạt động của nó, người sử dụng khôngthể biết được cấu trúc bên trong
- Phần kiến trúc: chỉ ra chức năng của thực thể, do người thiết kế mô tả
Khai báo một Entity
Blocks: Nhóm các phát biểu đồng thời (concurrent statements) lại với nhau
Signal assignment: Gán giá trị tính toán đến các tín hiệu hoặc các cổng giao tiếp
Procedure calls: gọi giải thuật để tính và gán giá trị cho các tín hiệu
Component instantiations: tạo ra một instance của thực thể để nối các cổng giao
tiếp với các tín hiệu hoặc các cổng giao tiếp của một thực thể đã được định nghĩa
Trang 14 Processes: định nghĩa một giải thuật tuần tự Các phát biểu trong một process
sẽ thực thi tuần tự
Khai báo một architecture
Architcture identifier of entity_name is
architecture_declarative_part Begin
Architecture_statement_part End [ architecture_simple_name ];
VD: Mô tả Architecture của entity NAND dưới dạng structure.
Vo : port map INV(C , ABAR);
No : port map AND(A , B , C);
Một confguration đặc tả một sự kết nối giữa một entity và architecture của nó.
Khai báo cấu hình :
Configuration identifier of entity_name is
Configuration_declarative_partBlock_configuration
End[configuration][configuration_simple_name];
d Process:
Trang 15Process chứa đựng những phát biểu tuần tự để định nghĩa thuật toán, thường dùng
trong định nghĩa hành vi (bihavior) của một thực thể Process là sự thể hiện phát biểu đồng thời chứa nhiều phát biểu tuần tự Process có thể có hoặc không có danh sách cảm nhận (sensitivitynetlist).Trong process ta có thể dùng các phát biểu sau:
* Gán tín hiệu : tính toán giá trị và gán chúng cho các tín hiệu.
* Gọi thủ tục
* Gán biến
* Phát biểu If
* Phát biểu Case
* Phát biểu Loop
* Phát biểu Next
* Phát biểu exit
* Phát biểu Wait
* Phát biểu Null
Chức năng, và cú pháp của các phát biểu này sẽ được nói đến ở phần sau
Khai báo processes:
[process_label :]
[postponed] process [(sensitivity_list)][is]
process_declarative_part begin
process_statement_part end [postponed] process [process_label];
e Subprogram:
Giống như process chương trình con sử dụng phát biểu tuần tự Có hai loại chương trình con là functions và procedure Function trả về giá trị đơn trực tiếp, Procedure trả về 0 hoặc giá trị thông qua giao diện Chương trình con hữu dụng cho việc tính toán lặp vòng Chương trình con được khai báo trong package.
Khai báo chương trình con
+Function: Tìm phần tử lớn nhất trong tập hợp
Function LARGEST (TOTAL_NO : integer ; SET : PATTERN)
Return REAL is Variable RETURN_VALUE : REAL := 0.0;
Begin
For K in SET’RANG loop
If SET(K) > RETURN_VALUE then
RETURN_VALUE := SET(K);
End if;
Trang 16End loop;
Return RETURN_VALUE;
End LARGEST;
+Procedure: Thực hiện khối toán học-so sánh đơn giản.
TYPE OP_CODE is (ADD,SUB,MUL,DIV,LT,LE,EQ);
Procedure ARITH_UNIT(A,B : in INTEGER; OP : in OP_CODE;
Z : out INTEGER; ZCOMP: out BOOLEAN) is
Begin
Case OP is
When ADD => Z:=A+B;
When SUB => Z:=A-B;
When MUL => Z:=A*B;
When DIV => Z:=A/B;
Package cung cấp một cơ cấu tiện lợi cho việc lưu trữ và chia dữ liệu khi nhiều đơn
vị thiết kế muốn sử dụng Packages đại diện cho phần mềm của thiết kế, nó chứa các phần tử tiện ích cho người thiết kế Một package gồm hai phần : phần khai báo và phần body
Khai báo một package
Constant LOW2HIGH : TIME:=20 ns;
TYPE ALU_OP is (ADD,SUB,MUL,DIV,EQL);
Attribute PIPELINE : BOOLEAN;
TYPE MVL is (‘U’,’O’,’1’,’Z’);
TYPE MVL_VECTOR is array(NATURAL range<>) of MVL;
SubTYPE MY_ALU_OP is ALU_OP range ADD to DIV Component NAND2
Port (A,B : in MVL; C: out MVL);
End component;
End SYNTH_PACK;
Package body : chứa hành vi của chương trình con và giá trị của hàng số được
khai trong phần khai báo package và các phần khai báo khác
Package body package_name is
Trang 17Package_body_declarative_part End [package_body][package_name];
VD:
Package body PROGRAM_PACK is
Use WORK.TABLES.all;
Constant PROP_DELAY : TIME:=15ns;
Function “and”(L,R:MVL) return MVL is Begin
các hằng được tính toán lại mỗi lần chương trình con được gọi nhưng vẫn không
thay đổi trong quá trình chương trình con thực thi
b Biến:
Giá trị của biến được cập nhật tức thời khi được gán Biến có thể được khai báo
trong các chương trình con hoặc trong các quá trình và trong các quá trình tổng hợp,
nơi mà nó có thể suy ra các phần tử nhớ
c Tín hiệu:
Thay thế cho các dây dẫn trong thực tế ngôn ngữ VHDL dùng tín hiệu Các tín hiệu hiện hữu từ khi bắt đầu đến khi kết thúc quá trình tái tạo Thông tin được trao đổi giữa các thành phần chỉ đi qua các tín hiệu Tín hiệu không chứa đựng giá trị như các biến, nó có thể truy xuất dùng các thuộc tính, một giá trị hiện tại Vì vậy phép gán tín hiệu thể hiện giá trị hiện hành của tín hiệu được cập nhật một cách tứcthời bởi các tín hiệu khác
4 Các kiểu dữ liệu được sử dụng:
a Kiểu rời rạc: được định nghĩa bởi danh sách tất cả các giá trị có thể có của kiểu
Cú pháp của một kiểu rời rạc là :
TYPE TYPE_name is (enumeration_literal
{ ,enumeration_literal});
VD:
TYPE COLOR is (BLUE,GREEN,YELLOW,RED);
Trang 18b Kiểu integer:
Tầm trị của kiểu integer nằm trong khoảng(-47483647,2147483647)
Cú pháp của khai báo kiểu integer:
TYPE TYPE_name is range interger_range;
VD:
TYPE PERCENT is range -100 to 100;
c Kiểu array:
Giống như một số ngôn ngữ cấp cao khác (C, Pascal, ) kiểu array trong VHDL
là một đối tượng chứa một dãy các phần tử cùng kiểu Array chia làm hai loại
- Constrained array
Cú pháp:
TYPE array_TYPE_name is Array (integer_range) of TYPE_name;
- Unconstrained array
Cú pháp:
TYPE array_TYPE_name is Array (range_TYPE_name range<>) of element_TYPE_name;
Các thuộc tính của kiểu array là: left, right, high, low, length, range,
BYTE : BIT_VECTOR (5 downto 0);
IX : integer range 0 to LEN;
End record;
e Một số kiểu dữ liệu định nghĩa trước của VHDL:
- Kiểu BOOLEAN: Nhận hai giá trị False và True với False<True, được dùng cho các toán tử so sánh.
- Kiểu BIT : Nhận giá trị nhị phân ‘0’ và ‘1’
- Kiểu CHARACTER : Nhận các giá trị trong tập kí tự của bảng mã ASCII.
- Kiểu INTEGER
- Kiểu NATURAL : Là kiểu con của integer nhận giá trị không âm
- Kiểu POSITIVE : Là kiểu con của integer nhận giá trị dương.
- Kiểu STRING : Là một kiểu unconstrained array của kiểu kí tự.
Trang 19- Kiểu BIT_VECTOR : Là kiểu array of BIT.
f Một số kiểu dữ kiệu không hổ trợ FPGA Express:
- Kiểu Physical.
- Kiễu Floating Point.
- Kiểu Access.
- Kiểu File.
5 Các to án tử trong vhdl :
Ta có thể tóm tắt vào bảng sau:
6 Các phát biểu tuần tự:
- Phát biểu gán biến:
Cú pháp:
Target := Expression;
Target: phải là biến cùng kiểu với kiểu của biểu thức expression
- Phát biểu gán tín hiệu:
Cú pháp :
Target <= Expression;
Target: phải là tín hiệu cùng kiểu với kiểu của biểu thức expression
- Phát biểu điều kiện IF:
Phát biểu If phải có ít nhất 1 phát biểu tuần tự
- Phát biểu chọn lựa case: dùng để thay thế cho phát biểu IF có nhiều phát biểu
ELSIF.
Cú pháp:
Case expression is
When choices => {sequential_statement}
{When choices => {sequential_statement}}
Trang 20End case;
Phát biểu Case hợp lệ nếu có một hoặc nhiều chọn lựa when
- Phát biểu Loop:
Cú pháp:
[Label :][iteration_scheme] loop
{sequential_statement}
{next [label] [when condition];}
{exit [label] [when condition];}
end loop [label];
Phát biểu loop có 3 dạng:
+ phát biểu loop cơ bản: không có điều kiện nên chương trình sẽ thoát khỏi vòng lặp khi gặp phát biểu Exit.
Cú pháp:
[Label :] loop
{sequential_statement}
end loop [label];
+ While loop : chương trình sẽ thoát khỏi vòng lặp khi điều kiện condition
không được thỏa
Cú pháp:
[Label :] while condition loop
{sequential_statement}
end loop [label];
+ For loop: lặp với số vòng lặp được biết trước.
Cú pháp:
[Label :] for identifier in range loop
{sequential_statement}
end loop [label];
- Phát biểu Next: được dùng trong các vòng lặp, việc thực thi sẽ bỏ qua các lệnh phía sau lệnh Next trong vòng lặp.
Cú pháp:
Next [label] [when condition];
- Phát biểu Exit: chương trình thoát khỏi vòng lặp khi gặp lệnh Exit.
Cú pháp:
Exit [label] [when condition];
- Gọi chương trình con:
+ Gọi thủ tục :
Procedure_name [([name =>] expression
Trang 21Return expression ; (dùng cho function) Return ; (dùng cho procedure)
- Phát biểu Wait: khi gặp phát biểu này thì việc thực thi sẽ dừng lại đến khi điều
kiện được thỏa
Cú pháp :
+ Wait until signal = value;
+ Wait until signal'event
and signal = value;
+ Wait until not signal'stable
and signal = value;
- Phát biểu Null: là phát biểu tường minh, khi gặp phát biểu thì chương trình
không làm gì cả
Cú pháp :
Null;
7 Phát biểu đồng thời:
Các phát biểu đồng thời được đặt ở vị trí giữa Begin và End của phần
Architecture.
- Phát biểu process:
Cú pháp như đã trình bày
- Phát biểu block :
end block [label];
- Gọi thủ tục: tương tự như trong phát biểu tuần tự, nhưng được gọi trong một khối
(block) hoặc trong một kiến trúc (architecture).
- Gán tín hiệu đồng thời:
With choice_expression select
Target <= {exprssion when choices, }
expression when choices;
- Component instantiation : Tham khảo đến một thành phần phần cứng được định
nghĩa trước
Trang 22Cú pháp:
Instance_name : Component_name port map (
[port_name => ] expression {, [port_name =>] expression});
- Generate statement : có 2 loại:
+ For generate statement
Trang 23CHƯƠNG III
GIỚI THIỆU PHẦN MỀM XILINX FOUNDATION Series 2.1i
I Yêu cầu phần cứng:
+Bộ xử lý Pentium Pro trở lên
+Hệ điều hành Window 9x hay NT4.0 trở lên
+Tốc độ xung 120MHz trở lên.
+Bộ nhớ chính 48MB trở lên
+Swap file 48MB trở lên
+Không gian đĩa cứng trống 2GB
+Màn hình SVGA 17” trở lên
+CD ROM 4x trở lên (optional)
+Bàn phím
+Chuột hai hay ba nút nhấn
Chú ý: Nếu cấu hình máy thấp hơn yêu cầu thì thời gian chạy chương trình sẽ lâu hơn.II Cài đặt chương trình:
1 Có đĩa CD source chương trình ở ổ CD ví dụ ổ E Chọn Start-Run, gõ vào lệnh
E:\setup.exe.
2 Làm theo các hướng dẫn trên màn hình
Chú ý : ta chọn các option (xem hình sau)
Ta chọn họ XC4000XL để cài đặt:
Trang 24Trong quá trình cài đặt phần mềm yêu cầu Name, Company, và CDKey Điều này
có nghĩa là người sử dụng phải được cấp bản quyền sử dụng phần mềm
III Sơ lược về cách sử dụng chương trình:
1 Tạo project:
Trang 25Sau khi cài đặt, sẽ xuất hiện link trên menu Start và một biểu tượng Project
Manager trên desktop Kích đôi vào biểu tượng này để chạy chương trình.
Trên màn hình sẽ hiện bảng thông báo yêu cầu mở một project có sẵn hay là tạomột project mới Ví dụ ở đây ta chọn tạo một project mới Nhập vào tên của project là
add4bit, chọn thiết kế theo VHDL, kích vào OK.
2 Nhập chương trình:
Kích vào biểu tượng trên lưu đồ thiết kế trên màn hình ở phần Design Entry, hoặc kích Tool-Design Entry-HDL Editor Một cửa sổ hiện ra yêu cầu chọn các option sau: tạo
tài liệu rỗng, mở tài liệu có sẵn hay là chọn thiết kế dùng Wizard Theo cách truyền thống,
ta có thể chọn thiết kế HDL, ta chọn Create Empty và kích OK Một window trống xuất
hiện chờ ta nhập chương trình vào
Ta gõ vào chương trình cộng hai số tám bit như sau:
cout : out std_logic;
result : out std_logic_vector(0 to 7)
);
end add4bit;
architecture add4bit_behavioral of add4bit is
signal crry : std_logic;
begin
process(clk,a,b)
variable carry : std_logic;
begin
if (clk'event and clk = '1') then
for j in 7 downto 0 loop
result(j)<= a(j) xor b(j) xor carry;
carry := (a(j) and b(j)) or (a(j) and carry) or (carry and b(j));
3 Kiểm tra cú pháp:
Sau đó ta Save lại với tên file là add4bit.vhd Sau đó kích Synthesis-CheckSyntax.
Phần mềm sẽ chạy kiểm tra cú pháp chương trình và báo lỗi bằng dấu nhắc màu đỏ ở dònglệnh có lỗi Cụ thể là dòng 1, 2, 3 vì không có thư viện dls_.ieee.std_logic mà chỉ có thư
Trang 26viện ieee.std_logic Ta xóa bớt đi các kí tự dls_, Save lại chương trình và Check Syntax lại, cho đến khi nhận được thông báo Check Successful.
Tiếp đến ta kích vào Project-Add to Project Để nhập source code chương trình
4002XLPC84, Speed: xl-09, Version name: ver1 các phần khác sẽ tự động được thêm
vào Kích vào Run, phần mềm sẽ tổng hợp cho ta Cho đến khi phần biểu tượng Synthesis
cũng được đánh dấu màu xanh ( hoặc dấu chấm than màu xanh tức là còn warning, nhưngcũng chạy mô phỏng được)
5 Mô phỏng:
Ta sang bước thứ ba là chạy mô phỏng chương trình bằng cách kích vào biểu tượng
Simulation kế bên biểu tượng Synthesis Chương trình sẽ mở ra một cữa sổ mới chờ ta
nhập các chân vào, ta kích vào biểu tượng Add Signal trên thanh menu ( hoặc kích vào
Signal-Add Signals) Một danh sách các port sẽ hiện ra cho ta chọn, ta chỉ chọn các port
mà ta khai báo ở trong entity( các port khác phần mềm tự tạo ra thì không cần) bằng cách kích đôi vào port đó Sau đó kích Close để đóng cữa sổ Add Signal lại
Để gán xung clock cho port, ta mở cữa sổ Stimulatior Selection bằng cách kích vào Signal – Add Stimulatior Khi cữa sổ hiện ra ta đánh dấu vào node clk và kích vào vị trí của B0 ( ô cuôí cùng bên phải của hàng Bc:, bên phần node clk sẽ xuất hiện chữ B0 Để chọn tần số cho xung clock, ta kích Option – Preferences Một bảng Preferences hiện lên Ơû ô B0 Frequency ta chọn 100MHz, kích OK.
Để gán giá trị cho node a có giá trị từ 0 đến 100, ta kích vào Formula… của cữa sổ
Stimulatior Selection Cữa sổ Set Formulas hiện ra Kích đúp vào F0:, đánh dấu vào ô
Trang 27“Use WFM macro format”, kích vào “Wizard” Cữa sổ Waveform hiện ra Ta chọn
Increment trong ô Waveform; 100ns trong ô Start; chọn Low trong ô Initial; chọn 100
trong ô Repeat the state sequence or modify the state for the selected number of times; chọn 100ns trong ô Modify Signal; chọn 1 trong ô By Sau đó kích OK.
Cữa sổ Set Formulasxuất hiện dòng 100 ns=L (100ns=inc by 1) * 1 trong ô Edit
formula: Ta kích Accept – Close Quay trở lại với cữa sổ Stimulatior Selection, chọn
node a ở cữa sổ Waveform và kích vào F0 (ô cuối cùng bên phải của hàng Form:.
Để gán tín hiệu đầu vào bằng tay ( qua bàn phím) cho node reset, ta kích vào biểu tượng phím z trên cữa sổ Stimulatior Selection rồi rê nó thả vào node reset Sau khi gán giá trị xong thì phím z sẽ điều khiển node đó (nhấn 1 lần thì gán low, nhấn tiếp thì gán
high)
Để gán tín hiệu đầu vào cho node b là hằng số, ta kích chuột phải vào vùng mô phỏng, chọn edit, đánh dấu vào hàng của b bằng cách rê chuột, sau đó nhập giá trị vào ô
bus trên bảng text vector state và kích vào bus
Trong ô thời gian chạy từng bước ta chọn 100ns.
Kích từng cái một vào biểu tượng trace để xem chương trình chạy mô phỏng từng
bước một Trong thời gian chạy ta có thể nhấn phím z để thay đổi giá trị của reset.
Hoặc ta có thể cho chạy mô phỏng một lần bằng cách kích Option – Start Long
Simulation Một bảng thông báo hiện ra cho ta chọn thời gian chạy mô phỏng (default =
10giây), kích Start Kết quả sẽ hiện ra trong cữa sổ Waveform.
Để đổi đầu ra các signal sang dạng số thập phân (hay nhị phân, bát phân) ta kích chuột phải vào signal đó, chọn Bus – Display Decimal Hoặc cũng có thể xem đầu ra từng bit một bằng cách chọn Flatten.
Trang 28Ngoài cách thiết kế dạng VHDL, chúng ta còn có thể thiết kế dạng Schematic, hay dạng State