Thực hiện hệ thống trải phổ trực tiếp không sử dụng chaos

Một phần của tài liệu đồ án tốt nghiệp điện tử viễn thông thực hiện hệ thống trải chuỗi trực tiếp với độ rộng bit hỗn loạn trên FPGA (Trang 42)

1. Nội dung thiết kế tốt nghiệp:

2.2. Thực hiện hệ thống trải phổ trực tiếp không sử dụng chaos

2.2.1. Khối trải phổ

2.2.1.1. Sơ đồ khối

Hình 2. 6. Sơ đồ khối phát tín hiệu

Đầu vào gồm: xung clock (CLK), tín reset (RST), trạng thái khởi tạo chuỗi PN (st), dữ liệu đầu vào (DATA).

Đầu ra là tín hiệu đƣợc gửi đi.

Để thực hiện khối này trên kit DE2, chúng em đã chọn:

- Xung clock của khối đƣợc lấy từ clock 50 MHz của kit DE2. - Tín hiệu reset là một nút bấm trên kit DE2, cụ thể là nút KEY0

- Trạng thái khởi tạo chuỗi PN là 1 tín hiệu nhị phân 5 bit, đƣợc chọn từ 5 switch trên kit DE2.

- Dữ liệu đầu vào là tín hiệu nhị phân gồm 8 bit, cũng đƣợc chọn từ 8 switch trên kit DE2.

- Đầu ra của khối (tín hiệu đƣợc gửi đi) sẽ đƣợc sử dụng trực tiếp làm đầu vào cho khối giải trải phổ.

2.2.1.2. Chức năng từng khối. 2.2.1.2.1. Khối clock divider

38 Do tính chất của hệ thống là trải phổ với một hệ số trải phổ nhất định, do đó khối chuyển đổi tín hiệu vào sẽ hoạt động với tần số lớn hơn tần số của khối tạo chuỗi PN một số nguyên lần. Do đó khối clock divider đảm nhiệm chức năng này.

- Đầu vào gồm tín hiệu clock của DE2 và tín hiệu reset lấy từ một nút bấm của DE2

- Đàu ra là 2 xung clock đã đƣợc chia phù hợp với yêu cầu của hệ thống, 2 clock này cung cấp cho khối tạo chuỗi PN và khối chuyển đổi tín hiệu đầu vào.

Kết quả mô phỏng

- Mô phỏng trên Model Sim với 2 đầu ra: CLK_2 gấp chu kì 10 lần CLK_1, xung RESET tích cực âm.

Hình 2. 7. Kết quả mô phỏng khối Clock Divider

2.2.1.2.2. Khối PN Creater (tạo chuỗi giả ngẫu nhiên)

- Chức năng: tạo chuỗi giả ngẫu nhiên với trạng thái khởi tạo có thể đƣợc đặt trƣớc tùy ý (nhập vào từ các switch của kit DE2).

- Sử dụng mô hình cấu trúc,tạo ra 1 Flip-Flop sau đó tạo ra toàn bộ khối PN (thực chất là 1 thanh ghi dịch) dựa vào các Flip-Flop đó:

39 - Đầu vào của khối là xung clock nhận từ khối clock divider và tín hiệu khởi tạo

đƣợc tùy chọn.

- Đầu ra là một xung tƣơng ứng với chuỗi giả ngẫu nhiên đƣợc tạo, mỗi bit có độ rộng bằng một xung clock.

Kết quả mô phỏng:

- Mô phỏng trên Model Sim,dùng 5 flip-flop,với trạng thái ban đầu của các flip- flop lần lƣợt là:0 0 0 0 1. (tín hiệu st)

- Chuỗi mã PN nhận đƣợc là : 0000111001101111101000100101011. (pn_out)

Hình 2. 9. Kết quả mô phỏng khối tạo chuỗi PN

2.2.1.2.3. Khối Data

Khối này làm nhiệm vụ chuyển đồi tín hiệu đầu vào từ dạng nhị phân sang dạng nối tiếp, tức là một xung tƣơng ứng, mỗi xung có độ rộng bằng n lần độ rộng xung của chuỗi PN (n là hệ số trải phổ).

- Đầu vào gồm xung clock lấy từ khối clock divider, tín hiệu đầu vào nhập từ switch của DE2.

- Đầu ra là xung đã đƣợc chuyển đổi tƣơng ứng, độ rộng bằng xung nhịp clock.

