版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 在線系統(tǒng)課程設(shè)計報告</p><p><b> 電子密碼鎖設(shè)計</b></p><p> 院 (系):電氣與信息工程學(xué)院 </p><p> 專 業(yè):應(yīng)用電子技術(shù) </p><p> 學(xué)生姓名: </p><p> 學(xué)
2、 號: </p><p> 指導(dǎo)教師: </p><p> 2011年12月26日-2012年1月6日</p><p><b> 目錄</b></p><p><b> 第1章 概述2</b></p><p> 第2章 設(shè)計要求2</
3、p><p> 第3章 總體框圖3</p><p> 第4章 功能模塊5</p><p> 4.1 輸入模塊5</p><p> 4.2 控制模塊8</p><p> 4.3 顯示模塊16</p><p> 第5章 總體設(shè)計電路圖18</p><p&g
4、t; 第6章 設(shè)計心得體會21</p><p><b> 參考文獻22</b></p><p><b> 第1章 概述</b></p><p> 電子密碼鎖在生活中十分常見,在這我將設(shè)計一個具有較低成本的電子密碼鎖,本文講述了我整個設(shè)計過程及收獲。講述了電子密碼鎖的的工作原理以及各個模塊的功能,并講述了所有部分
5、的設(shè)計思路,對各部分電路方案的選擇、元器件的篩選、以及對它們的調(diào)試、對波形圖的分析,到最后的總體圖的分析。</p><p><b> 第2章 設(shè)計要求</b></p><p> 本設(shè)計名稱為電子密碼鎖,用四個模塊,分別為輸入模塊、控制模塊、掃描器模塊、顯示模塊,來控制密碼的輸入、驗證與顯示。</p><p> 設(shè)計所要實現(xiàn)的功能為:<
6、;/p><p> 1 數(shù)碼輸入:手動用3個撥碼開關(guān)與3個按鍵設(shè)計三位密碼的輸入,并在顯示器顯示出該數(shù)值。</p><p> 2 數(shù)碼驗證:開鎖時輸入密碼后,撥動 RT鍵使其為高電平,而CHANGE為低電平檢測,密碼正確時開鎖,輸出LOCKOPEN燈滅,LOCKCLOSE燈亮,表示開鎖成功。</p><p> 3 錯誤顯示:當(dāng)密碼輸入錯誤時,LOCKOPEN燈亮,L
7、OCKCLOSE燈滅,表示開鎖失敗。</p><p> 4 更改密碼:當(dāng)改變密碼時,按下CHANGE鍵使其為高電平,而RT為低電平時,可改變密碼。</p><p> 5 密碼清除:按下REST可清除前面的輸入值,清除為“888”。</p><p><b> 第3章 總體框圖</b></p><p><b>
8、; 1)設(shè)計方案:</b></p><p> 電子密碼鎖,主要由三部分組成:密碼輸入電路、密碼鎖控制電路和密碼鎖顯示電路。</p><p> 作為電子密碼鎖的輸入電路,可選用的方案有撥碼與按鍵來控制輸入和觸摸式鍵盤輸入等多種。撥碼與按鍵和觸摸式4*4鍵盤相比簡單方便而且成本低,構(gòu)成的電路簡單,本設(shè)計中采用撥碼與按鍵來作為該設(shè)計的輸入設(shè)備。</p><p
9、> 數(shù)字電子密碼鎖的顯示信息電路可采用LED數(shù)碼顯示管和液晶屏顯示兩種。液晶顯示具有高速顯示、可靠性高、易于擴展和升級的特點,但是普通的液晶存在亮度低、對復(fù)雜環(huán)境適應(yīng)能力差的特點,但是在本設(shè)計中任然使用LED數(shù)碼管。</p><p> 根據(jù)以上選定的輸入設(shè)備與與顯示器件,并考慮到現(xiàn)實各項密碼鎖功能的具體要求,與系統(tǒng)的設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下的設(shè)計方案。整個密碼鎖系統(tǒng)的總體總體框圖如圖3.1所示。&
10、lt;/p><p> 圖3.1電子密碼鎖系統(tǒng)總體框圖</p><p><b> 第4章 功能模塊</b></p><p><b> 4.1 輸入模塊</b></p><p><b> 1)功能介紹</b></p><p> 輸入時有三個撥碼鍵控制
11、輸入,每個撥碼各控制一位密碼,對于其中一個撥碼鍵每撥一次碼按一次按鍵,表示輸入一位,當(dāng)輸入四位時輸出一位數(shù),用“888”作為初始密碼。</p><p> 2)輸入模塊與仿真圖形</p><p> 單脈沖控制如圖4.1如下圖</p><p><b> 圖4.1</b></p><p> 上圖為單脈沖控制輸入,當(dāng)M給
12、一上升沿信號將在PUL輸出一位與之對應(yīng)的高或低電平。</p><p> 四位串行輸入并行輸出寄存器如下圖4.2</p><p><b> 圖4.2</b></p><p> 上圖為4為串行輸入并行輸出寄存器,它由4個D觸發(fā)組成,當(dāng)reset為高電平時,每給一脈沖輸入數(shù)據(jù)將向右移一位二值代碼,它能同時復(fù)位</p><p&
13、gt;<b> 3)程序的輸入</b></p><p> 在文本區(qū)內(nèi)輸入程序,程序如下: </p><p><b> 單脈沖信號控制</b></p><p><b> puls.vhd</b></p><p> LIBRARY IEEE;</p><
14、;p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY puls IS</p><p> PORT (PUL,M:IN STD_LOGIC;</p><p> Q:OUT STD_LOGIC);</p><p><b> END puls;</b></p&g
15、t;<p> ARCHITECTURE BEHAVE OF puls IS</p><p> SIGNAL TEMP:STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(M)</p><p><b> BEGIN</b><
16、;/p><p> IF M'EVENT AND M='1' THEN</p><p> IF PUL='1' THEN </p><p> TEMP<='1';</p><p> ELSE TEMP<='0';</p><p>&l
17、t;b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p><b> Q<=TEMP;</b></p><p> END BEHAVE;</p><p>
18、4位串行輸入并行輸出寄存器</p><p> shifter.vhd</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY shifter IS</p><p><b> PORT</b>
19、</p><p> (din:INSTD_LOGIC;</p><p> reset,CLK: INSTD_LOGIC;</p><p> qout: buffer STD_LOGIC_VECTOR(0 TO 3)</p><p><b> );</b></p><p> END s
20、hifter;</p><p> ARCHITECTURE act OF shifter IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p><p> VARIABLE q:STD_LOGIC_VECTOR(0 TO 3);</p><
21、p><b> BEGIN</b></p><p> IF reset='0' THEN </p><p> q:=(others=>'0');</p><p><b> ELSE</b></p><p> if clk'event and
22、 clk='1' then</p><p> q(3):=q(2);</p><p> q(2):=q(1);</p><p> q(1):=q(0);</p><p> q(0):=din;</p><p><b> END IF;</b></p><
23、;p><b> END IF;</b></p><p><b> qout<=q;</b></p><p> END PROCESS;</p><p> END architecture act;</p><p><b> 4.2 控制模塊</b>&l
24、t;/p><p><b> 1)功能介紹</b></p><p> 開鎖時輸入密碼后,撥動 RT鍵使其為高電平,而CHANGE為低電平檢測,密碼正確時開鎖,輸出LOCKOPEN燈滅,LOCKCLOSE燈亮,表示開鎖成功。當(dāng)密碼輸入錯誤時,LOCKOPEN燈亮,LOCKCLOSE燈滅,表示開鎖失敗。當(dāng)改變密碼時,按下CHANGE鍵使其為高電平,而RT為低電平時,可改變密
25、碼。按下REST可清除前面的輸入值,清除為“888”。</p><p> 2)控制模塊與仿真圖形</p><p> 輸入譯碼器圖4.3,如下圖</p><p><b> 圖4.3</b></p><p> 上圖為譯碼器將4位二值代碼轉(zhuǎn)化成BCD碼從“0000”~“1001”表示</p><p&
26、gt;<b> 0~9。</b></p><p> 表4-1輸入譯碼的真值表</p><p> 輸入 輸出</p><p> D C B A Y1 Y2 Y3 Y4 字形</p>
27、<p> 0 0 0 0 0 0 0 0 0</p><p> 0 0 0 1 0 0 0 1 1</p><p> 0 0 1 0 0 0
28、 1 0 2</p><p> 0 0 1 1 0 0 1 1 3</p><p> 0 1 0 0 0 1 0 0 4</p><p>
29、 0 1 0 1 0 1 0 1 5 </p><p> 0 1 1 0 0 1 1 0 6</p><p> 0 1 1 1 0 1 1
30、 1 7 </p><p> 1 0 0 0 1 0 0 0 8 </p><p> 1 0 0 1 1 0 0 1 9</p><p><b
31、> 表4-1</b></p><p> 總功能控制模塊圖4.4,如下圖</p><p><b> 圖4.4</b></p><p> 當(dāng)CHANGE為高電平且rt為低電平時開始輸入密碼這時lockopen為高電平,而lockclose為低電平,當(dāng)rt為高電平,change為低電平時開始檢測密碼,如上圖開始密碼為“108
32、”當(dāng)再次出現(xiàn)“108”時lockopen為高電平,而lockclose為低電平,當(dāng)密碼錯誤時lockopen為低電平,而lockclose為高電平。</p><p> 4選1選擇器與掃描器圖4.5,如下圖</p><p><b> 圖4.5</b></p><p> 如上圖多路選擇器可以從多組數(shù)據(jù)來源中選取一組送入目的地,在本設(shè)計中利用多
33、路選擇器做掃描電路來分別驅(qū)動輸出裝置,可以將低成本消耗,如上圖當(dāng)輸入“819”時,在時鐘地控制下qout將輸出“819”,而與之對應(yīng)的sel掃描對應(yīng)的數(shù)碼管。</p><p> 在文本區(qū)內(nèi)輸入程序,程序如下:</p><p><b> 輸入譯碼器</b></p><p> KEY.vhd </p>
34、<p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> ENTITY KEY IS</p><p> PORT(clk:IN STD_LOGIC;</p><p> data:IN STD_LOGIC_VECTOR(3 DOWNTO 0);&l
35、t;/p><p> q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> q1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p> END ENTITY KEY;</p><p> ARCHITECTURE ART OF KEY IS</p><p
36、><b> BEGIN</b></p><p> PROCESS(clk,data)IS</p><p><b> BEGIN</b></p><p> IF clk'EVENT AND clk='1' THEN</p><p> CASE data IS&l
37、t;/p><p> WHEN "0000"=>q<="0000";q1<="0000";</p><p> WHEN "0001"=>q<="0001";q1<="0001";</p><p> WHEN &q
38、uot;0010"=>q<="0010";q1<="0010";</p><p> WHEN "0011"=>q<="0011";q1<="0011";</p><p> WHEN "0100"=>q<=&qu
39、ot;0100";q1<="0100";</p><p> WHEN "0101"=>q<="0101";q1<="0101";</p><p> WHEN "0110"=>q<="0110";q1<="0
40、110";</p><p> WHEN "0111"=>q<="0111";q1<="0111";</p><p> WHEN "1000"=>q<="1000";q1<="1000";</p><p&
41、gt; WHEN "1001"=>q<="1001";q1<="1001";</p><p> WHEN OTHERS=>q<="0000";q1<="0000";</p><p><b> END CASE;</b></
42、p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p><b> 總功能控制模塊</b></p><p> Eleclock.vhd</p>&
43、lt;p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY Eleclock IS</p><p> PORT(NB:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> NS:IN STD_LOGIC
44、_VECTOR(3 DOWNTO 0);</p><p> NG:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CLK:IN STD_LOGIC;</p><p> CHANGE,RT: IN STD_LOGIC;</p><p> DB:OUT STD_LOGIC_VECTOR(3 DOWNT
45、O 0);</p><p> DS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DG:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LOCKOPEN,LOCKCLOSE:OUT STD_LOGIC);</p><p> END ENTITY Eleclo
46、ck;</p><p> ARCHITECTURE ART OF Eleclock IS</p><p> COMPONENT Key IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> DATA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p&
47、gt; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> Q1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)</p><p><b> );</b></p><p> END COMPONENT Key;</p><p> SIGNAL ENABLE,
48、C0,C1,S,ENABLE1:STD_LOGIC;</p><p> SIGNAL TB,TS,TG,D_B,D_S,D_G:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p> ENABLE<=CHANGE AND(NOT RT);</p>&l
49、t;p> ENABLE1<=RT AND(NOT CHANGE);</p><p> U0:KEY PORT MAP(CLK=>CLK,DATA=>NB,Q=>DB,Q1=>D_B);</p><p> U1:KEY PORT MAP(CLK=>CLK,DATA=>NS,Q=>DS,Q1=>D_S);</p>
50、<p> U2:KEY PORT MAP(CLK=>CLK,DATA=>NG,Q=>DG,Q1=>D_G);</p><p> PROCESS(CLK,D_B,D_S,D_G) IS</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK=
51、39;1' THEN</p><p> IF ENABLE='1' THEN</p><p><b> TB<=D_B;</b></p><p><b> TS<=D_S;</b></p><p><b> TG<=D_G;</b&g
52、t;</p><p><b> END IF;</b></p><p> IF ENABLE1='1' THEN</p><p> IF ( TB<=D_B AND TS<=D_S AND TG<=D_G) THEN</p><p> LOCKOPEN<='1
53、9;;</p><p> LOCKCLOSE<='0';</p><p><b> ELSE</b></p><p> LOCKOPEN<='0';</p><p> LOCKCLOSE<='1';</p><p><
54、b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p&g
55、t; 4選1選擇器與掃描器</p><p><b> sel.vhd</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p&
56、gt; USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY sel IS</p><p> PORT(QIN1,QIN2,QIN3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CLK,RST:IN STD_LOGIC;</p><p> QOUT:
57、OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> sel:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b> END sel;</b></p><p> ARCHITECTURE ART OF sel IS</p><p><b&
58、gt; BEGIN</b></p><p> PROCESS(CLK,RST)</p><p> VARIABLE CNT:INTEGER RANGE 0 TO 2;</p><p><b> BEGIN</b></p><p> IF (RST='0') THEN</p>
59、;<p><b> CNT:=0;</b></p><p> sel <="00000000";</p><p> QOUT<="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p>
60、<p> IF CNT=2 THEN</p><p><b> CNT:=0;</b></p><p><b> ELSE</b></p><p> CNT:=CNT+1;</p><p><b> END IF;</b></p><p
61、> CASE CNT IS</p><p> WHEN 0=>QOUT<=QIN1;</p><p> sel <="11111110";</p><p> WHEN 1=>QOUT<=QIN2;</p><p> sel<="11111101";&l
62、t;/p><p> WHEN 2=>QOUT<=QIN3;</p><p> sel<="11111011";</p><p> WHEN OTHERS=>QOUT<="0000";</p><p> sel<="11111111";</
63、p><p><b> END CASE;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p><b> 4.3 顯示模塊</
64、b></p><p><b> 1)功能介紹</b></p><p> 將密碼用BCD七段數(shù)碼管顯示</p><p> 2)顯示模塊與仿真波形圖4.6,如下圖</p><p><b> 圖4.6</b></p><p> 上圖將BCD碼轉(zhuǎn)化到七段譯碼電路上&l
65、t;/p><p> 表4-2 BCD-七段數(shù)碼管的真值表</p><p> 輸入 輸出</p><p> D C B A Y1 Y2 Y3 Y4 Y5 Y6 Y7 字形</p><p> 0 0
66、 0 0 1 1 1 1 1 1 0 0</p><p> 0 0 0 1 0 1 1 0 0 0 0 1</p><p> 0 0 1 0 1 1 0 1 1
67、0 1 2</p><p> 0 0 1 1 0 1 1 1 0 0 1 3</p><p> 0 1 0 0 0 1 1 0 0 1 1 4</p><p> 0 1
68、 0 1 1 0 1 1 0 1 1 5</p><p> 0 1 1 0 1 0 1 1 1 1 1 6</p><p> 0 1 1 1 1 1 1 0 0
69、0 0 7</p><p> 1 0 0 0 1 1 1 1 1 1 1 8</p><p> 1 0 0 1 1 1 1 0 0 1 1 9</p><p><b>
70、表4-2</b></p><p> 在文本區(qū)內(nèi)輸入程序,程序如下:</p><p><b> Seg7.vhd</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE
71、.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY Seg7 IS</p><p> PORT(num:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> led:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b> EN
72、D Seg7;</b></p><p> ARCHITECTURE ACT OF Seg7 IS</p><p><b> BEGIN</b></p><p> LED<="1111110"WHEN num="0000"ELSE</p><p> &quo
73、t;0110000"WHEN num ="0001"ELSE</p><p> "1101101"WHEN num ="0010"ELSE</p><p> "1111001"WHEN num ="0011"ELSE</p><p> "01
74、10011"WHEN num ="0100"ELSE</p><p> "1011011"WHEN num ="0101"ELSE</p><p> "1011111"WHEN num ="0110"ELSE</p><p> "111000
75、0"WHEN num ="0111"ELSE</p><p> "1111111"WHEN num ="1000"ELSE</p><p> "1111011"WHEN num ="1001"ELSE</p><p> "1110111&qu
76、ot;WHEN num ="1010"ELSE</p><p> "0011111"WHEN num ="1011"ELSE</p><p> "1001110"WHEN num ="1100"ELSE</p><p> "0111101"W
77、HEN num ="1101"ELSE</p><p> "1001111"WHEN num ="1110"ELSE</p><p> "1000111"WHEN num ="1111";</p><p><b> END ACT;</b>
78、</p><p> 第5章 總體設(shè)計電路圖</p><p><b> 1)功能介紹</b></p><p> 將各個模塊連接在一起實現(xiàn)。</p><p><b> 2)頂層文件如下:</b></p><p><b> 3)波形仿真如下:</b>
79、</p><p><b> 圖5﹒1</b></p><p> 當(dāng)change為高電平,rt為低電平時,輸入“952”驗證,當(dāng)再次輸入“952”時鎖打開,設(shè)計正確。</p><p> 第6章 設(shè)計心得體會</p><p> 通過為期兩個星期的實訓(xùn),雖然時間倉促,而且還加上考試,可以說是很匆忙的完成了此次的在線系統(tǒng)
80、編程課程設(shè)計;不言而喻,完成的質(zhì)量也可想而知了,但倉促中也學(xué)到了很多東西。在前面的EDA實驗中,我初步認識了用Quartus 2,并大概了學(xué)會應(yīng)用了它,</p><p> 但在這次的實訓(xùn)中使我更加全面的了解了Quartus 2,而且更深一步的掌握了這個軟件。</p><p><b> 參考文獻</b></p><p> [1] 閻石主編.
81、《數(shù)字電子技術(shù)基礎(chǔ)》(第五版).高等教等育出版社.,2007</p><p> [2] 李國麗 朱維勇 何劍春.《EDA與數(shù)字系統(tǒng)設(shè)計》(第2版).機械工業(yè)出版社.,2002</p><p> [3] 宋武烈,等.《EDA技術(shù)實用教程》. 湖北科學(xué)技術(shù)出版社 ,2006</p><p> [4]譚會生,等 .《 EDA技術(shù)綜合應(yīng)用實例與分析》.西安電子科技出版
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子密碼鎖課程設(shè)計報告
- 電子密碼鎖課程設(shè)計報告
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 課程設(shè)計--電子密碼鎖
- 電子密碼鎖課程設(shè)計報告 (2)
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖設(shè)計課程設(shè)計
- 課程設(shè)計----電子密碼鎖設(shè)計
- eda課程設(shè)計報告--電子密碼鎖
- eda課程設(shè)計報告--電子密碼鎖
- eda課程設(shè)計報告-- 電子密碼鎖設(shè)計
- eda課程設(shè)計報告---電子密碼鎖設(shè)計
- 電子密碼鎖課程設(shè)計
- 電子密碼鎖設(shè)計課程設(shè)計
- 課程設(shè)計電子密碼鎖設(shè)計
- 課程設(shè)計-電子密碼鎖設(shè)計
- eda課程設(shè)計---電子密碼鎖
評論
0/150
提交評論