PHẦN A
CHƯƠNG I: GIỚI THIỆU VỀ BỘ KIỂM SOÁT CID CHO THUÊ BAO CÓ ĐĂNG KÝ DỊCH VỤ CLI.
I Tổng quát:
1 Mô tả:
Dịch vụ bổ sung CLI cung cấp phương tiện truyền thông tin nhận dạng cuộc gọi từ thuê bao gọi cho thuê bao nhận cuộc gọi băng cách truy xuất tương tự.
Mọi cuộc gọi cho khách hàng có thuê bao dịch vụ CLI sẽ kích khởi việc nối thiết bị điều chế tần số trung tâm với đường truy xuất của khách hàng. Thông tin nhận dạng CLI trên đường dây trong giai đoạn thiết lập cuộc gọi. Thiết bị đầu cuối của khách hàng sẽ giải mã thông tin này và truyền qua máy tính để chương trình xử lí và hiển thị lên màn hình.
2 Đ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ác tầ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ê bao dị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 được mô 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
58 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2442 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bộ kiểm soát CID điện thoại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
neous
**
Abs
Not
Highest
6..Caùc phaùt bieåu tuaàn töï:
Phaùt bieåu gaùn bieán:
Cuù phaùp:
Target := Expression;
Target: phaûi laø bieán cuøng kieåu vôùi kieåu cuûa bieåu thöùc expression.
Phaùt bieåu gaùn tín hieäu:
Cuù phaùp :
Target <= Expression;
Target: phaûi laø tín hieäu cuøng kieåu vôùi kieåu cuûa bieåu thöùc expression.
Phaùt bieåu ñieàu kieän IF:
Cuù phaùp :
If condition then
{Sequential_statement}
{elsif condition then
{sequential_statement}}
[else
{sequential_statement}]
end if;
Phaùt bieåu If phaûi coù ít nhaát 1 phaùt bieåu tuaàn töï .
Phaùt bieåu choïn löïa case: duøng ñeå thay theá cho phaùt bieåu IF coù nhieàu phaùt bieåu ELSIF.
Cuù phaùp:
Case expression is
When choices => {sequential_statement}
{When choices => {sequential_statement}}
End case;
Phaùt bieåu Case hôïp leä neáu coù moät hoaëc nhieàu choïn löïa when .
Phaùt bieåu Loop:
Cuù phaùp:
[Label :][iteration_scheme] loop
{sequential_statement}
{next [label] [when condition];}
{exit [label] [when condition];}
end loop [label];
Phaùt bieåu loop coù 3 daïng:
+ phaùt bieåu loop cô baûn: khoâng coù ñieàu kieän neân chöông trình seõ thoaùt khoûi voøng laëp khi gaëp phaùt bieåu Exit.
Cuù phaùp:
[Label :] loop
{sequential_statement}
end loop [label];
+ While .. loop : chöông trình seõ thoaùt khoûi voøng laëp khi ñieàu kieän condition khoâng ñöôïc thoûa.
Cuù phaùp:
[Label :] while condition loop
{sequential_statement}
end loop [label];
+ For .. loop: laëp vôùi soá voøng laëp ñöôïc bieát tröôùc.
Cuù phaùp:
[Label :] for identifier in range loop
{sequential_statement}
end loop [label];
Phaùt bieåu Next: ñöôïc duøng trong caùc voøng laëp, vieäc thöïc thi seõ boû qua caùc leänh phía sau leänh Next trong voøng laëp.
Cuù phaùp:
Next [label] [when condition];
Phaùt bieåu Exit: chöông trình thoaùt khoûi voøng laëp khi gaëp leänh Exit.
Cuù phaùp:
Exit [label] [when condition];
Goïi chöông trình con:
+ Goïi thuû tuïc :
Procedure_name [([name =>] expression
{ , [name =>] expression})];
+ Goïi haøm :vì haøm traû veà giaù trò neân khi goïi ta phaûi ñaët noù trong moät expression.
Vd:
V := INVERT (V1) xor 1;
Phaùt bieåu Return: traû veà giaù trò khi haøm ñaõ thöïc thi xong.
Cuù phaùp :
Return expression ; (duøng cho function)
Return ; (duøng cho procedure)
Phaùt bieåu Wait: khi gaëp phaùt bieåu naøy thì vieäc thöïc thi seõ döøng laïi ñeán khi ñieàu kieän ñöôïc thoûa.
Cuù phaùp :
+ Wait until signal = value;
+ Wait until signal'event
and signal = value;
+ Wait until not signal'stable
and signal = value;
Phaùt bieåu Null: laø phaùt bieåu töôøng minh, khi gaëp phaùt bieåu thì chöông trình khoâng laøm gì caû.
Cuù phaùp :
Null;
7..Phaùt bieåu ñoàng thôøi:
Caùc phaùt bieåu ñoàng thôøi ñöôïc ñaët ôû vò trí giöõa Begin vaø End cuûa phaàn Architecture.
Phaùt bieåu process:
Cuù phaùp nhö ñaõ trình baøy.
Phaùt bieåu block :
Cuù phaùp:
Label : block
{block_declarative_item}
Begin
{concurrent_statement}
end block [label];
Goïi thuû tuïc: töông töï nhö trong phaùt bieåu tuaàn töï, nhöng ñöôïc goïi trong moät khoái (block) hoaëc trong moät kieán truùc (architecture).
Gaùn tín hieäu ñoàng thôøi:
Cuù phaùp:
Target <= expression;
Gaùn tín hieäu ñieàu kieän:
Cuù phaùp:
Target <= {expresion when condition else}
expresion;
- Gaùn tín hieäu choïn löïa:
Cuù phaùp:
With choice_expression select
Target <= {exprssion when choices, }
expression when choices;
Component instantiation : Tham khaûo ñeán moät thaønh phaàn phaàn cöùng ñöôïc ñònh nghóa tröôùc.
Cuù phaùp:
Instance_name : Component_name port map (
[port_name => ] expression
{, [port_name =>] expression});
Generate statement : coù 2 loaïi:
+ For .. generate statement
Cuù phaùp:
Label : For identifier in range generate
{concurrent_statement}
end generate [label];
+ If .. generate statement:
Cuù phaùp :
Label : If expression generate
{concurrent_statement}
end generate [label];
CHÖÔNG III
GIÔÙI THIEÄU PHAÀN MEÀM XILINX FOUNDATION Series 2.1i
I..Yeâu caàu phaàn cöùng:
+Boä xöû lyù Pentium Pro trôû leân.
+Heä ñieàu haønh Window 9x hay NT4.0 trôû leân.
+Toác ñoä xung 120MHz trôû leân.
+Boä nhôù chính 48MB trôû leân.
+Swap file 48MB trôû leân.
+Khoâng gian ñóa cöùng troáng 2GB.
+Maøn hình SVGA 17” trôû leân.
+CD ROM 4x trôû leân (optional).
+Baøn phím.
+Chuoät hai hay ba nuùt nhaán.
Chuù yù: Neáu caáu hình maùy thaáp hôn yeâu caàu thì thôøi gian chaïy chöông trình seõ laâu hôn.
II..Caøi ñaët chöông trình:
1..Coù ñóa CD source chöông trình ôû oå CD ví duï oå E. Choïn Start-Run, goõ vaøo leänh E:\setup.exe.
2..Laøm theo caùc höôùng daãn treân maøn hình.
Chuù yù : ta choïn caùc option (xem hình sau)
Ta choïn hoï XC4000XL ñeå caøi ñaët:
Trong quaù trình caøi ñaët phaàn meàm yeâu caàu Name, Company, vaø CDKey. Ñieàu naøy coù nghóa laø ngöôøi söû duïng phaûi ñöôïc caáp baûn quyeàn söû duïng phaàn meàm.
III..Sô löôïc veà caùch söû duïng chöông trình:
1..Taïo project:
Sau khi caøi ñaët, seõ xuaát hieän link treân menu Start vaø moät bieåu töôïng Project Manager treân desktop. Kích ñoâi vaøo bieåu töôïng naøy ñeå chaïy chöông trình.
Treân maøn hình seõ hieän baûng thoâng baùo yeâu caàu môû moät project coù saün hay laø taïo moät project môùi. Ví duï ôû ñaây ta choïn taïo moät project môùi. Nhaäp vaøo teân cuûa project laø add4bit, choïn thieát keá theo VHDL, kích vaøo OK.
2..Nhaäp chöông trình:
Kích vaøo bieåu töôïng treân löu ñoà thieát keá treân maøn hình ôû phaàn Design Entry, hoaëc kích Tool-Design Entry-HDL Editor. Moät cöûa soå hieän ra yeâu caàu choïn caùc option sau: taïo taøi lieäu roãng, môû taøi lieäu coù saün hay laø choïn thieát keá duøng Wizard. Theo caùch truyeàn thoáng, ta coù theå choïn thieát keá HDL, ta choïn Create Empty vaø kích OK. Moät window troáng xuaát hieän chôø ta nhaäp chöông trình vaøo.
Ta goõ vaøo chöông trình coäng hai soá taùm bit nhö sau:
Library dls_ieee;
Use dls_ieee.std_logic_1164.all;
Use dls_ieee.std_logic_arith.all;
entity add4bit is
port ( a,b : in std_logic_vector(0 to 7);
clk : in std_logic;
reset : in std_logic;
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));
end loop ;
if carry='0' then crry <= '0';else crry <= '1'; end if;
end if;
end process;
cout <= crry;
end add4bit_behavioral;
3..Kieåm tra cuù phaùp:
Sau ñoù ta Save laïi vôùi teân file laø add4bit.vhd. Sau ñoù kích Synthesis-CheckSyntax. Phaàn meàm seõ chaïy kieåm tra cuù phaùp chöông trình vaø baùo loãi baèng daáu nhaéc maøu ñoû ôû doøng leänh coù loãi. Cuï theå laø doøng 1, 2, 3 vì khoâng coù thö vieän dls_.ieee.std_logic maø chæ coù thö vieän ieee.std_logic. Ta xoùa bôùt ñi caùc kí töï dls_, Save laïi chöông trình vaø Check Syntax laïi, cho ñeán khi nhaän ñöôïc thoâng baùo Check Successful.
Tieáp ñeán ta kích vaøo Project-Add to Project. Ñeå nhaäp source code chöông trình cho Project.
Quay trôû laïi vôùi Project Manager, ta thaáy beân traùi maøn hình ñaõ coù theâm moät file coù teân add4bit.vhd ôû beân döôùi project add4bit ñaõ ñöôïc ñaùnh daáu xanh, vaø beân phaûi ôû phaàn Design Entry cuõng ñaõ ñöôïc ñaùnh daáu maøu xanh. Coù nghóa laø böôùc thöù nhaát ñaõ hoaøn thaønh.
4..Toång hôïp:
Ta sang böôùc thöù hai laø toång hôïp. Kích vaøo bieåu töôïng Synthesis beân döôùi bieåu töôïng Design Entry ( hoaëc laø kích vaøo menu Synthesis-Synthesize). Phaàn meàm seõ hieän leân maøn hình yeâu caàu ta nhaäp thoâng soá vaøo, ta choïn hoï IC laø XC4000XL, Device: 4002XLPC84, Speed: xl-09, Version name: ver1 caùc phaàn khaùc seõ töï ñoäng ñöôïc theâm vaøo. Kích vaøo Run, phaàn meàm seõ toång hôïp cho ta. Cho ñeán khi phaàn bieåu töôïng Synthesis cuõng ñöôïc ñaùnh daáu maøu xanh ( hoaëc daáu chaám than maøu xanh töùc laø coøn warning, nhöng cuõng chaïy moâ phoûng ñöôïc).
5..Moâ phoûng:
Ta sang böôùc thöù ba laø chaïy moâ phoûng chöông trình baèng caùch kích vaøo bieåu töôïng Simulation keá beân bieåu töôïng Synthesis. Chöông trình seõ môû ra moät cöõa soå môùi chôø ta nhaäp caùc chaân vaøo, ta kích vaøo bieåu töôïng Add Signal treân thanh menu ( hoaëc kích vaøo Signal-Add Signals). Moät danh saùch caùc port seõ hieän ra cho ta choïn, ta chæ choïn caùc port maø ta khai baùo ôû trong entity( caùc port khaùc phaàn meàm töï taïo ra thì khoâng caàn) baèng caùch kích ñoâi vaøo port ñoù. Sau ñoù kích Close ñeå ñoùng cöõa soå Add Signal laïi.
Ñeå gaùn xung clock cho port, ta môû cöõa soå Stimulatior Selection baèng caùch kích vaøo Signal – Add Stimulatior. Khi cöõa soå hieän ra ta ñaùnh daáu vaøo node clk vaø kích vaøo vò trí cuûa B0 ( oâ cuoâí cuøng beân phaûi cuûa haøng Bc:, beân phaàn node clk seõ xuaát hieän chöõ B0. Ñeå choïn taàn soá cho xung clock, ta kích Option – Preferences. Moät baûng Preferences hieän leân. Ôû oâ B0 Frequency ta choïn 100MHz, kích OK.
Ñeå gaùn giaù trò cho node a coù giaù trò töø 0 ñeán 100, ta kích vaøo Formula… cuûa cöõa soå Stimulatior Selection. Cöõa soå Set Formulas hieän ra. Kích ñuùp vaøo F0:, ñaùnh daáu vaøo oâ “Use WFM macro format”, kích vaøo “Wizard”. Cöõa soå Waveform hieän ra. Ta choïn Increment trong oâ Waveform; 100ns trong oâ Start; choïn Low trong oâ Initial; choïn 100 trong oâ Repeat the state sequence or modify the state for the selected number of times; choïn 100ns trong oâ Modify Signal; choïn 1 trong oâ By. Sau ñoù kích OK.
Cöõa soå Set Formulas xuaát hieän doøng 100 ns=L (100ns=inc by 1) * 1 trong oâ Edit formula:. Ta kích Accept – Close. Quay trôû laïi vôùi cöõa soå Stimulatior Selection, choïn node a ôû cöõa soå Waveform vaø kích vaøo F0 (oâ cuoái cuøng beân phaûi cuûa haøng Form:.
Ñeå gaùn tín hieäu ñaàu vaøo baèng tay ( qua baøn phím) cho node reset, ta kích vaøo bieåu töôïng phím z treân cöõa soå Stimulatior Selection roài reâ noù thaû vaøo node reset. Sau khi gaùn giaù trò xong thì phím z seõ ñieàu khieån node ñoù (nhaán 1 laàn thì gaùn low, nhaán tieáp thì gaùn high).
Ñeå gaùn tín hieäu ñaàu vaøo cho node b laø haèng soá, ta kích chuoät phaûi vaøo vuøng moâ phoûng, choïn edit, ñaùnh daáu vaøo haøng cuûa b baèng caùch reâ chuoät, sau ñoù nhaäp giaù trò vaøo oâ bus treân baûng text vector state vaø kích vaøo bus.
Trong oâ thôøi gian chaïy töøng böôùc ta choïn 100ns.
Kích töøng caùi moät vaøo bieåu töôïng trace ñeå xem chöông trình chaïy moâ phoûng töøng böôùc moät. Trong thôøi gian chaïy ta coù theå nhaán phím z ñeå thay ñoåi giaù trò cuûa reset.
Hoaëc ta coù theå cho chaïy moâ phoûng moät laàn baèng caùch kích Option – Start Long Simulation. Moät baûng thoâng baùo hieän ra cho ta choïn thôøi gian chaïy moâ phoûng (default = 10giaây), kích Start. Keát quaû seõ hieän ra trong cöõa soå Waveform.
Ñeå ñoåi ñaàu ra caùc signal sang daïng soá thaäp phaân (hay nhò phaân, baùt phaân) ta kích chuoät phaûi vaøo signal ñoù, choïn Bus – Display Decimal. Hoaëc cuõng coù theå xem ñaàu ra töøng bit moät baèng caùch choïn Flatten.
Ngoaøi caùch thieát keá daïng VHDL, chuùng ta coøn coù theå thieát keá daïng Schematic, hay daïng State.
PHAÀN B
CHÖÔNG I: SÔ ÑOÀ KHOÁI VAØ CHÖÙC NAÊNG HOAÏT ÑOÄNG CAÙC KHOÁI
I..Thieát keá baèng phöông phaùp TopDown design :
Ta duøng phöông phaùp TopDown Design ñeå thieát keá moät khoái, maø khoái naøy ta duøng ngoân ngöõ VHDL ñeå thieát keá vaø moâ phoûng treân phaàn meàm Foundation. Khoái naøy thöïc hieän chöùc naêng laáy döõ lieäu FSK, ñeám thôøi gian ñaøm thoaïi vaø chuyeån chuùng sang maùy tính deå maùy tính xöû lyù. Ñeå thieát keá khoái naøy ta phaân chia khoái naøy ra thaønh 6 khoái nhoû (khoái Ser-Par, MuxData, Buffer, Uart2d, Timer, Controlbus) ñôn giaûn vaø deã thieát keá hôn, moãi khoái nhoû thöïc hieän moät chöùc naêng rieâng vaø khi keát noái chuùng laïi ta seõ taïo ra khoái caàn thieát keá, caùc khoái nhoû naøy ñôn giaûn ta coù theå duøng ngoân ngöõ VHDL ñeå thieát keá. Chæ coù khoái UART2D coøn khaù phöùc taïp vieäc thieát keá tröïc tieáp khoái naøy baèng VHDL khaù khoù khaên neân ta tieáp tuïc chia nhoû noù ra thaønh 6 khoái nhoû hôn (Ser-par, Muxuart, Rwbuf (söû duïng 2 laàn), Demuxuart, Par-ser) ñeå tieän cho vieäc thieát keá. Vieäc phaân chia naøy ta coù theå minh hoïa nhö hình veõ sau:
Quaù trình phaân chia nhö treân laø raát caàn thieát, noù ñaûm baûo cho vieäc thieát keá khoái lôùn chính xaùc vaø deã daøng. Vieäc kieåm nghieäm keát quaû ñôn giaûn hôn taïo thuaän lôïi cho ngöôøi thieát keá kieåm tra keát quaû thieát keá sau khi ñaõ thieát keá xong.
II..Sô ñoà khoái cuûa maïch moâ phoûng:
CMX
602A
FSK
Line detect
Clock
Serpar
Mux
data
Timer
Buffer
Controlbus
UART2D
Sô ñoà khoái maïch thieát keá
bus
III..Chöùc naêng vaø hoaït ñoäng caùc khoái:
1..CMX602A:
Laø khoái nhaän tín hieäu töø ñöôøng daây ñieän thoaïi, phaùt hieän chuoâng, ñaûo cöïc, ñieàu cheá tín hieäu FSK thaønh daïng tín hieäu data ôû möùc logic vaø xuaát qua chaân RXD ñeå ñeán boä chuyeån töø serial sang parallel.
2..Line detect:
Laø khoái phaùt hieän traïng thaùi nhaác gaùc maùy cuûa thueâ bao, tín hieäu ñaûo cöïc treân ñöôøng daây ñieän thoaïi.
3..Clock:
Khoái naøy nhaän xung clock 3.579545MHz ñöôïc caáp töø thaïch anh vaø chia taàn soá ñeå coù ñöôïc caùc tín hieäu clksec coù taàn soá 1Hz (ñeå caáp cho boä ñeám giôø), tín hieäu clkfsk taàn soá 1200Hz (ñeå caáp cho CMX602A khi nhaän ñöôïc tín hieäu yeâu caàu töø CMX602A :chaân IRQN xuoáng thaáp), vaø clk8fsk taàn soá 150Hz ñeå caáp cho caùc khoái ñeå ñoàng boä xung nhòp.
4..Serpar:
Laø khoái nhaän data ñi ra ôû chaân RXD cuûa CMX602A ôû daïng noái tieáp vaø chuyeån noù sang daïng song song ñeå qua Mux_data vaøo boä ñeäm döõ lieäu.
5..Timer:
Nhaän caùc tín hieäu ñieàu khieån vaø baét ñaàu ñeám giôø töø luùc cuoäc goïi ñöôïc thieát laäp cho ñeán khi keát thuùc. Ñaàu ra laø data daïng 8 bit song song, vaø moät alarm ñeå baùo cho khoái ñieàu khieån bieát söï thay ñoåi döõ lieäu ôû ñaàu ra.
6..Mux_data:
Laø boä choïn data. Ñaàu vaøo laø FSK ñaõ chuyeån sang daïng song song, data cuûa boä ñeám giôø (giôø, phuùt, giaây) cuûa khoái Timer. Ñaàu ra laø data 8 bit song song, laø moät trong nhöõng data vaøo tuyø thuoäc vaøo ñaàu vaøo ñieàu khieån driver.
7..Buff:
Laø boä ñeäm döõ lieäu, ñoïc döõ lieäu töø ñaàu ra cuûa mux_data, löu vaøo caùc ñòa chæ coá ñònh vaø chôø yeâu caàu töø boä giao tieáp UART.
8..UART:
Khoái giao tieáp vôùi maùy tính qua coång COM, thu phaùt ñoàng dò boä. Nhaän döõ lieäu töø buffer, tín hieäu ñieàu khieån töø boä xöû lí vaø töø maùy tính qua coång COM ñeå hoaït ñoäng.
9..Controlbus:
Khoái naøy laø boä ñieàu khieån caùc khoái khaùc hoaït ñoäng. Noù nhaän vaøo caùc tín hieäu töø line detect, clock vaø phaân coâng vieäc cho caùc khoái khaùc.
Ôû ñaây, trong ñeà taøi naøy chuùng em duøng maïch ñieän töû cho hai khoái CMX602A ñeå nhaän bieát chuoâng, nhaän vaø giaûi ñieàu cheá tín hieäu FSK; vaø maïch nhaän bieát traïng thaùi ñöôøng daây Line detect (nhaän bieát traïng thaùi nhaác gaùc maùy cuûa thueâ bao vaø nhaän bieát ñaûo cöïc). Caùc khoái coøn laïi thì chuùng em thieát keá baèng VHDL vaø cho chaïy moâ phoûng treân phaàn meàm Xlinx Foundation Series 2.1i.
CHÖÔNG II: THIEÁT KEÁ MAÏCH CHI TIEÁT
I..Giôùi thieäu caùc linh kieän ñieän töû söû duïng trong maïch:
1..IC CMX602A (Calling Line Indentifier):
a..Sô ñoà khoái:
Xtal Osc and
Clock divider
Power Supply
Circuits
Bandpass
Filter
Bandpass
Filter
Bandpass
Filter
Bandpass
Filter
Bandpass
Filter
Bandpass
Filter
AOP
RD
NINV
Vdd
Vbias
Vss
RD
XTAL
XTALN
MODE
RXD
RXCK
DET
ZP
RXCK
b..Sô ñoà chaân:
XTAL 1 16 Vdd
XTALN 2 15 RXD
RD 3 14 RXCK
RT 4 13 DET
AOP 5 12 IRQN
INV 6 11 ZP
NINV 7 10 MODE
Vss 8 9 Vbias
Pin1
XTALN
(O/P)
Ngoõ ra cuûa boä dao ñoäng ñaûo.
Pin2
XTAL
(I/P)
Ngoõ vaøo cuûa boä dao ñoäng ñaûo.
Pin3
RD
(I/P)
Ngoõ vaøo cuûa chuoâng hay phaùt hieän ñaûo cöïc.
Pin4
RT
(BI)
Ngoõ ra hôû, ngoõ vaøo Schmitt trigger laøm boä phaän cuûa chuoâng (Line Polarity Reversal Detector). Moät ñieän trôû beân ngoaøi noái Vdd vaø moät tuï noái Vss cuøng maéc vaøo RT ñeå loïc vaø môû roäng tín hieäu vaøo cho RD.
Pin5
AOP
(BI)
Ngoõ ra cuûa boä khueách ñaïi tín hieäu vaøo.
Pin6
INV
(I/P)
Ngoõ vaøo ñaûo cuûa boä khueách ñaïi tín hieäu vaøo.
Pin7
NINV
(I/P)
Ngoõ vaøo khoâng ñaûo cuûa boä khueách ñaïi tín hieäu vaøo.
Pin8
Vss
(Power)
Nguoàn aâm noái ñaát.
Pin9
Vbias
(O/P)
Aùp phaân cöïc ñöôïc taïo ra beân trong baèng Vdd/2 khi thieát bò khoâng ôû mode “Zero Power”.
Pin10
MODE
(I/P)
Ngoõ vaøo duøng ñeå choïn mode.
Pin11
ZP
(I/P)
Möùc cao ngoõ nhaäp naøy choïn mode “ZeroPower”. Möùc thaáp môû nguoàn Vbias cho boä khueách ñaïi tín hieäu vaøo, boä loïc thoâng (BandPass Filter) vaø cho pheùp nhaän FSK hay Tone Alert phuï thuoäc vaøo ngoõ nhaäp Mode.
Pin12
IRQN
(O/P)
Ngoõ ra tích cöïc möùc thaáp coù theå ñöôïc duøng laøm ngoõ nhaäp Interrupt Request/Wake up cho boä xöû lyù. Neân noái ngoõ ra naøy vôùi Vdd qua moät ñieän trôû.
Pin13
DET
(O/P)
Ngoõ ra möùc logicñöôïc laùi bôûi chuoâng hay Line Polarity Detect, Tone Alert Detect hay maïch phaùt hieän FSK tuyø thuoäc vaøo Mode hoaït ñoäng.
Pin14
RXCK
(I/PS)
Ngoõ nhaäp duøng laøm clock cho caùc bit data nhaän ñöôïc töø khoái FSK Retiming.
Pin15
RXD
(O/P)
Ngoõ ra ôû möùc logic, laø ngoõ ra cuûa boä giaûi maõ ñieàu cheá FSK (FSK Demodulatior) hoaëc caùc kyù töï 8 bit ñöôïc ñònh thôøi laïi tuyø thuoäc vaøo traïng thaùi RXCK.
Pin16
Vdd
(Power)
Nguoàn ñieän döông, caùc möùc logic vaø aùp theàm beân trong IC tæ leä vôùi ñieän aùp naøy.
c..Moâ taû toång quaùt:
+Möùc logic ñieàu khieån mode:
Mode hoaït ñoäng cuûa CMX602A, caùc ngoõ ra DET vaø IRQN ñöôïc xaùc ñònh baèng caùc möùc logic ñöôïc ñöa vaøo caùc chaân nhaäp MODE vaø ZP.
ZP
MODE
Mode
DET
0
0
Tone Alert Detect
Tone Alert Signal Detect
0
1
FSK Receiver
FSK Level Receiver
1
x
“Zero Power”
Ring or Line Polarity reversal
+Khueách ñaïi tín hieäu nhaäp (Input Signal Amplifier):
Boä khueách ñaïi naøy duøng ñeå chuyeån caùc tín hieäu FSK caân baèng nhaän ñöôïc treân ñöôøng daây ñieän thoaïi thaønh caùc tín hieäu khoâng caân baèng coù bieân ñoä ñuùng cho maïch nhaän FSK.
Vbias
NINV
INV
R8
R9
R7
C6
C7
R10
AOP
Vss
R6
Boä khueách ñaïi tín hieäu vaøo vôùi ngoõ nhaäp caân baèng.
+Phöông trình thieát keá cho maïch naøy laø:
Ñoä lôïi aùp vi phaân:
VAOP/V(b-a)=R8/R6
R6=R7=470Kohm;
R10=160Kohm
R9=R8xR10/(R8-R10)
Ñoä lôïi aùp vi phaân cuoái cuøng phuï thuoäc vaøo möùc tín hieäu mong muoán giöõa daây A vaø B vaø möùc theàm cuûa CMX602A ( möùc naøy tæ leä vôùi aùp nguoàn) CMX602A ñöôïc thieát keá ñeå ñaùp öùng caùc ñaëc tính öùng duïng vôùi:
R8 = 430Kohm ôû VDD=3V.
680Kohm ôû VDD=5V
R9 = 240Kohm ôû VDD=3V
200Kohm ôû VDD=5V
Boä khueách ñaïi tín hieäu nhaäp coøn ñöôïc duøng vôùi nguoàn tín hieäu khoâng caân baèng. Giaù trò R6 vaø R8 gioáng nhö tröôøng hôïp ngoõ nhaäp caân baèng.
AOP
NINV
INV
R8
C6
Vss
R6
Vbias
+Boä loïc thoâng (Bandpass Filter):
Boä loïc thoâng duøng ñeå trieät tieâu caùc tín hieäu nhieãu neáu khoâng chuùng coù theå ñi ñeán maïch FSK Demodulatior, Tone Alert Detector vaø Level Detector.
+Level Detector:
Khoái naøy hoaït ñoäng baèng caùch ño möùc tín hieäu ôû ngoõ ra cuûa boä loïc thoâng vaø so saùnh noù vôùi möùc theàm, möùc theàm phuï thuoäc vaøo vieäc choïn löïa mode FSK Receive hay mode Tone Alert Detector.
Ôû mode Tone Alert Detector, ngoõ ra cuûa khoái Level Detector cung caáp ngoõ ra cho boä Tone Alert Signal Detector.
Ôû mode FSK Receive, ngoõ ra DET cuûa CMX602A seõ ñöôïc set leân cao khi möùc naøy vöôït cao hôn möùc theàm trong moät khoaûng thôøi gian ñuû laâu. Vieäc taïo treã thôøi gian vaø bieân ñoä ñöôïc duøng ñeå laøm giaûm söï nhaáp nhoâ cuûa tín hieäu ôû ngoõ ra DET.
Chuù yù ôû mode FSK Receive maïch naøy cuõng ñaùp öùng vôùi nhöõng tín hieäu khoâng thuoäc daïng FSK nhö tieáng noùi.
+Giaûi ñieàu cheá FSK (FSK Demodulator):
Khoái naøy chuyeån ñoåi tín hieäu nhaäp FSK 1200 baud thaønh tín hieäu data ôû möùc logic vaø xuaát qua chaân RXD mieãn laø chöùc naêng DataRetiming ñöôïc pheùp. Khi khoâng coù tín hieäu FSK hôïp leä, boä giaûi ñieàu cheá coù theå dieãn dòch sai lôøi noùi vaø caùc tín hieäu vöôït troäi khaùc.
+Ñònh thôøi data FSK (Data Retiming):
Khoái Data Retiming taùch ra taùm bit data cuûa moãi töø töø chuoãi data baát ñoàng boä nhaän ñöôïc vaø ñöa chuùng vaøo boä xöû lí döôùi söï ñieàu khieån cuûa caùc xung nhòp ñöôïc ñöa vaøo ngoõ nhaäp RXCK. Khoái naøy döïa treân cô sôû töøng kí töï baèng caùch tìm mark ñeå taùch khoaûng caùc böôùc chuyeån baùo hieäu baét ñaàu baèng bit start. Sau ñoù duøng moác naøy ñeå tham chieáu thôøi gian, laáy maãu ngoõ xuaát cuûa boä FSK Demodulator ôû khoaûng giöõa caùc bit data trong taùm bit nhaän ñöôïc tieáp theo, löu tröõ keát quaû trong thanh ghi dòch chuyeån taùm bit beân trong.
Khi bit thöù taùm vöøa ñöôïc ñöa vaøo thanh ghi dòch, CMX602A xem xeùt ngoõ nhaäp RXCK, neáu noù ôû möùc thaáp thì ngoõ xuaát IRQN seõ ñöôïc keùo xuoáng thaáp vaø bit data ñaàu tieân seõ ñöôïc ñaët treân chaân xuaát RXD. Khi phaùt hieän ngoõ xuaát IRQN ñi xuoáng thaáp thi boä xöû lí seõ ñöa chaân RXCK leân taùm laàn. Böôùc chuyeån cao xuoáng thaáp ôû cuoái xung thöù baûy seõ ñöôïc CMX602A duøng ñeå dòch bit data keá tieáp töø thanh ghi leân ngoõ ra RXD. Ngoõ xuaát IRQN seõ ñöôïc clear luùc ngoõ nhaäp RXCK leân cao laàn ñaàu.
RXCK Input
IRQN Output
RXDOutput
STOP
START
1
2
3
4
5
6
7
8
Receiver charracter “n”
Output of FSK demodulatior
Data Retiming
FSK hoaït ñoäng vôùi Data Retiming
Do ñoù ñeå theå hieän chöùc naêng Data Retiming, ngoõ nhaäp RXCK phaûi ñöôïc giöõ ôû möùc thaáp cho ñeán khi ngoõ xuaát RXCK xuoáng thaáp. Neáu khoâng caàn chöùc naêng Data Retiming thì ngoõ nhaäp RXCK phaûi ñöôïc giöõ ôû möùc cao.
Haïn cheá duy nhaát laø khi ñònh thôøi daïng soùng RXCK ñöôïc bieåu dieãn treân hình treân caàn hoaøn thaønh quaù trình truyeàn taùm bit ñeán boä xöû lí trong voøng 8.3ms. Ngoaøi ra, khoái Data Retiming seõ dòch tín hieäu FSK Channel Seizure thaønh caùc töø hôïp leä vôùi giaù trò 55 (hex). Töông töï noù cuõng coù theå dieãn dòch tieáng noùi hay nhöõng tín hieäu khaùc thaønh nhöõng kí töï ngaãu nhieân.
Neáu khoâng caàn Data Retiming thì thì ngoõ nhaäp RXCK vaøo CMX602A phaûi ñöôïc giöõ ôû möùc cao. Do data baát ñoàng boä töø FSK Demodulator, luùc ñoù seõ ñöôïc noái tröïc tieáp ra ngoõ xuaát RXD vaø ngoõ xuaát IRQN seõ khoâng ñöôïc tích cöïc bôûi tín hieäu FSK. Tröôøng hôïp naøy minh hoïa nhö hình sau:
STOP
START
1
2
3
4
5
6
7
8
Receiver charracter “n”
Output of FSK demodulatior
STOP
START
1
2
3
4
5
6
7
8
Receiver charracter “n”
RXD Output
FSK hoaït ñoäng khoâng coù Data Retiming
+Tone Alert Detector:
Khoái naøy ñöôïc cho pheùp khi CMX602A ñöôïc ñaët ôû mode Tone Alert Detect. Luùc ñoù noù seõ theo doõi tín hieäu nhaän ñöôïc xem coù caùc tone 2130 vaø 2750Hz ôû möùc ñuû cao vaø thôøi gian ñuû laâu khoâng.
Hai boä loïc thoâng ôû 2130 vaø 2750Hz ñöôïc duøng trong khoái naøy ñeå loaïi boû tín hieäu caûn trôû.
Ngoõ xuaát DET cuûa CMX602A ñöôïc ñaët ôû cao trong khi tín hieäu Tone Alert ñöôïc phaùt hieän.
Khi ngoõ xuaát DET xuoáng thaáp ôû cuoái tín hieäu Tone Alert, neáu ngoõ xuaát DET ôû cao trong khoaûng thôøi gian naèm trong thôøi löôïng TqCAS thì ngoõ xuaát IRQN seõ ñöôïc keùo xuoáng thaáp cho ñeán khi CMX602A ñöôïc chuyeån khoûi mode Tone Alert. Chuù yù raèng thôøi löôïng TqCAS ñöôïc laáy toái öu ñeå phaùt hieän caùc tín hieäu Tone Alert töø 75ms ñeán 85ms ñöôïc duøng trong caùc tín hieäu “on hook”.
+Maïch phaùt hieän chuoâng treân ñöôøng daây (Ring Detector):
Maïch naøy duøng ñeå phaùt hieän coù tín hieäu chuoâng hay ñaûo cöïc treân ñöôøng daây keát hôïp vôùi Protocol Calling Identification (seõ trình baøy ôû phaàn sau).
A
D1
R2
R4
C5
R1
ZP
Vss
D4
D2
D3
B
R3
C3
C4
R5
Vdd
RD
A
B
RT
MODE
IRQN
DET
X
Khi khoâng coù tín hieäu treân ñöôøng daây, RD ôû möùc Vss vaø RT ñöôïc keùo leân Vdd. Khi ñoù ngoõ ra cuûa “Schmitt Trigger B” ôû möùc thaáp.
Khi coù tín hieäu chuoâng treân ñöôøng daây, nhö moät aùp AC ñöa lieân tieáp vaøo A, B vaø seõ ñi qua C3 vaø R3 hoaëc C4 vaø R4 ñeå xuaát hieän ôû ñaàu treân R1 döôùi daïng ñöôïc chænh löu vaø suy giaûm.
Tín hieäu ôû ñieåm X ñöôïc laøm suy giaûm theâm bôûi boä phaân aùp ñöôïc hình thaønh bôûi R1 vaø R2 tröôùc khi ñöôïc ñöa vaøo ngoõ nhaäp RD cuûa CMX602A. Neáu bieân ñoä cuûa tín hieäu xuaát hieän ôû RD lôùn hôn theàm ngoõ nhaäp (Vthi) cuûa “Schmitt Trigger A” thì tranzitor N noái vôùi RT seõ ñöôïc môû, keùo aùp ôû RT xuoáng Vss baèng caùch xaû tuï C5 beân ngoaøi. Ngoõ xuaát cuûa “Schmitt Trigger B” luùc ñoù seõ leân cao, tích cöïc ngoõ xuaát cuûa DET hoaëc IRQN tuyø thuoäc vaøo traïng thaùi cuûa ngoõ nhaäp ZP, MODE.
Bieân ñoä toái thieåu cuûa tín hieäu chuoâng maø chaéc chaén seõ ñöôïc phaùt hieän laø:
(0.7+Vthi*[R1+R2+R3]/R2)*0.707Vrms
vôùi Vthi laø aùp ngöôõng leân cao cuûa “Schmitt Trigger A”.
+Xtal Osi vaø Clock Dividers:
C1
C2
XTAL
XTALN
30579545MHz
Ñoä chính xaùc cuûa taàn soá vaø thôøi gian cuûa CMX602A ñöôïc xaùc ñònh baèng caùc clock 3.579545MHz coù ôû pin XTAL. Clock naøy ñöôïc taïo ra baèng boä dao ñoäng ñaûo treân chip duøng caùc thaønh phaàn beân ngoaøi C1 vaø C2 vaø X1 cuûa hình döôùi ñaây vaø coù theå ñöôïc cung caáp töø nguoàn beân ngoaøi vaøo ngoõ nhaäp XTAL, trong tröôøng hôïp naøy C! vaø C2 khoâng ñöôïc gaén vaøo.
Boä dao ñoäng bò taét ôû mode “Zero Power”. Neáu clock ñöôïc cung caáp töø nguoàn ngoaøi maø chaïy khoâng thöôøng xuyeân thì ngoõ nhaäp ZP seõ ñöôïc ñöa leân cao khi clock khoâng coù. Chuù yù tröôøng hôïp naøy coù theå taïo traïng thaùi khoâng xaùc ñònh ôû ngoõ ra RXD, DET,IRQN.
+Öùng duïng:
Heä thoáng ñöôïc moâ taû trong phaàn naøy hoaït ñoäng khi maùy ñieän thoaïi ñang ôû traïng thaùi “on_hook” (gaùc maùy) ñeå hieån thò soá maùy goïi tôùi tröôùc khi ngöôøi nhaän ñieän quyeát ñònh coù traû lôøi hay khoâng.
2
6
3
1
5
4
2..IC 4N35 (OPTRON COUPLER):
a..Sô ñoà:
b..Caáu taïo vaø hoaït ñoäng: IC 4N35 bao goàm moät led hoàng ngoaïi vaø moät tranzitor quang ñaët kín trong voû plastic. Khi coù doøng ñieän chaïy qua led seõ phaùt quang, môû doøng cho tranzitor. Noù nhö laø coâng taéc cho maïch ñieän maø caàn coù söï caùch ly ñieän theá.
II..Thieát keá maïch chi tieát:
1..Maïch phaùt hieän chuoâng:
A
D1
R2
R4
C5
R1
ZP
Vss
D4
D2
D3
B
R3
C3
C4
R5
Vdd
RD
A
B
RT
MODE
IRQN
DET
X
Ring signal
Signal X
DET
Tuï C3, C4 ngaên doøng moät chieàu töø line.
Keát hôïp vôùi R3, R4 taïo neân trôû khaùng thích hôïp cho caàu chænh löu.
Boán diode D1, D2, D3, D4: chænh löu toaøn phaàn.
R1 vaø R2 laøm caàu phaân aùp.
Khi coù tín hieäu chuoâng töø line seõ ñi qua R3 vaø C3 hoaëc R4 vaø C4 ñeå xuaát hieän ñaàu treân R1 döôùi daïng chænh löu vaø suy giaûm. Tín hieäu naøy coøn suy giaûm bôûi caàu phaân aùp R1 vaø R2 tröôùc khi ñöôïc ñöa vaøo RD.
Vôùi R1=470K
R3=R4=100K
R2=82K
Seõ ñaûm baûo phaùt hieän ñöôïc tín hieäu chuoâng 18Vrms.
[0.7+Vthi(R1+R2+R3)/R2]x0.707
[0.7+3(470+100+82)/82]x0.707=18Vrms.
Caên cöù vaøo ngoõ xuaát DET vaø ngoõ nhaäp MODE, ZP ta seõ xaùc ñònh ñöôïckhi naøo coù chuoâng ñeå maïch ñieàu khieån hoaït ñoäng.
Khi khoâng coù tín hieäu treân ñöôøng daây, RD ôû möùc Vss vaø RT ñöôïc keùo leân Vdd. Do ñoù ngoõ ra cuûa “Schmitt Trigger B” ôû möùc thaáp.
Khi coù tín hieäu chuoâng treân ñöôøng daây, nhö moät aùp AC ñöa lieân tieáp vaøo A, B vaø seõ ñi qua C3 vaø R3 hoaëc C4 vaø R4 ñeå xuaát hieän ôû ñaàu treân R1 döôùi daïng ñöôïc chænh löu vaø suy giaûm.
Tín hieäu ôû ñieåm X ñöôïc laøm suy giaûm theâm bôûi boä phaân aùp ñöôïc hình thaønh bôûi R1 vaø R2 tröôùc khi ñöôïc ñöa vaøo ngoõ nhaäp RD cuûa CMX602A. Neáu bieân ñoä cuûa tín hieäu xuaát hieän ôû RD lôùn hôn theàm ngoõ nhaäp (Vthi) cuûa “Schmitt Trigger A” thì tranzitor N noái vôùi RT seõ ñöôïc môû, keùo aùp ôû RT xuoáng Vss baèng caùch xaû tuï C5 beân ngoaøi. Ngoõ xuaát cuûa “Schmitt Trigger B” luùc ñoù seõ leân cao, tích cöïc ngoõ xuaát cuûa DET hoaëc IRQN tuyø thuoäc vaøo traïng thaùi cuûa ngoõ nhaäp ZP, MODE.
Bieân ñoä toái thieåu cuûa tín hieäu chuoâng maø chaéc chaén seõ ñöôïc phaùt hieän laø:
(0.7+Vthi*[R1+R2+R3]/R2)*0.707Vrms
line
TIP
R1
R3
R2
R6
R5
R4
RING
nhm
dc
Vcc
Gnd
Gnd
Phaùt hieän ñaûo cöïc Phaùt hieän nhaác gaùc maùy
vôùi Vthi laø aùp ngöôõng leân cao cuûa “Schmitt Trigger A”.
2..Maïch phaùt hieän ñaûo cöïc vaø traïng thaùi nhaác gaùc maùy cuûa thueâ bao:
Khi thueâ bao ôû traïng thaùi gaùc maùy thì toång trôû DC cuûa maùy ñieän thoaïi raát lôùn, coi nhö khoâng coù doøng ñieän ñi qua maïch. Khi thueâ bao nhaác maùy, toång trôû cuûa maùy khoaûng 600 W, taát nhieân seõ coù moät doøng ñieän chaïy qua maïch. Ta duøng Optron 4N35 ñeå nhaän bieát traïng thaùi nhaác gaùc maùy cuûa thueâ bao.
Ta choïn Optron 4N35 vôùi caùc thoâng soá sau:
Doøng thuaän 40mA.
Ñieän aùp ngöôïc 5V.
Vì doøng qua Optron 4N35 toái ña laø 40mA, ta neân choïn doøng khoaûng 20mA.
Khi nhaác maùy ñieän aùp treân line khoaûng 60V.
Doøng qua maïch chính laø I = 60V/600W = 0.1 A = 100 mA
Luùc ñoù doøng qua ñieän trôû R4 laø
IR4=100 – 20 = 80 mA
Suy ra R4 = 5V/80mA = 63 W (ta choïn 68W).
Ngoõ ra nhm laáy treân R6 choïn R6 = 6.8K.
Khi thueâ bao nhaác maùy, ngoõ ra nhm ôû möùc logic cao, ngöôïc laïi khi thueâ bao gaùc maùy thì ngoõ ra nhm ôû möùc logic thaáp. Ngoõ ra naøy ñöôïc noái vaøo boä ñeám giôø vaø boä ñieàu khieån.
IR1 = 20 mA ; UR1 = 60 –5 =55V
Suy ra R1 = 55V/20mA = 2750W ( cchoïn R1 = 2.7 kW )
Ngoõ ra dc laáy treân R2 choïn R2 = 6.8K.
Khi chöa coù ñaûo cöïc thì diode ngaên doøng qua neân ngoõ ra dc ôû möùc logic thaáp, khi coù ñaûo cöïc thì coù doøng qua diode kích ngoõ ra dc leân möùc logic cao. Ngoõ ra naøy cuõng ñöôïc noái vaøo boä ñeám giôø vaø boä ñieàu khieån.
3..Maïch nhaän FSK (Frequency-Shift-Key):
Vbias
NINV
R8
R9
R7
C6
C7
R10
AOP
R6
C10
R12
R13
INV
C9
R8
Maïch treân nhaèm muïc ñích bieán ñoåi tín hieäu FSK caân baèng treân ñöôøng daây ñieän thoaïi thaønh tín hieäu baát caân baèng vôùi bieân ñoä thích hôïp cho ngoõ vaøo cuûa boä khueách ñaïi tín hieäu nhaäp.
C6, C7 ngaên doøng moät chieàu.
(C6, R6, R9) vaø (C7, R7, R10) taïo thaønh ngoõ caân baèng. Caùch tính nhö sau:
Toång trôû Z1=R6+R9 // R
Toång trôû Z2=R7+R10
Ñeå taïo ngoõ caân baèng Z1=Z2 thì R6+R9 // R = R7+R10
Choïn R6=R7=470K; R9=240K; r=470K
Suy ra R10=R9//R=158K. Choïn R10=160K
Ñoä lôïi aùp vi phaân VAOP/V(b-a)=R8/(R12+R13)
CMX602A ñöôïc thieát keá vôùi R8=680K, R12=200K, R13=270K.
Khi coù tín hieäu FSK gôûi tôùi boä khueách ñaïi naøy seõ ñöôïc ñöa qua boä loïc thoâng (xem sô ñoà khoái CMX602A ) nhaèm trieät tieâu caùc tín hieäu caûn trôû vaø nhieãu baêng taàn tröôùc khi ñöôïc ñöa ñeán khoái FSK Demodulator. Khoái naøy seõ bieán ñoåi tín hieäu nhaäp FSK 1200 baud thaønh tín hieäu data ôû möùc logic cho ngoõ xuaát RXD. Ôû ñaây ta söû duïng chöùc naêng Data Retiming neân ngoõ nhaäp RXCK seõ ñöôïc boä ñieàu khieån caáp cho moãi laàn 8 xung clock khi coù tín hieäu ra ôû DET (leân möùc cao). Data laáy ra laø soá 8 bit tuaàn töï ôû chaân RXD.
CHÖÔNG III: THUYEÁT MINH CHÖÔNG TRÌNH
CHÖÔNG III: THUYEÁT MINH CHÖÔNG TRÌNH
I..Khoái Clock:
Khai baùo thaønh phaàn:
entity clock is
port ( clkin : in bit;
clksec : out bit;
clkfsk : out bit;
clk8fsk : out bit;
clkasyn : out bit
);
end clock;
Chöùc naêng caùc coång:
clkin : nhaän xung vaøo
clksec : xung ra caáp cho boä Timer
clkfsk : xung ra caáp cho CMX602A
clk8fsk : xung ra caáp cho khoái UART
clkasyn : xung ra caáp cho khoái UART
Khoái naøy nhaän xung clock vaøo töø boä taïo xung (thaïch anh) cho CMX602A coù taàn soá 3.579545 MHz vaø chia ra caùc xung clock ôû ñaàu ra coù taàn soá 1Hz ( clksec -ñeå caáp cho boä ñeám giôø trong maïch), coù taàn soá 1200Hz (clkfsk –ñeå khi nhaän ñöôïc tín hieäu töø chaân IRQN xuoáng thaáp thì caáp cho chaân RXCK cuûa CMX602A ñeå hoaït ñoäng ôû cheá ñoä Data Retiming), hai xung coù taàn soá 150Hz vaø 1800Hz (clk8fsk vaø clkasyn) ñeå caáp cho khoái uart.
II..Khoái Serial_parallel:
Khai baùo thaønh phaàn:
entity serpar is --doi data tu serial sang parallel
port ( datain : in bit;
clk : in bit;
det : in bit;
enout : out bit;
dataout : out bit_vector(7 downto 0)
);
end serpar ;
Chöùc naêng caùc coång:
datain : döõ lieäu vaøo daïng noái tieáp.
clk : xung clock vaøo.
det : xung baùo coù döõ lieäu vaøo.
enout : xung baùo hieäu coù döõ lieäu ra.
dataout : döõ lieäu ra daïng song song.
Khoái naøy nhaän döõ lieäu töø chaân RXD cuûa CMX602A ôû daïng noái tieáp vaø chuyeån sang daïng song song 8 bit ñeå qua boä choïn döõ lieäu ñöa vaøo boä ñeäm chôø xöû lí. Trong boä naøy coù söû duïng moät signal daïng bit_vector(7 downto 0) ñeå chöùa data taïm thôøi trong 8 chu kyø clock. Khi coù döõ lieäu vaøo ( töøng bit moät) thì döõ lieäu ñoù seõ ñöôïc ñöa vaøo signal theo thöù töï. Cöù sau taùm chu kyø (signal ñaày) thì port enout seõ chuyeån leân cao ( moät xung ) baùo hieäu coù data ra, vaø luùc naøy ñaàu ra dataout seõ laáy giaù trò cuûa signal ñoù ñeå xuaát ra.
III..Khoái Timer:
Khai baùo thaønh phaàn:
entity timer is
port ( clk : in bit;
dc : in bit;
giay_dv : out bit_vector(7 downto 0);
giay_ch : out bit_vector(7 downto 0);
phut_dv : out bit_vector(7 downto 0);
phut_ch : out bit_vector(7 downto 0);
gio : out bit_vector(7 downto 0);
alarm : out bit_vector(2 downto 0));
end timer;
Chöùc naêng caùc coång:
clk : xung clock vaøo coù taàn soá 1Hz laáy töø khoái clock.
dc : tín hieäu ñaûo cöïc ñeán.
giay_dv : döõ lieäu giaây haøng ñôn vò.
giay_ch : döõ lieäu giaây haøng chuïc.
phut_dv : döõ lieäu phuùt haøng ñôn vò.
phut_ch : döõ lieäu giaây haøng chuïc.
gio : döõ lieäu giôø.
alarm : tín hieäu baùo cho bieát döõ lieäu ra laø loaïi naøo.
Baûng hoaït ñoäng:
Alarm
Cheá ñoä
000
Giay_dv
001
Giay_ch
010
Phut_dv
011
Phut_ch
100
Gio
101
Coù FSK vaøo
110
Null
111
Reset laïi boä ñeám giôø
Khoái naøy nhaän xung clock vaøo coù taàn soá 1Hz vaøo vaø baét ñaàu ñeám giôø khi cuoäc goïi ñöôïc thieát laäp (tín hieäu ñaûo cöïc leân ‘1’) cho ñeán khi keát thuùc ñaøm thoaïi (ñaûo cöïc xuoáng ‘0’). Khoái naøy coù ñaàu ra alarm ñeå cho boä ñieàu khieån bieát ñöôïc thôøi gian ñeám thay ñoåi (alarm = ”001” – “100”: khi boä ñeám nhaûy sang giaây haøng chuïc, phuùt, giôø môùi), döõ lieäu naøy ñöôïc chöông trình nhaän bieát ñeå laøm töôi boä ñeäm döõ lieäu; bieát ñöôïc khi cuoäc goïi keát thuùc (alarm = ”000”: khi ñaûo cöïc xuoáng thaáp); vaø caû khi coù cuoäc goïi môùi khaùc tôùi (alarm = ”111”) ñeå chuaån bò nhaän döõ lieäu FSK môùi vaø reset laïi boä ñeám giôø.
Khi cuoäc goïi ñöôïc keát noái, caùc bieán trong boä ñeám baét ñaàu taêng leân sau moãi chu kyø xung clock ( ôû söôøn leân ), vaø gaùn ra cho caùc port. Khi giôø, phuùt, giaây haøng chuïc thay ñoåi thì port alarm seõ thay ñoåi ñeå baùo cho khoái control bieát ñeå ñieàu khieån boä cnoïn keânh data cho pheùp data ñi vaøo boä ñeäm ( laøm töôi ), hoaëc laø khi coù tín hieäu FSK ñeán thì boä choïn keânh seõ nhaän alarm ñeå bieát data ñeán vaø löu vaøo vuøng nhôù.
IV..Khoái Mux_data:
Khai baùo thaønh phaàn:
entity mux_data is
port (
FSKin : in STD_LOGIC_VECTOR(7 downto 0) ;
giay_dv : in STD_LOGIC_VECTOR(7 downto 0) ;
giay_ch : in STD_LOGIC_VECTOR(7 downto 0) ;
phut_dv : in STD_LOGIC_VECTOR(7 downto 0) ;
phut_ch : in STD_LOGIC_VECTOR(7 downto 0) ;
gio : in STD_LOGIC_VECTOR(7 downto 0) ;
driver : in STD_LOGIC_VECTOR(2 downto 0) ;
dataout : out STD_LOGIC_VECTOR(7 downto 0)
) ;
end mux_data;
Baûng hoaït ñoäng:
driver
data_out
000
giay_dv
001
giay_ch
010
phut_dv
011
phut_ch
100
gio
101
Coù FSK vaøo
110
Null
111
reset laïi boä ñeám giôø
Khoái naøy nhaän döõ lieäu vaøo töø boä Timer, CMX602A vaø tín hieäu ñieàu khieån töø khoái Control vaøo port “driver” ñeå trong caùc tröôøng hôïp khaùc nhau thì choïn ra döõ lieäu naøo seõ ñöôïc ñöa vaøo boä ñeäm: FSK ñaõ giaûi ñieàu cheá hay laø thôøi gian töø boä ñeám giôø theo baûng hoaït ñoäng ôû treân. Ví duï khi driver = 100 thì dataout nhaän giaù trò cuûa gio, khi driver = 101 thì dataout nhaän giaù trò cuûa FSK.
V..Khoái Buffer:
Khai baùo thaønh phaàn:
entity mybuffer is
port( clk :in bit;
cs :in bit;
rd_buf :in bit;
wr_buf :in bit;
driver :in bit_vector(0 to 2);
databus :inout bit_vector(0 to 7);
end mybuffer;
clk : xung clock vaøo.
cs : choïn chip.
rd_buf : yeâu caàu ñoïc buffer.
wr_buf : yeâu caàu ghi vaøo buffer.
Baûng hoaït ñoäng:
Cs
Wr_buf
Rd_buf
Cheá ñoä hoïat ñoäng
0
X
X
Khoâng hoïat ñoäng
1
1
x
Ghi vaøo buffer
0
1
Ñoïc döõ lieäu ra
0
0
Null
Khoái naøy laø boä ñeäm döõ lieäu 36 byte. Khi nhaän tín hieäu ñieàu khieån töø boä ñieàu khieån vaøo port “driver” vaø döõ lieäu töø boä Mux_data vaøo port “data_in” thì seõ löu döõ lieäu vaøo moät ñòa chæ coá ñònh trong “arr”. Khi boä ñieàu khieån coù yeâu caàu ñoïc döõ lieäu (rd_buf=’1’) thì Buffer seõ xuaát döõ lieäu ra port “data_out”.
VI.. I..Khoái Controlbus:
Khai baùo thaønh phaàn:
entity controlbus is
port ( clkfsk : in bit;
dc : in bit;
det : in bit;
wr_read : in bit;
enout : in bit; --- lay tu mux_data
alarm : in bit_vector(2 downto 0);
driver : out bit_vector(2 downto 0); wr_buf : out bit;
wr_uart : out bit
);
end controlbus;
Chöùc naêng caùc coång:
clkfsk : nhaän xung vaøo
dc : tín hieäu ñaûo cöïc nhaän vaøo
det : xung baùo coù döõ lieäu vaøo.
wr_ready : xung vaøo baùo cho bieát boä ñeäm saün saøng cho pheùp ghi
enout : xung ra töø boä mux_data cho bieát coù döõ lieäu ra
alarm : tín hieäu ra töø boä Timer
driver : tín hieäu ra ñeå ñieàu khieån caùc khoái khaùc
wr_buf : xung ra yeâu caàu ñeå ghi leân buffer
wr_uart : xung ra yeâu caàu ñeå ghi leân uart
Khoái naøy nhaän caùc tín hieäu töø caùc khoái nhö Timer, buffer, mux_data, uart, vaø caùc tín hieäu khaùc nhö ñaûo cöïc, baùo coù döõ lieäu vaøo ñeå phaân tích caùc tröôøng hôïp xaûy ra vaø töø ñoù seõ ñöa ra caùc tín hieäu ñieàu khieån laïi bus döõ lieäu cho pheùp caùc khoái ñoïc vaø ghi döõ lieäu ñeå khoâng bò xung ñoät, tranh chaáp.
Hoaït ñoäng:
Khi dc=’0’, neáu det=’1’ thì gaùn driver=”101”; neáu det=’0’ thì giöõ nguyeân traïng thaùi cuûa driver.
Khi dc chuyeån töø 0 sang 1 thì gaùn driver=”111”.
Khi dc=’1’ thì chôø alarm, khi alarm laø “001”, “010”, “011”, “100” thì gaùn driver=alarm; coøn alarm khaùc thì giöõ nguyeân traïng thaùi cuûa driver.
wr_buf leân möùc cao chæ khi naøo driver=”101” hay laø enout ñoåi traïng thaùi ( 0 sang 1 hay 1 sang 0), coøn traïng thaùi khaùc thì gaùn ‘0’.
Port wr_uart=’1’ chæ khi naøo wr_buf=’0’ vaø wr_ready=’1’.
VII..Khoái UART2D: Boä giao tieáp maùy tính
1.Chöùc naêng:
Boä giao tieáp maùy tính duøng thay theá boä vi xöû lí a8251, vôùi chöùa naêng ñôn giaûn hôn chæ phuïc vuï cho muïc ñích cuûa ñeà taøi. Thöïc hieän vieäc truyeàn toaøn phaàn ngaét quaûng (noái tieáp sang song song vaø song song sang noái tieáp khoâng ñoàng thôøi)
2.Sô ñoà maïch phaàn cöùng:
3.Khai baùo thöïc theå UART2D.
entity uart2d is
port (clkasyn,clk8fsk:in bit;
cs,cs0,rd0,wr :in bit;
rxd :in bit;
din :in bit_vector(7 downto 0);
wr_ready :out bit;
rd_ready,flag :out bit;
txd :out bit;
dout :out bit_vector(7 downto 0));
end uart2d;
3.Chöùc naêng caùc chaân:
Input:
Cs: Tích cöïc möùc '1', cho pheùp UART2D hoaït ñoäng.
Cs0:Giaù trò ‘0’ cho pheùp UART2D hoaït ñoäng ôû cheá ñoä parallel-serial, ‘1’ UART2D hoaït ñoäng ôû cheá ñoä serial-parallel.
Rxd: data vaøo noái tieáp ôû cheá ñoä khoâng ñoàng boä, vôùi caùch maõ hoùa 1 bit start ôû möùc low, data 8 bit, 1 bit parity, 2 bit stop ôû möùc high.
Clkasyn: Tín hieäu xung ñoàng hoà, tích cöïc ôû caïnh leân, caáp xung cho boä chuyeån töø song song sang noái tieáp.
Clk8fsk: Tín hieäu xung ñoàng hoà, tích cöïc ôû caïnh leân. Moãi chu kyø xung Clk8fsk baèng 12 chu kyø xung Clkasyn, duøng ñeå caáp xung cho boä ñeäm thu vaø boä ñeäm phaùt.
Wr: Tích cöïc möùc '1', ghi döõ lieäu vaøo boä ñeäm thu khi Cs ôû möùc '1'.
Rd0: Tích cöïc möùc '0', ñoïc döõ lieäu töø boä ñeäm phaùt khi Cs ôû möùc '1'
Din: döõ lieäu ñaàu vaøo 8 bit song song.
Output:
Wr_ready: Tích cöïc möùc '1', tín hieäu ñöôïc set leân möùc '1' khi ñeäm thu roãng.
Rd_ready: Tích cöïc möùc '0', tín hieäu ñöôïc set leân möùc '0' khi ñeäm phaùt ñaày.
Flag: tích cöïc möùc ‘1’, khi tín hieäu naøy leân möùc ‘1’ laø baét ñaàu xuaát döõ lieäu 8 bit noái tieáp.
Dout: Döõ lieäu ñaàu ra song song 8bit.
Txd: döõ lieäu ñaàu ra noái tieáp xuaát ra ôû cheá ñoä khoâng ñoàng boä ñöôïc maõ hoùa nhö ñaàu vaøo Rxd.
4.Hoaït ñoäng:
Khi boä ñeäm thu roãng thì wr_ready seõ ñöôïc set leân '1' ñeå baùo cho khoái tröôùc ñoù laø UART2D saün saøng nhaän döõ lieäu vaøo song song. Khi döõ lieäu ñaàu vaøo khaùc 0 vaø wr ôû möùc '1' thì döõ lieäu seõ ñöôïc ghi vaøo ñeäm thu ñeán khi döõ lieäu ñaàu vaøo baèng 0.
Khi ñeäm phaùt ñaày thì tín hieäu rd_ready seõ ñöôïc set leân '1' ñeå baùo laø saün saøng truyeàn döõ lieäu. Khi coù döõ lieäu vaø rd ôû möùc '1' thì döõ lieäu seõ ñoïc ra töø boä ñeäm phaùt (ñoïc song song) ñöa qua boä “chuyeån töø song song sang noái tieáp” vaø xuaát ra ngoaøi baét ñaàu töø bit coù troïng soá thaáp nhaát. Xung clock ôû ñaàu ra seõ nhanh gaáp 12 laàn xung clock ôû ñaàu vaøo.
Hoaït doäng ôû cheá ñoä “chuyeån töø noái tieáp sang song song cuõng töông töï theo chieàu ngöôïc laïi.
Baûng hoaït ñoäng ôû cheá ñoä song song sang noái tieáp vôùi Cs0 ôû möùc ’0’:
Input
Output
Hoaït ñoäng
Clkfsk
Clk8fsk
Cs
Wr
Rd
Wr_ready
Rd_ready
0
1
1
1
1
X
0
1
0
1
X
1
1
0
0
0
1
1
0
1
1
1
1
0
0
- Khoâng hoaït ñoäng
- Chôø ñoïc ghi data
- Ghi data vaøo ñeäm thu
- Ñoïc data töø ñeäm phaùt
- Ghi data vaøo ñeäm thu vaø ñoïc ra töø deäm phaùt sau 3 chu kyø Clk8FSK
Tín hieäu ñaàu ra Flag set leân möùc ‘1’ khi coù döõ lieäu ôû ñaàu ra khaùc 0, vaø cuõng laø côø hieäu baùo cho bieát baét ñaàu nhaän bit ñaàu tieân cuûa döõ lieäu 8 bit noái tieáp.
Baûng hoaït ñoäng ôû cheá ñoä song song sang noái tieáp vôùi Cs0 ôû möùc ’1’:
Input
Output
Hoaït ñoäng
Clkfsk
Clk8fsk
Cs
Wr
Rd
Wr_ready
Rd_ready
0
1
1
1
1
X
0
1
0
1
X
1
1
0
0
0
1
1
0
1
1
1
1
0
0
- Khoâng hoaït ñoäng
- Chôø ñoïc ghi data
- Ghi data vaøo ñeäm thu
- Ñoïc data töø ñeäm phaùt
- Ghi data vaøo ñeäm thu vaø ñoïc ra töø deäm phaùt sau 3 chu kyø Clk8FSK
Tín hieäu ñaàu ra Flag set leân möùc ‘1’ khi coù döõ lieäu ôû ñaàu ra khaùc 0, vaø cuõng laø côø hieäu baùo cho bieát baét ñaàu nhaän bit ñaàu tieân cuûa döõ lieäu 8 bit noái tieáp.
Sô ñoà chi tieát:
En
Data
Data
Flag
Dout
Buf_ready
Buf_empty
Rd
WR
clk8fsk
ClkFSK
En buf_ready
Rd_buf buf_empty
Wr_buf
Data_in Data_out
Clk
En buf_ready
Rd_buf buf_empty
Wr_buf
Data_in
Clk Data_out
Data_in
. Word
Clk Data_out
a..khoái ñeäm (Rwbuf):
1.Chöùc naêng:
Löu laïi döõ lieäu ôû ñaàu vaøo chôø xuaát ra ôû ñaàu ra khi ccoù yeâu caàu. Khoái ñeäm naøy ñöôïc thieát keá goàm 10 oâ nhôù ñeå löu laïi toái ña 10 kyù töï 8 bit döôùi daïng maõ ASCII. Neáu soá kyù töï ñöôïc löu vöôït quaù 10 kyù töï thì soá kyù töï dö töï ñoäng bò ngaét ñi. Neáu döõ lieäu chöa ñöôïc ñoïc ra maø coù kyù töï khaùc ghi vaøo thì seõ gaây ra hieän töôïng ghi ñeø, döõ lieäu cuû seõ bò maát. Döõ lieäu phaûi ñöôïc löu lieân tuïc.
2.Sô ñoà chaân khoái Rwbuf:
3.Chöùc naêng cuûa caùc chaân:
Input:
Cs: tích cöïc ôû möùc ‘1’, cho pheùp Wrbuf Hoaït ñoäng khi tích cöïc.
Clk: Tín hieäu Clock. Tích cöïc ôû caïnh leân.
Rd_buf: Tích cöïc ôû möùc ‘1’. Cho pheùp ñoïc döõ lieäu töø Rwbuf khi Rwbuf coù data vaø Cs coù giaù trò ‘1’.
Wr_buf: Tích cöïc ôû möùc ‘1’. Cho pheùp ghi döõ lieäu vaøo vuøng nhôù cuûa Rwbuf khi Cs coù giaù trò ‘1’.
Data_in: döõ lieäu ôû ñaàu vaøo Rwbuf 8 bit song song.
Output:
Rd_buf_ready: Tích cöïc ôû möùc ‘1’. Chaân naøy tích cöïc khi data ghi vaøo Rwbuf xong. Xuoáng ‘0’ khi data ñaõ ñöôïc ñoïc heát.
Rd_buf_empty: Tích cöïc ôû möùc ‘1’. Chaân naøy nhaän giaù trò ‘1’ khi data ñaõ ñöôïc ñoïc ra heát vaø Xuoáng ‘0’ khi data ghi vaøo xong.
Data_out: döõ lieäu ñaàu ra 8 bit song song.
4.Hoaït ñoäng:
Khi Cs ôû möùc ‘1’, cho pheùp Rwbuf hoaït ñoäng. Khi Rwbuf roãng vaø tín hieäu wr_buf ôû möùc ‘1’, thì döõ lieäu ñöôïc ghi vaøo Rwbuf. Khi döõ lieäu ghi xong (döõ lieäu ñaàu vaøo baèng 0) tín hieäu buf_ready ñöôïc set leân ‘1’ vaø buf_empty nhaän giaù trò laø ‘0’.
Khi Cs ôû möùc ‘1’, cho pheùp Rwbuf hoaït ñoäng. Khi Rwbuf roãng vaø tín hieäu rdbuf ôû möùc ‘1’, thì döõ lieäu ñöôïc ñoïc ra töø Rwbuf. Khi döõ lieäu doïc xong xong (döõ lieäu ñaàu ra baèng 0) tín hieäu buf_empty ñöôïc set leân ‘1’ vaø buf_ready nhaän giaù trò laø ‘0’.
Thöïc theå Rwbuf ñöôïc thieát keá ñeå duøng cho caû boä ñeäm thu vaø ñeäm phaùt. Khi ñeäm phaùt roãng thì döõ lieäu seõ ñöôïc ñoïc ra töø ñeäm thu vaø ghi vaøo ñeäm phaùt. Döõ lieäu vaøo ra song song.
5.khai baùo thöïc theå Rwbuf.
entity Rwbuf is
port(clk,Cs,wr_buf,rd_buf:in bit;
data_in :in bit_vector(7 downto 0);
rd_buf_empty :out bit;
rd_buf_ready :out bit;
data_out :out bit_vector(7 downto 0));
end Rwbuf;
Baûng hoaït ñoäng:
Input
Output
Hoaït ñoäng
Clk
Cs
Wr_buf
Rd_buf
Buf_ready
Buf_empty
0
1
1
1
1
X
0
1
0
1
X
0
0
1
1
0
0
0
1
1
0
1
1
0
0
- Khoâng hoaït ñoäng
- Chôø ñoïc ghi data
- Ghi data vaøo Rwbuf
- Ñoïc data töø Rwbuf
- Ghi data vaøo Rwbuf, vaø ñoïc ra sau 1 xung clk
b..Khoái chuyeån töø song song sang noái tieáp (Par_Ser):
1.chöùc naêng:
Chuyeån döõ lieäu ñaàu vaøo song song 8 bit thaønh döõ lieäu ôû ñaàu ra noái tieáp baát ñoàng boä ñöôïc maõ hoùa 1bit start ôû möùc thaáp, 8 bit data baét ñaàu töø bit coù troïng soá thaáp nhaát, 1 bit parity, 2 bit stop ôû möùc cao.
2.Sô ñoà chaân cuûa khoái Par_Ser:
3.Chöùc naêng cuûa caùc chaân:
Input:
Clk: Tín hieäu xung clock, tích cöïc ôû caïnh leân.
Data_in: döõ lieäu ñaàu vaøo song song 8 bit.
Output:
Word: tín hieäu thoâng baùo coù döõ lieäu, tín hieäu naøy set leân ‘1’ chính laø thôøi ñieåm xuaát döõ lieäu ra noái tieáp, neáu sau 8 xung Clk maø tín hieäu naøy khoâng leân ‘1’ thì döõ lieäu keát thuùc.
Data_out: Döõ lieäu xuaát ra noái tieáp.
4.Hoaït ñoäng:
Khi xuaát hieän döõ lieäu ôû ñaàu vaøo Par_Ser thì khoái naøy seõ chuyeån döõ lieäu song song naøy thaønh daïng noái tieáp ñöa ra lieân tuïc moãi caïnh leân cuûa xung Clk. Döõ lieäu xuaát ra baét ñaàu töø bit coù troïng soá thaáp nhaát.
5.Khai baùo thöïc theå Par_Ser:
entity par_ser is
port ( clk :in bit;
data_in :in bit_vector(7 downto 0);
data_out:out bit;
word :out bit);
end par_ser;
Baûng hoaït ñoäng:
Input
Output
Hoaït ñoäng
Clk
Word
0
1
Khoâng coù data xuaát
Baét ñaàu coù data 8bit töø troïng soá thaáp nhaát
c..Khoái Ser_Par
1.Chöùc naêng:
Chuyeån data töø noái tieáp sang song song. Data ñaàu vaøo baát ñoàng boä ñöôïc maõ hoùa 1bit start ôû möùc thaáp, 8 bit data baét ñaàu töø bit coù troïng soá thaáp nhaát, 1 bit parity, 2 bit stop ôû möùc cao. Data xuaát ra song song 8 bit.
2.Sô ñoà chaân:
`
3.Chöùc naêng caùc chaân:
-Clk: Tín hieäu ñoàng boä clock.
-Data_in: Data vaøo noái tieáp baát ñoàng boä ñöôïc maõ hoùa 1 bit start ôû möùc thaáp, 8 bit data baét ñaàu töø bit coù troïng soá thaáp nhaát, 1 bit parity, 2 bit stop ôû möùc cao.
-Data_out1: Data xuaát song song. Xuaát ra sau moãi töø ñöôïc nhaän(12 xung clk).
-Err: Tín hieäu tích cöïc möùc '1', baùo data sai khi kieåm tra töø nhaäp vaøo coù bit parity sai.
4.Hoaït ñoäng:
Neáu khoâng coù döõ lieäu ôû ñaàu vaøo thì tín hieäu Data_in luoân ôû möùc '1', döõ lieäu xuaát laø "00000000". Khi Data_in xuoáng möùc '0', ñoù chính laø bit Start. Sau bit Start naøy laø döõ lieäu 8 bit noái tieáp, ta nhaän 8 bit naøy vaø löu laïi, nhaän tieáp bit parity vaø kieåm tra so vôùi döõ lieäu nhaän ñöôïc, neáu döõ lieäu nhaän ñöôïc sai thì tín hieäu Err ñöôïc set leân '1' vaø xuoáng '0' sau moät chu kyø Clk, ngöôïc laïi thì tín hieäu Err seõ ôû möùc '0'. Tieáp tuïc nhaän 2 bit Stop ôû möùc '1', nhaän xong xuaát döõ lieäu ra tín hieäu Data_out1.
5.Khai baùo thöïc theå Ser_par:
entity ser_par is
port(clk :in bit;
data_in :in bit;
data_out1:out bit_vector(7 downto 0);
perr :out bit);
end ser_par;
d..Boä Choïn Keânh
1.Chöùc naêng:
Choïn moät trong hai döõ lieäu ñaàu vaøo ñeå ñöa ra ñaàu ra tuøy thuoäc vaøo giaù trò cuûa tín hieäu Cs.
2.Hoaït ñoäng:
Khi Cs coù giaù trò ‘1’ thì giaù trò D1 ñöôïc xuaát ra ôû D3, ngöôïc laïi neáu Cs coù giaù trò ‘0’ thì D2 ñöôïc xuaát ra.
3.Sô ñoà chaân:
4.Chöùc naêng caùc chaân:
-D1: Data vaøo song song 8 bit.
-D2: Data vaøo song song 8 bit.
-Cs: Tín hieäu choïn keânh, ‘1’ choïn D1, ‘0’ choïn D2.
-D3: Data xuaát song song 8 bit.
5.Khai baùo thöïc theå Muxuart:
entity muxuart is
port(d1,d2 :in bit_vector(7 downto 0);
cs :in bit;
d3 :out bit_vector(7 downto 0));
end muxuart;
e..Boä Phaân Keânh
1.Chöùc naêng:
Choïn moät trong hai ñaàu ra ñeå xuaát döõ lieäu töø ñaàu vaøo tuøy thuoäc vaøo giaù trò cuûa tín hieäu Cs.
2.Hoaït ñoäng:
Coù chöùc naêng ngöôïc laïi Muxuart. Khi cs coù giaù trò ‘1’ thì D1 xuaát ra ñöôøng D2, ‘0’ thì D1 xuaát ra ñöôøng D3.
3.Sô ñoà chaân:
4.Chöùc naêng caùc chaân:
-D1: data vaøo song song 8 bit.
-Cs: tín hieäu choïn keânh, ‘1’ choïn coång xuaát D2, ‘0’ choïn coång xuaát D3.
-D2: data xuaát song song 8 bit.
-D30: data xuaát song song 8 bit.
5.Khai baùo thöïc theå Demuxuart:
entity demuxuart is
port(d1:in bit_vector(7 downto 0);
clk,cs:in bit;
d2,d3:out bit_vector(7 downto 0));
end demuxuart;
PHAÀN C
HIEÄN THÖÏC BAÈNG NGOÂN NGÖÕ VHDL CHAÏY MOÂ PHOÛNG
TREÂN PHAÀN MEÀM XILINX FOUNDATION SERIES 2.1i
(SOURCE CODE CHÖÔNG TRÌNH)
Các file đính kèm theo tài liệu này:
- Bộ kiểm soát CID điện thoại.doc