Kết quả mô phỏng

40 Hình 2. 10. Kết quả mô phỏng khối data loader

2.2.1.2.4. Khối Sender

Chức năng: tổng hợp các khối trên thành khối thống nhất, thực hiện đúng mục đích của hệ thống.

Nguyên lý: tín hiệu từ khối data và khối tạo chuỗi PN sẽ đƣợc đƣa qua bộ xor, đầu ra bộ xor chính là đâu ra của khối, là tín hiệu đƣợc gửi đi.

Kết quả mô phỏng

Tín hiệu data đƣợc gán giá trị ban đầu là 10110001, chuỗi pn có các flip-flop đƣợc gán giá trị ban đầu là 00001.

- data_out là đầu ra của khối sender, chính là tín hiệu đƣợc phát qua bên thu. - Khi data(tín hiệu ban đầu) có giá trị = 1 thì chuỗi PN (tín hiệu pn_out trên kết

quả mô phỏng) sẽ bị đảo ngƣợc (0 sẽ thành 1 và 1 sẽ thành 0), khi data có giá trị 0 thì chuỗi PN không đổi.

41 Hình 2. 11. Kết quả mô phỏng khối sender

2.2.2. Phía giải trải phổ 2.2.2.1. Chức năng 2.2.2.1. Chức năng

Từ tín hiệu nhận đƣợc từ phía phát đi qua các khối xor, tích phân, lấy mẫu sẽ thu đƣợc tín hiệu ban đầu.

2.2.2.2. Khối tích phân - Chức năng

- Cộng dồn các giá trị thu đƣợc từ bộ xor theo chu kì xung clock trong khoảng bằng hệ số trải phổ (N).

- Sau đó so sánh kết quả thu đƣợc với giá trị gọi là ngƣỡng bằng N/2. Nếu kết quả nhỏ hơn N/2, tín hiệu đƣa ra là 0, trong trƣờng hợp ngƣợc lại tín hiệu đƣa ra là 1.

2.2.2.3. Khối getData (lấy mẫu)

- Chức năng:

Lấy mẫu tín hiệu theo chu kì tƣơng ứng với hệ số trải phổ và lƣu kết quả vào một biến mảng nhị phân. Giá trị này phục vụ cho việc kiểm tra so sánh với đầu ra trên mô phỏng cũng nhƣ hiển thị lên kit DE2.

2.2.2.4. Khối Receiver

42 Tổng hợp của các khối trên, thực hiện chức năng của bên thu, giúp đƣa ra tín hiệu sau trải phổ.

- Đầu vào là tín hiệu nhận đƣợc từ phía trải phổ. Sử dụng xung các xung clock, chuỗi PN chung với bên trải phổ (cùng trạng thái khởi tạo).

- Đầu ra: tín hiệu thu đƣợc, yêu cầu giống với tín hiệu ban đầu đƣa vào hệ thống. Module khối Receiver

module Receiver(clk, rst, data_send, st, dataout, out);

input clk, rst; input data_send; input [4:0] st; output [7:0] out; output dataout; Kết quả mô phỏng và nhận xét

- Tín hiệu thu đƣợc hoàn toàn chính xác so với tín hiệu đƣa vào ban đâu từ phía trải phổ.

- Tín hiệu là 8 bit nhƣng hoàn toàn có thể mở rộng tùy ý.

Hình 2. 12. Kết quả mô phỏng khối Receiver

2.2.3. Thực hiện trên FPGA

- Tạo project mới lấy tên CDMA, add toàn bộ các file code trong Model Sim vào project này.

43 - Build project, sau khi build, Quatus sẽ tổng hợp ra 1 mạch số,tƣơng ứng với các

khối mà chúng ta đã viết trong code:

Hình 2. 13. Mô hình hệ thống - Cắm 1 đầu dây nối vào kit,1 đầu vào cổng usb của laptop.

- Gán các chân của khối mạch vào các chân muốn sử dụng trên kit.

- Kit DE2 có 2 bộ clock nội là 27MHz và 50MHz,chúng em sử dụng bộ 27MHz. - Các giá trị khởi tạo của data 8 bit đƣợc gán vào 8 switch:SW0 – SW7.

- Các giá trị khởi tạo của khối PN đƣcc gán vào 4 switch;SW14 – SW17. - Đầu ra data 8 bit đƣợc gán vào 8 led:LEDR0 – LEDR7.

