Recent Posts

Thứ Hai, 15 tháng 8, 2011

Scrambler và Descrambler


Mô tả mạch scrambler và Descrambler:
  Để phục hồi xung đồng hồ, người ta dùng tín hiệu ra từ một kênh (I hoặc Q) EX-OR với chính nó sau khi làm trễ 1/2 bit . Tín hiệu ra có tần số gấp đôi tín hiệu ở mỗi kênh được đưa vào mạch PLL để khóa pha của tín hiệu dao động ở máy thu, để bảo đảm mạch PLL hoạt động tốt yêu cầu tín hiệu phải có sự thay đổi trạng thái thường xuyên, đó là lý do phải sử dụng mạch scrambler. 
Dữ liệu ra khỏi mạch scrambler có giá trị xác định bởi: fm =  fd (A.B.C.D + A’.B’.C’.D’).Khi chuỗi dữ liệu thay đổi giữa 2 trạng thái 0 và 1 bình thường, ngã ra cổng OR ở mức 0, chuỗi dữ liệu qua mạch và không thay đổi. Khi chuỗi dữ liệu liên tiếp là 4 bit 0 hoặc 1,  ngã ra cổng OR lên 1 và dữ liệu đến từ DTE qua cổng EX-OR sẽ bị đảo.  fm =fd 1 = fd’. Như vậy, ở ngã ra mạch không bao giờ vượt quá 4 bit cùng loại.
Ở máy thu, tín hiệu ra từ mạch descrambler thỏa: fr =  fm (A.B.C.D + A’.B’.C’.D’)
Thay fm từ biểu thức trên: : fr =  fd (A.B.C.D + A’.B’.C’.D’) (A.B.C.D + A’.B’.C’.D’).
Vậy:  fr= fd 0 = fd.  Tín hiệu đã được khôi phục.


#include "stdafx.h"
#include <stdio.h>
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
// Nguyên mẫu hàm  //////
int AND(int x,int y,int z,int t);
int NAND(int x,int y,int z,int t);
int OR(int x,int y);
int XOR(int x,int y);
int NOT(int x);
/// Kết thúc nguyên mẫu hàm




///************************************************///////

// Định nghĩa các hàm
int AND(int x,int y,int z,int t)
 {
                if(x&&y&&z&&t) return TRUE;
                else return FALSE;
 }
 int NAND(int x,int y,int z,int t)
 {
                if(x&&y&&z&&t) return FALSE;
                else return TRUE;
 }
 int OR(int x,int y)
 {
                if(x||y) return TRUE;
                else return FALSE;
 }
 int XOR(int x,int y)
 {
                if(x!=y) return TRUE;
                else return FALSE;
 }
 int NOT(int x)
 {
                if(x) return FALSE;
                else return TRUE;
 }
 //////*************************************///////////////
               

//////////////////// Scrambler //////////////////
////   fm = fd XOR (AND(A,B,C,D),NAND(A,B,C,D)) ///////
void scrambler()
{
    int A,B,C,D,fd,fm;
    int k;
                cout<<"Nhap vao tin hieu fd:";cin>>fd;
                cout<<"Tin hieu sau khi ngau nhien hoa:"<<endl;
                cout<<"   A     "<<"B     "<<"C    "<<"D     "<<"fm"<<endl;
                cout<<"\n";

   for(A=FALSE;A<=TRUE;A++)
      for(B=FALSE;B<=TRUE;B++)
         for(C=FALSE;C<=TRUE;C++)
           for(D=FALSE;D<=TRUE;D++)
           {
                  k=OR(AND(A,B,C,D),NAND(A,B,C,D));
                  if(k==FALSE) fm = fd;
                  else fm = NOT(fd);
                                                 
                                                cout<<"   "<<A<<"   "<<"  "<<B<<"   "<<"  "<<C<<"    "<<D<<"     "<<fm<<endl;
           }
}





 //////////////////// Descrambler ///////////////
 /////    fr = fm XOR (AND(A,B,C,D),NAND(A,B,C,D))  ////////
 void descrambler()
 {
                int A,B,C,D,fm,fr;
                int k;
                cout<<"Nhap vao tin hieu fm:";cin>>fm;
                cout<<"Tin hieu sau khi giai ngau nhien:"<<endl;
                cout<<"   A     "<<"B     "<<"C    "<<"D     "<<"fm"<<endl;
                cout<<"\n";
                for(A=FALSE;A<=TRUE;A++)
                  for(B=FALSE;B<=TRUE;B++)
                    for(C=FALSE;C<=TRUE;C++)
                      for(D=FALSE;D<=TRUE;D++)
                      {
                                k=OR(AND(A,B,C,D),NAND(A,B,C,D));
                                if(k==FALSE) fr=fm;
                                else fr = NOT(fm);
                                                cout<<"   "<<A<<"   "<<"  "<<B<<"   "<<"  "<<C<<"    "<<D<<"     "<<fr<<endl;
                      }

 }


int _tmain(int argc, _TCHAR* argv[])
{
                scrambler();
                descrambler();
                system("pause");

                return 0;
}
//// Kết thúc hàm main() 



Không có nhận xét nào:

Đăng nhận xét