【正文】
可靠性高,可用于工業(yè)、商業(yè)、家庭等環(huán)境下作為數(shù)字密碼系統(tǒng)的嵌入式芯片,具有一定的實際意義。 另外,電子密碼密碼鎖在軟、硬件方面加以改動,便可構成智能化的分布式監(jiān)控網(wǎng)絡,實現(xiàn)某一范圍的集中式監(jiān)控管理,在金融、保險、軍事重地及其他安全防范領域具有廣泛的 應用前景。 24 參考文獻 [1] 李國麗等編著, EDA 與數(shù)字系統(tǒng)設計,北京:機械工業(yè)出版社, 2020; [2] 李洋編著, EDA 技術實用教程,北京:機械工業(yè)出版社, 2020; [3] 潘松等編著, VHDL 實用教程,成都:電子科技大學出版社, 2020; [4] 潘松等編著, EDA 技術實用教程(第二版),北京:科學出版社, 2020; [5] 李國洪等編著,可編程器件 EDA技術與與實踐,北京:機械工業(yè)出版社, 2020; [6] 湯元信等編著,電子工藝及電子工程設計,北京:北京航空航天大 學出版社,1999; [7] 朱余釗編著,電子材料與元件,西安:西安電子科技大學出版社, 1995; [8] 何書森編著,實用數(shù)字電路原理與設計速成,福州:福建科學技術出版社,2020; [9] 清華大學電子學教研組編著,電子技術基礎課程設計,北京:高等教育出版社, 1989; 25 致 謝 感謝 湖南工學院的老師們 ,他們嚴謹細致、一絲不茍的作風一直是我工作、學習中的榜樣;他們循循善誘的教導和不拘一格的思路給予我無盡的啟迪。 感謝 胡紅艷 老師,這 次 論文 的每個細節(jié)和每個數(shù)據(jù),都離不開 您 的細心指導。而你開朗的個性和寬容的態(tài)度,幫助我能夠很快的 掌握了設計的技巧。 感謝我的 同學朋友 ,從遙遠的 南寧 來到 衡陽 這個陌生的城市里,是你們和我共同維系著彼此之間兄弟般的感情,維系著那份家的融洽。 三 年了,仿佛就在昨天。 三 年里,沒有發(fā)生上大學前所擔心的任何不開心的事情。只是今后大家就難得再聚在一起 。 沒關系,各奔前程,大家珍重。我們在一起的日子,我會記一輩子的。 感謝我的 親人 ,焉得諼草,言樹之背,養(yǎng)育之 恩,無以回報,你們永遠健康快樂是我最大的心愿。 感恩惜福,閱讀好書,培養(yǎng)幽默,運動建身,勇于承擔,轉(zhuǎn)型思考,檢討改進,真誠傾聽,積極行動 在 論文 即將完成之際,我的心情無法平靜,從開始進入課題到 論文 的順利完成,有多少可敬的師長、同學、朋友給了我無言的幫助,在這里請接受我誠摯的謝意! 26 附 錄 附錄 1 程序清單 鍵盤輸入去 抖電路的源程序 LIBRARY IEEE。 USE 。 USE 。 ENTITY DCFQ IS PORT( CLK,CLRN,PRN,D: IN STD_LOGIC。 Q: OUT STD_LOGIC)。 END。 ARCHITECTURE ART OF DCFQ IS BEGIN PROCESS(CLK,CLRN,PRN) BEGIN IF CLRN=39。039。AND PRN=39。139。 THEN Q=39。039。 ELSIF CLRN=39。139。 AND PRN=39。039。 THEN Q=39。139。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN Q=D。 END IF。 END PROCESS。 END。 LIBRARY IEEE。 USE 。 USE 。 ENTITY DEBOUNCING IS 27 PORT(D_IN,CLK: IN STD_LOGIC。 DD1,DD0,1,0:OUT STD_LOGIC。 D_OUT,D_OUT1: OUT STD_LOGIC)。 END。 ARCHITECTURE ART OF DEBOUNCING IS COMPONENT DCFQ IS PORT(CLK,CLRN,PRN,D: IN STD_LOGIC。 Q:OUT STD_LOGIC)。 END COMPONENT DCFQ。 SIGNAL VCC,INV_D: STD_LOGIC。 SIGNAL Q1,Q0: STD_LOGIC。 SIGNAL D1,D0:STD_LOGIC。 BEGIN VCC=39。139。 INV_D=NOT D_IN。 U1: DCFQ PORT MAP(CLK=CLK,CLRN=INV_D,PRN=VCC,D=VCC,Q=Q0)。 U2: DCFQ PORT MAP(CLK=CLK,CLRN=Q0,PRN=VCC,D=VCC,Q=Q1)。 PROCESS(CLK) BEGIN IF CLK39。EVENT AND CLK=39。139。THEN D0=NOT Q1。 D1=D0。 END IF。 END PROCESS。 DD0=D0。DD1=D1。1=Q1。0=Q0。 D_OUT=NOT(D1 AND NOT D0)。 D_OUT1=NOT Q1。 END。 28 密碼鎖的輸入電路的源程序 library ieee。 use 。 use 。 use 。 entity keyinput is port(clk_1k:in std_logic。 系統(tǒng)原始時鐘 key_in:in std_logic_vector(3 downto 0)。 按鍵輸入 clk_scan:out std_logic_vector(3 downto 0)。 data_n:out std_logic_vector(3 downto 0)。 數(shù)字輸出 data_f:out std_logic_vector(3 downto 0)。 功能輸出 flag_n:out std_logic。 數(shù)字輸出標志 flag_f:out std_logic。 功能輸出標志 clk_ctr:out std_logic。 控制電路工作時鐘信號 clk_debounce:out std_logic)。 去抖電路工作時鐘 end entity keyinput。 architecture art of keyinput is ponent debouncing is port(d_in: in std_logic。 clk: in std_logic。 d_out:out std_logic)。 end ponent debouncing。 signal clk: std_logic。 signal c_keyboard:std_logic_vector(1 downto 0)。 signal c_debounce:std_logic。 signal c: std_logic_vector(3 downto 0)。 signal n,f:std_logic_vector(3 downto 0)。 29 signal fn,ff:std_logic。 signal sel:std_logic_vector(3 downto 0)。 begin counter :block is signal q:std_logic_vector(5 downto 0)。 signal sel:std_logic_vector(3 downto 0)。 begin process (clk_1k) is begin if clk_1k39。event and clk_1k=39。139。 then q=q+1。 end if。 c_debounce=q(2)。 c_keyboard=q(5 downto 4)。 clk=q(0)。 clk_ctr=clk。 end process。 clk_debounce=c_debounce。 sel=1110 when c_keyboard=0 else 1101 when c_keyboard=1 else 1011 when c_keyboard=2 else 0111 when c_keyboard=3 else 1111。 clk_scan=sel。 end block counter。 debounce:block is begin u1: debouncing port map (d_in=key_in(0),d_out=c(0), 30 clk=c_debounce)。 u2: debouncing port map (d_in=key_in(1),d_out=c(1), clk=c_debounce)。 u3: debouncing port map (d_in=key_in(2),d_out=c(2), clk=c_debounce)。 u4: debouncing port map (d_in=key_in(3),d_out=c(3), clk=c_debounce)。 end block debounce 。 key_decoder:block signal z:std_logic_vector(5 downto 0)。 begin process(clk) begin z=c_keyboardamp。c。 if clk39。event and clk=39。139。 then case z is when 000111=n=0000。 when 001011=n=0001。 when 001101=n=0010。 when 001110=n=0011。 when 010111=n=0100。 when 011011=n=0101。 when 011101=n=0110。 when 011110=n=0111。 when 110111=n=1000。 when 111011=n=1001。 when others =n=1111。 end case。 end if。 31 if clk39。event and clk=39。139。 then case z is when 110111 =f=0001。 clear when 111011 =f=0010。 back when 111101 =f=0100。 lock when 111110 =f=1000。 set when others =f=0000。 end case。 end if。 fn=not (n(3) and n(2) and n(1) and n(0))。 ff=f(0) or f(1) or f(2) or f(3)。 data_n=n。 data_f=f。 flag_n=fn。 flag_f=ff。 end process。 end block key_decoder。 end architecture art。 密碼鎖的控制電路的源程序 library ieee。 use 。 use 。 use 。 entity ctrl is port( data_n: in std_logic