- Nút reset đƣợc gán vào nút nhấn KEY0.

44

Kết quả chạy

- Sau khi nạp,nhấn và giữ nút reset (phím KEY0) 1 lúc và thả ra. Kết quả hiển thị trên 8 led.

- 8 led đƣợc gán trên kit đã cho kết quả ra trùng với data đƣợc gán ở các switch, điều đó cho thấy data đã đƣợc trải phổ (nhân với chuỗi pn) và sau đó đã đƣợc giải trải phổ chính xác, cho ra data nhƣ ban đầu.

2.3. Thực hiện hệ thống trải phổ trực tiếp sử dụng chaos 2.3.1. Tổng quan thực hiện hệ thống 2.3.1. Tổng quan thực hiện hệ thống

Tổng quan của quá trình thực hiện trên FPGA gồm các bƣớc nhƣ sau: - Tạo file dữ liệu ban đầu từ Matlab và nạp vào flash trên kit DE2. - Nạp khối trải phổ lên kit và tiến hành trải phổ.

- Tín hiệu sau trải phổ lƣu tại sram đƣợc lấy ra thành 1 file vừa đƣa lên Matlab. - Tiến hành cộng nhiễu trên Matlab và ghi tín hiệu đƣợc cộng nhiễu ra 1 file. - Nạp file đã cộng nhiễu vào flash trên kit và nạp khối giải trải phổ lên kit, tiến

hành giải trải phổ và ghi kết quả ra sram.

- Đọc file sau giải trải phổ từ sram và đƣa lên Matlab để tính toán số lỗi bit và vẽ đƣờng BER.

Sơ đồ qui trình thực hiện nhƣ sau:

Hình 2. 15. Quy trình thực hiện

2.3.2. Khối trải phổ

Để thực hiện việc trải phổ, chúng em sẽ chia thành từng khối nhỏ, mỗi khối có một nhiệm vụ riêng biệt để dễ dàng cho việc viết code và kiểm thử cũng nhƣ chạy mô

45 phỏng trên ModelSim. Sau khi hoàn thành từng khối nhỏ, khối trải phổ chỉ đơn giản là việc ghép các khối nhỏ lại thành một khối hoàn chỉnh. Có một vài lƣu ý là do để tạo đƣợc chuỗi PN chúng ta phải cấp cho khối tạo PN một giá trị ban đầu, việc này chúng em sẽ thực hiện bằng cách nối các đầu vào của khối này với các switch nằm trên kit DE2, khi các switch đóng hay ngắt thì chính là các giá trị 0 hoặc 1 đƣợc đƣa vào. Lƣu ý thứ 2 là việc khởi động cho khối trải phổ bắt đầu hoạt động sẽ đƣợc thực hiện bằng cách nối chân reset của toàn bộ các khối vào một nút bấm trên Kit, nút bấm này chính là để bắt đầu quá trình trải phổ.

Hình 2. 16. Khối trải phổ.

Hình 2. 17. Mô phỏng khối trải phổ trên FPGA

46 Đây là khối quan trọng nhất trong hệ thống, nó có nhiệm vụ tạo ra các xung điều khiển p với khoảng cách thời gian giữa các xung biến đổi theo tính chất hỗn loạn để điều khiển các khối khác hoạt động cũng nhƣ tạo ra chuỗi PN. Do nhiệm vụ khá phức tạp nên chúng em quyết định chia nhỏ khối này thành các khối nhỏ hơn: VPP_PNS_LGMap_21_41,VPP_PNS_Counter_LG_21_41,VPP_PNS_Comparator_L G_21_41 và VPP_PNS_PN_FS:

Hình 2. 18. Sơ đồ khối VPP-PNS Generator

Sau khi ghép các khối nhỏ lại, khối VPP_PNS_Generator_LG_21_41 hoàn chỉnh nhƣ sau:

47 Hình 2. 20. Mô phỏng khối VPP-PNS Generator ModelSim

2.3.2.1.1. Khối tạo chaotic map

Khối này là khối VPP_PNS_LGMap trong sơ đồ tổng quát. Khối này sẽ đƣợc nạp trƣớc loại chaotic map nào mà chúng ta chọn và thực hiện tính toán để đẩy ra lần lƣợt các giá trị tính toán đƣợc từ hàm chaotic map đã đƣợc nạp vào, giá trị này sau đó sẽ đƣợc đẩy vào khối Comparator để so sánh với giá trị của khối Counter (sẽ trình bày sau).

