Лекции 3 - Управляющие автоматы (1162604)
Текст из файла
Ïðîãðàììèðóåìûåëîãè÷åñêèå èíòåãðàëüíûåñõåìûËåêòîð:Øóïëåöîâ Ìèõàèë Ñåðãååâè÷e-mail:shupletsov@cs.msu.ruÎñåíü 2016Ëåêöèÿ 3Óïðàâëÿþùèå àâòîìàòûÂâåäåíèå: çà÷åì íóæåí óïðàâëÿþùèé àâòîìàò8loadresetclockregister81+Ýòà ñõåìà îïðåäåëÿåò òî, êàê ïðåîáðàçóþòñÿ äàííûå, òî åñòüîïåðàöèîííûé àâòîìàò çàâèñèìîñòè îò òîãî, ÷òî ïîäà¼òñÿ íà âõîäíûå ñèãíàëûreset, clock,äàííûå, çàïèñàííûå â ðåãèñòð, ìîãóòI îñòàâàòüñÿ òàêèìè æå, êàê è áûëèI óâåëè÷èâàòüñÿ íà åäèíèöóI ñáðàñûâàòüñÿ â íîëüload,Ââåäåíèå: çà÷åì íóæåí óïðàâëÿþùèé àâòîìàò8loadresetclockregister81+À êàê çàñòàâèòü ðåãèñòð äåëàòü òî, ÷òî ìû õîòèì?1. Ïîäâåñòè êî âõîäàì ðåãèñòðà èìåþùèåñÿ ýëåìåíòûóïðàâëåíèÿ (â DE0-Nano KEY[i], SW[i], CLOCK_50) èóïðàâëÿòü ðåãèñòðîì, íàæèìàÿ íà êíîïêè è ù¼ëêàÿâûêëþ÷àòåëÿìè2.
Çàñòàâèòü ñõåìó äåëàòü ýòó ðàáîòó çà íàñI÷òî îñîáåííî ïîëåçíî, åñëè óïðàâëÿþùèõ âõîäîâ áîëüøå,÷åì ýëåìåíòîâ óïðàâëåíèÿ, à ÷àñòî áåç ýòîãî â ïðèíöèïåíå îáîéòèñüÂâåäåíèå: çà÷åì íóæåí óïðàâëÿþùèé àâòîìàò8loadresetclockregister81+Ñõåìà, êîòîðàÿ âûñòàâëÿåò çà íàñ óïðàâëÿþùèå ñèãíàëû íóæíûì îáðàçîì â íóæíûå ìîìåíòû âðåìåíè ýòî óïðàâëÿþùèéàâòîìàòÏðîñòåíüêàÿ çàäà÷êàÀ êàê ðàçðàáîòàòü ïîäõîäÿùèé óïðàâëÿþùèé àâòîìàò?Íà÷í¼ì ñ òàêîé çàäà÷êè: ðåãèñòð äîëæåí ïîñ÷èòàòü ÷èñëàîò íîëÿ äî äâóõ è îñòàíîâèòüñÿÌîæíî ïîøàãîâî ðàñïèñàòü ïîñëåäîâàòåëüíîñòü äåéñòâèé,êîòîðûå äîëæåí ñäåëàòü ðåãèñòð, ÷òîáû ýòó çàäà÷êó ðåøèòü:1.
çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÀâòîìàòû×òî òàêîå àâòîìàò?I Ó íåãî åñòü êîíå÷íîå ìíîæåñòâî ñîñòîÿíèéI Îáùàÿñü ñ âíåøíåé ñðåäîé, îí ïåðåõîäèò èç îäíîãîñîñòîÿíèÿ â äðóãîå â äèñêðåòíîì âðåìåíè (ò.å. ïîøàãîâî)I  çàâèñèìîñòè îò òåêóùåãî ñîñòîÿíèÿ, îí âûäà¼ò íå÷òî íàâûõîä, òî åñòü âî âíåøíþþ ñðåäó (àâòîìàò Ìóðà)I Ñîâåðøàÿ ïåðåõîä, îí òàêæå ñïîñîáåí âûäàâàòü íå÷òî íàâûõîä (àâòîìàò Ìèëè)in1 /out3out0out1in3 /out5in2 /out4in4 /out6out2Àâòîìàòû1. çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÏîïðîáóåì çàïèñàòü ýòîò àëãîðèòì â àâòîìàòíîì âèäåÎòêóäà âçÿòü äèñêðåòíîå âðåìÿ?Åñòü âõîäíîé ïðîâîä CLOCK_50, è ìîæíî äèñêðåòíî îòñ÷èòûâàòü ìîìåíòû âðåìåíè ïî ïåðåäíèì ôðîíòàì ïðèõîäÿùèõ îòíåãî ñèãíàëîâÀâòîìàòû1.
çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÏîïðîáóåì çàïèñàòü ýòîò àëãîðèòì â àâòîìàòíîì âèäåÎòêóäà âçÿòü ñîñòîÿíèÿ?×åòûðå ïóíêòà àëãîðèòìà ýòî, ïî áîëüøîìó ñ÷¼òó, ÷åòûðå ñîñòîÿíèÿ:I êàæäûé ïóíêò òî÷íî îïèñûâàåò, ÷òî àâòîìàò äîëæåíïîñëàòü âî âíåøíþþ ñðåäó (òî åñòü â îïåðàöèîííûéàâòîìàò )I êàæäûé ïóíêò ìîæåò áûòü ñäåëàí çà îäèí òàêò âðåìåíèÀâòîìàòû1. çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÏîïðîáóåì çàïèñàòü ýòîò àëãîðèòì â àâòîìàòíîì âèäåÊàê ñîåäèíèòü ìåæäó ñîáîé ýòè ñîñòîÿíèÿ?Ïî öåïî÷êå îò ïðåäûäóùåãî ê ñëåäóþùåìó, íå îáðàùàÿ âíèìàíèÿ íà òî, ÷òî ïðîèñõîäèò âî âíåøíåé ñðåäåÀâòîìàòû1.
çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÏîïðîáóåì çàïèñàòü ýòîò àëãîðèòì â àâòîìàòíîì âèäå×òî êîãäà âûäàâàòü íà âûõîä?Ïðè ïåðåõîäå íè÷åãî íå íóæíî äåëàòü (â áîëåå ñëîæíûõ ñëó÷àÿõìîæåò ïîíàäîáèòüñÿ, íî íå òóò ) êàæäîì ñîñòîÿíèè äîñòàòî÷íî âûñòàâèòü íóæíûå ñèãíàëû íàâõîäàõloadèresetI âûñòàâëÿåìðåãèñòðà:reset = 0 ðåãèñòð ñáðàñûâàåòñÿ(íåìåäëåííî )I âûñòàâëÿåìload = 0 çíà÷åíèå â ðåãèñòðåóâåëè÷èâàåòñÿ (ïî ïåðåäíåìó ôðîíòó CLOCK_50 )Àâòîìàòû1.
çàïèñàòü â ñåáÿ íîëü2. ïðèáàâèòü åäèíèöó3. ïðèáàâèòü åäèíèöó4. îñòàíîâèòüñÿÏîïðîáóåì çàïèñàòü ýòîò àëãîðèòì â àâòîìàòíîì âèäåÄèàãðàììà àâòîìàòà (äèàãðàììà Ìóðà?) àâòîìàòà, îïèñûâàþùåãî àëãîðèòì:resetloadloadÂçàèìîäåéñòâèå îïåðàöèîííîãî èóïðàâëÿþùåãî àâòîìàòîâÈ êàê ýòî âñ¼ áóäåò âûãëÿäåòü â æåëåçå?×òîáû âñ¼ çàðàáîòàëî, äîñòàòî÷íî çàèìåòü è âåðíî ñîåäèíèòü:I îïåðàöèîííûé àâòîìàò: êîðîáî÷êó, â êîòîðîé âñ¼ ðàáîòàåòîäíîçíà÷íî, êðîìå ñèãíàëîâload, reset, clockI óïðàâëÿþùèé àâòîìàò:IIäëÿ íîðìàëüíîé ðàáîòû òðåáóåòñÿ äèñêðåòíîå âðåìÿ(clock) è èíèöèàëèçàöèÿ (reset)îñíîâíîå íàçíà÷åíèå â íóæíîå âðåìÿ â íóæíîì ïîðÿäêåâûñòàâëÿòü ñèãíàëû load, resetI òàêòîâûé ãåíåðàòîð CLOCK_50resetclockÓïð.Àâò.loadresetclockCLOCK_50Îï.Àâò.Ðåøåíèå çàäà÷êèÐåãèñòð:inWidthloadresetclockregisterWidthoutmoduleregister#( p a r a m e t e r([ Widthinput−1:0]reg[ Widthload ,reset ,outputinputWidth = 8 )in ,−1:0]out ,clock);@( posedgealwaysi f (~ r e s e t )elsenegedgeo u t <= 0 ;i f (~ l o a d )endmoduleclock ,o u t <= i n ;reset )Ðåøåíèå çàäà÷êèÑóììàòîð:yxWidthWidthadderWidthmoduleadder#( p a r a m e t e r(oWidth = 8 )−1:0] x ,−1:0] y ,[ Width − 1 : 0 ] oinput[ Widthinput[ Widthoutput);assignendmoduleo = x + y;Ðåøåíèå çàäà÷êèÎïåðàöèîííûé àâòîìàò (ñ âûâîäîì çíà÷åíèÿ ðåãèñòðà â LED):loadresetclockmodulecountercounter ( inputload ,outputparameterwire−1:0]in ,r (.
in ( in ) ,a ( . x ( out ) ,assignendmoduleclock ,x );out ;. out ( out ) ,. reset ( reset ) ,adderreset ,xWidth = 8 ;[ Widthregister[7:0]8x = out ;. load ( load ) ,. clock ( clock ));. y ( 8 ' b00000001 ) ,. o( in ));Ðåøåíèå çàäà÷êèÓïðàâëÿþùèé àâòîìàò:resetclockfsm ( i n p u tmoduleclock ,outputreg[1:0]alwaysreset ,load ,regc_state ,o_reset ) ;n_state ;@( c _ s t a t e )case ( c _ s t a t e )2 ' b00 :beginload = 1;o_reset = 0;n _ s t a t e = 2 ' b01 ;endloado_resetfsmÐåøåíèå çàäà÷êèÓïðàâëÿþùèé àâòîìàò:resetclockfsm2 ' b01 :beginload = 0;o_reset = 1;n _ s t a t e = 2 ' b10 ;end2 ' b10 :beginload = 0;o_reset = 1;n _ s t a t e = 2 ' b11 ;endloado_resetÐåøåíèå çàäà÷êèÓïðàâëÿþùèé àâòîìàò:resetclockloado_resetfsm2 ' b11 :beginload = 1;o_reset = 1;n _ s t a t e = 2 ' b11 ;endendcase@( posedgealwaysi f (~ r e s e t )elseclock ,negedgec _ s t a t e <= 0 ;c _ s t a t e <= n _ s t a t e ;endmodulereset )Ðåøåíèå çàäà÷êèÃëàâíûé ìîäóëü (reset âûâåäåí íà KEY[1], è ìû, íàæèìàÿ íàKEY[0], ãåíåðèðóåì òàêòîâûå èìïóëüñû):t o p ( SW,moduleKEY ,LED ,inputwire[3:0]SW;inputwire[1:0]KEY ;[7:0]outputinputwirewireload ,counterCLOCK_50 ) ;LED ;CLOCK_50 ;reset ;op_aut ( .
l o a d ( l o a d ) ,. reset ( reset ) ,. c l o c k ( KEY [ 0 ] ) ,fsmc _ a u t ( . c l o c k ( KEY [ 0 ] ) ,. load ( load ) ,endmodule. x ( LED ) ) ;. r e s e t ( KEY [ 1 ] ) ,. o_reset ( r e s e t ) ) ;À òåïåðü çàäà÷êà ïîñëîæíååÕî÷ó, ÷òîáû ñ÷¼ò÷èê ðàáîòàë òàê:I âûêëþ÷àòåëÿìè SW ñîñòàâëÿþ äâîè÷íóþ ÷åòûð¼õáèòíóþçàïèñü ÷èñëàI êíîïêîé KEY[1] çàïóñêàþ àëãîðèòìI ñ÷¼ò÷èê îòñ÷èòûâàåò ñ íîëÿ äî ñîñòàâëåííîãî ÷èñëà,ïðèáàâëÿåò åäèíèöó è îñòàíàâëèâàåòñÿ ÷¼ì çäåñü ñëîæíîñòè?1. Äèàãðàììà Ìóðà íåëèíåéíà (åñòü öèêëû )2. Óïðàâëÿþùèé àâòîìàò, ÷òîáû çíàòü, ÷òî äåëàòü, äîëæåíàíàëèçèðîâàòü èíôîðìàöèþ èç âíåøíåãî ìèðà3.
Ïåðåäàâàòü äàííûå â óïðàâëÿþùèé àâòîìàò ïëîõî(óïðàâëÿþùèé àâòîìàò äîëæåíóïðàâëÿòü,à íå âû÷èñëÿòü)4. Çíà÷èò, íóæíî äîáàâèòü â îïåðàöèîííûé àâòîìàò ñõåìó,ðàáîòàþùóþ ñ äàííûìè (ïðîâåðÿþùóþ, äîñ÷èòàë ëèðåãèñòð äî êîíöà)è ïåðåäàþùóþ ðåçóëüòàò ðàáîòû âóïðàâëÿþùèé àâòîìàòÊàê èçìåíèòñÿ îïåðàöèîííûé àâòîìàòÁûëî:8loadresetclockregister81+Êàê èçìåíèòñÿ îïåðàöèîííûé àâòîìàòÑòàëî:8loadresetclockregister8num8≤1+ltnumI Äîáàâèëñÿ áëîê ñðàâíåíèÿI Äîáàâèëàñü âõîäíàÿ øèíànumltnumI Äîáàâèëñÿ âûõîäíîé ñèãíàë îí áóäåòïåðåñûëàòüñÿ óïðàâëÿþùåìó àâòîìàòóÊàê áóäåò âûãëÿäåòü óïðàâëÿþùèé àâòîìàòltnumclearmodulefsm ( i n p u toutput...loadclock ,regreset ,load ,∼ltnumltnum ,o_reset ) ;Êàê áóäåò âûãëÿäåòü óïðàâëÿþùèé àâòîìàòltnumclearload...2 ' b00 :begino_reset = 0;load = 1;n _ s t a t e = 2 ' b01 ;end...∼ltnumÊàê áóäåò âûãëÿäåòü óïðàâëÿþùèé àâòîìàòltnumclearload...2 ' b01 :begino_reset = 1;load = 0;n _ s t a t e = 2 ' b10 ;end...∼ltnumÊàê áóäåò âûãëÿäåòü óïðàâëÿþùèé àâòîìàòltnumclearload∼ltnum...2 ' b10 :begino_reset = 1;load = 1;i f ( ltnum )elseend...n _ s t a t e = 2 ' b01 ;n _ s t a t e = 2 ' b11 ;Êàê áóäåò âûãëÿäåòü óïðàâëÿþùèé àâòîìàòltnumclearload...2 ' b11 :begino_reset = 1;load = 1;n _ s t a t e = 2 ' b11 ;end...∼ltnumÊàê áóäåò âûãëÿäåòü âçàèìîäåéñòâèåóïðàâëÿþùåãî è îïåðàöèîííîãî àâòîìàòîâSW4'b000044num8ltnumresetÓïð.Àâò.loadresetclockclockCLOCK_50À îñòàëüíóþ ÷àñòü ðåøåíèÿ äîäóìàéòå ñàìèÎï.Àâò.Êîíåö ëåêöèè 3.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.