Hình 2. 21. Các loại Chaotic map và giá trị khởi tạo, các hàm tƣơng ứng.

Khối này bao gồm 2 khối nhỏ: S/H (sample and hold) có nhiệm vụ lƣu trữ giá trị hiện thời của hàm chaotic map, khi đƣợc reset nó sẽ đƣợc nạp giá trị ban đầu X0 và mỗi khi có xung start thì lƣu lại giá trị hiện thời của chaotic map ( lấy từ đầu ra của khối tính toán F(.) ) đồng thời đẩy giá trị này ra làm đầu vào của khối tính toán F(.). Khối thứ 2 là khối F(.) có nhiệm vụ tính toán giá trị tiếp theo của hàm chaotic map mỗi khi đầu vào của nó (nhận từ khối S/H) thay đổi giá trị và đẩy giá trị này ra khối Comparator. Nhƣ vậy, khối tổng hợp của 2 khối này sẽ gồm 1 đầu vào nhận xung reset,

48 1 đầu vào nhận xung start và đầu ra X là giá trị hiện thời của hàm chaotic map: VPP_PNS_LGMap_21_41 (star, rst, X).

Có một lƣu ý là trong kit DE2 không thực hiện tính toán với các số thập phân nên chúng em sẽ nhân toàn bộ hàm chaotic map đƣợc chọn với một số nguyên lớn để đƣợc các số nguyên, giảm sai số, quy luật hỗn loạn là không thay đổi.

Ví dụ: hàm tạo giá trị hỗn loạn với logistic map, hệ số trải phổ [21:41]

2 (3.99 (( 1 ) 100) ((20000 1) 200)) 100

X   Xd   d Xd

Với d = 1.075x20000 = 10750x2.

Bƣớc nhảy m = 0.05x10000x2 = 1000/us.

Hệ số trải phổ là giá trị thu đƣợc khi lấy X2 chia cho bƣớc nhảy m. Thực nghiệm thu đƣợc giá trị này hoàn toàn biến đổi liên tục và nằm trong khoảng từ 21 tới 41

Hình 2. 22. Khối tạo Logistic Map

Hình 2. 23. Khối tạo Logistic Map

2.3.2.1.2. Khối tạo bộ đếm

Khối VPP_PNS_Counter_LG_21_41 sẽ thực hiện chức năng này. Khối này có nhiệm vụ sẽ đếm liên tục, tăng 1 đơn vị mỗi khi nhận đƣợc xung clock hệ thống. Mục đích việc đếm này là để so sánh giá trị đếm đƣợc với giá trị hiện tại của hàm chaotic

49 map đƣợc đẩy ra từ khối VPP_PNS_LGMap_21_41. Mỗi khi nó nhận 1 xung restart từ khối so sánh (sẽ trình bày sau) thì sẽ đƣợc reset để đếm lại từ 0 (khi nhận xung reset toàn bộ hệ thống, nó cũng sẽ đƣợc reset về 0) . Nhƣ vậy, khối này sẽ gồm 1 đầu vào nhận xung clock hệ thống, 1 đầu vào nhận tín hiệu reset toàn bộ hệ thống, 1 tín hiệu nhận xung restart từ khối so sánh và 1 đầu ra để đƣa ra giá trị đếm đƣợc: VPP_PNS_Counter_LG_21_41(CLK,RESET, rstCount, COUNT)

Hình 2. 24. Khối tạo bộ đếm

Hình 2. 25. Mô phỏng VPP-PNS Counter trên Model Sim

2.3.2.1.3. Khối so sánh

Khối so sánh là khối VPP_PNS_Comparator_LG_21_41 trong sơ đồ trên. Khối này có nhiệm vụ nhận đầu vào là giá trị đếm từ khối đếm C và từ khối tính toán giá trị hiện thời của hàm chaotic map X (VPP_PNS_Counter_LG_21_41 và VPP_PNS_LGMap_21_41) sau đó so sánh 2 giá trị này nếu nhƣ C = X/m – 2 với m đƣợc gọi là bƣớc nhảy (cũng đã nhân với 10000), m tùy thuộc loại chaotic map đƣợc chọn, thì sẽ xuất ra xung start để bắt đầu quá trình tạo mã PN, xung p để điều khiển hoạt động 1 số khối khác và xung rstcount để reset lại khối đếm VPP_PNS_Counter_LG_21_41. Nhƣ vậy khối này sẽ gồm 2 đầu vào nhận giá trị đếm C và giá trị hiện tại của chaotic map X, đầu vào clock hệ thống để đồng bộ với hoạt

50 động cả hệ thống, các xung điều khiển đầu ra p, rstcount và start: VPP_PNS_Comparator_LG_21_41(clk, rst, C, X, rstCount, start, p)

Hình 2. 26. Khối tạo bộ so sánh.

Hình 2. 27. Mô phỏng VPP-PNS Comparator trên ModelSim

2.3.2.1.4. Khối tạo chỗi giả ngẫu nhiên PN

Khối này là khối VPP_PNS_PN_FS trong sơ đồ trên. Nhƣ đã trình bày trong chƣơng lý thuyết, khối tạo mã PN sẽ là một thanh ghi dịch tập hợp từ một chuỗi các flip-flop, tạo nên từ một đa thức sinh cho trƣớc. Đầu tiên, chúng em sẽ viết code để tạo ra một khối hoạt động nhƣ một flip-flop, flip-flop này sẽ gồm 1 đầu vào nhận xung clock hệ thống, 1 đầu vào reset toàn bộ hệ thống, 1 đầu vào để nhận tín hiệu start (bắt đầu hoạt động để đẩy chuỗi PN ra) lấy từ khối VPP_PNS_Comparator_LG_21_41, 1 đầu vào st để nhận ra trị nạp vào ban đầu (0 hoặc 1), đầu vào tín hiệu d, đầu ra tín hiệu q, đây chính là flip-flop loại D: VPP_PNS_FF_FS(clk, rst, start, st, d, q).

51 Có một điều cần lƣu ý đó là theo nhƣ lý thuyết hoạt động, ngay khi nhận xung start đầu tiên, khối tạo mã PN sẽ ngay lập tức họat động và đẩy ra chuỗi PN tuy nhiên do chúng em sử dụng dữ liệu đầu vào là đọc ra từ flash của kit rồi sau đó mới đẩy từng bit dữ liệu đó ra và nhân với chuỗi PN nên để đồng bộ thời gian từ bit dữ liệu đầu tiên đẩy ra cùng lúc với chuỗi PN đƣợc tạo ra, chúng em sẽ để cho khối PN hoạt động từ xung start thứ 10 (sẽ giải thích kĩ hơn ở phần sau).

Sau khi có đƣợc flip-flop, việc tạo thanh ghi dịch chỉ đơn giản là ghép các flip- flop này với các đƣờng hồi tiếp theo một đa thức sinh cho trƣớc. Chúng em chọn đa

thức sinh 5 4 3

( ) 1

g xx    x x x . Nhƣ vậy ta có thanh ghi dịch có sơ đồ nối chân nhƣ sau:

Hình 2. 29. Thanh ghi dịch trong bộ tạo chuỗi PN

Hình 2. 30. Mô phỏng VPP-PNS PN trên ModelSim

2.3.2.2. Khối tạo xung clock hệ thống

Khối này lấy đầu vào là xung clock 50MHz lấy từ chân clock của kit DE2 và chia clock này thành các clock có tần số thấp hơn dùng làm xung clock cho toàn bộ hệ thống. Lý do chúng em phải chia tần số clock thấp hơn vì hoạt động đọc ghi từ flash và sram hoạt động ở tần số thấp hơn 50MHz. Nhƣ vậy, khối này sẽ gồm 1 đầu vào clk nhận xung clock 50MHz từ chân clock của kit DE2, 1 đầu vào reset chung của toàn bộ hệ thống RESET, và hai đầu ra là hai clock đƣợc chia tần nhỏ hơn CLK1 với tần số

52 50MHz/64 và CLK2 với tần số 50MHz/4: TX_ClockDivider (CLK, RESET, CLK_1, CLK_2), chân CLK2 sẽ đƣợc chúng em dùng để cấp clock cho toàn bộ các khối khác trong hệ thống

Hình 2. 31. Khối chia xung clock

Hình 2. 32. Mô phỏng khối TX_ClockDivider trên ModelSim

Một phần của tài liệu đồ án tốt nghiệp điện tử viễn thông thực hiện hệ thống trải chuỗi trực tiếp với độ rộng bit hỗn loạn trên FPGA (Trang 42)

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

(72 trang)