《電子技術應用》
您所在的位置:首頁 > 可编程逻辑 > 业界动态 > 带有48字节RAM的日历时钟芯片的设计

带有48字节RAM的日历时钟芯片的设计

2008-09-05
作者:曾爱华, 殷瑞祥, 郭 瑢,

  摘 要: 介紹了一種帶有48字節RAM的日歷時鐘" title="日歷時鐘">日歷時鐘芯片的設計,該芯片具有振蕩、分頻、可編程的計時計數、定時鬧響和中斷輸出等功能。該芯片基于Verilog HDL描述,采用模塊化設計,可擴展性好;并利用Synopsys公司的VCS和DC工具分別對設計進行了成功的系統仿真和綜合;同時還簡單介紹了ASIC設計的整個流程。
  關鍵詞: Verilog HDL 系統仿真 邏輯綜合 數字電子系統


  日歷時鐘芯片" title="時鐘芯片">時鐘芯片應用非常廣泛,例如在IC卡電子門鎖中,可利用日歷時鐘芯片的定時時鐘計數功能,在IC卡內輸入客人住房時的時間段,只有當時間段所包含的時間與日歷時鐘所記錄的時間一致時,方可開門,否則IC卡為無效卡。
  利用Synopsys公司提供的集成電路設計工具VCS和DC,設計了一個帶有48字節RAM的日歷時鐘芯片,包括該芯片RTL級代碼的編寫、功能仿真和綜合,達到了預期的目標。該芯片的具體性能指標是:工作電源電壓為2.5~6V;日歷時鐘工作電源和RAM數據保持電源電壓為1~6V;工作電流最大為50μA;四年日歷時鐘,24或12小時格式,32.768kHz時基;48字節RAM,自動字節地址增量;具有可編程的鬧鐘、定時和中斷功能。
1 ASIC設計概述
  隨著深亞微米技術的發展,數字集成電路的規模已經發展到上百萬門。未來的二十多年里,一塊ASIC芯片中將會達到上千萬門的規模。這樣的電路規模,仿真和綜合優化在開發過程中越來越重要。較復雜的數字電子系統設計往往采用自頂向下(Top-Down)的方法,設計流程可以分為以下幾個主要的部分:系統級設計" title="系統級設計">系統級設計、設計實現、設計驗證和流片封裝。深亞微米工藝下的ASIC設計流程[2]如圖1所示。


  本文主要介紹芯片的系統級設計和所有邏輯設計,生成可供物理設計的經過驗證的門級網表文件。
2 芯片的系統級設計
  系統級設計是芯片設計的第一步,也是關鍵的一步。首先根據設計要求提出設計構想,然后再對這一構想進行細化。本設計把整個系統分成幾大模塊,即產生32.768kHz的振蕩器(這個模塊不用設計)、256分頻器、48字節RAM和地址寄存器。設計構想如圖2所示。


  RAM中的00~0FH單元是一些帶有特殊功能的寄存器,00H單元是控制芯片所有功能和操作的狀態寄存器,通過設置狀態寄存器,可以選擇32.768kHz時鐘模式或計數模式。在日歷時鐘模式中,1/128秒、秒、分、小時、年/日期、星期/月都是以BCD碼分別存放在01H~06H單元的寄存器中;而在事件計數模式中,則對輸入到振蕩器輸入端(OSCI)的脈沖計數,事件計數器為6位BCD碼。07H單元是能存儲最大數為99天的定時器。08H是控制定鬧、定時和中斷輸出功能的鬧鐘控制寄存器。09H~0FH單元是以時鐘計數器相同的順序排列的鬧鐘寄存器。10FH~2FH單元用于儲存用戶信息。
  對于這樣的設計,傳統的方法是使用中小規模集成電路來構成,本文則用Verilog HDL描述來實現。整個芯片采用模塊化設計方式和Top-Down設計方法,根據寄存器的不同劃分成模塊,然后用測試程序" title="測試程序">測試程序TestBench對頂層模塊進行仿真;仿真通過后利用廠家提供的工藝庫及時序約束腳本文件對其進行綜合;綜合通過后生成門級網表文件,然后再用廠家提供的仿真庫對門級網表進行綜合后仿真。本文設計用到的工藝庫是臺灣旺宏公司(Macronix, MXIC)提供的基本單元庫(slow.db和fast.db)、基本符號單元庫(slow.sdb)和用于綜合后仿真的庫文件仿真庫(models.v)。
  這是一個同步時序電路的設計,所以保證正確的時序是設計的關鍵,本設計中有四個時鐘:
  (1)系統時鐘clksys,是外部微控制器提供的時鐘信號" title="時鐘信號">時鐘信號,用作寄存器讀、寫時鐘信號;
  (2)測試時鐘clktest,是整個芯片的測試時鐘信號,一般限于廠家使用。
  (3)時基時鐘clk32,定時方式時,外部石英晶振提供的32.768kHz振蕩信號經過256分頻后得到時鐘信號(evt128),作為RAM前16字節特殊寄存器的同步時鐘信號。
  (4)計數時鐘clkevt,計數模式時的外部計數脈沖信號。
  圖3是日歷時鐘頂層模塊端口示意圖,讀選通信號w、寫選通信號r、片選信號csn和RAM地址控制信號addr[5:0]是由外部微處理器提供的。當寫信號w為真時,將輸入數據datin[7:0]寫入存儲器被選中的地址;當讀信號r為真時,將從存儲器被選中的地址中輸出數據datu[7:0]。當滿足下面兩個條件之一時,中斷請求信號intz輸出低電平:① 00H單元中第1位為1,并且起鬧控制寄存器的第7位為1;②00H單元中的第0位為1,并且08H單元的第3位為1。


  由于篇幅有限,在這里只寫出頂層模塊rtc的部分設計程序,具體如下:
  `timescale 10ns/10ps //模擬時間定標;
  module rtc (clktest,clksys,clk32,clkevt,csn,rstz,w,r, addr, datin, datu, intz) ;
  input clktest,clksys,clk32,clkevt,csn,rstz,w,r;      //輸入輸出端口說明;
  input [7:0] datin;
  input [5:0] addr;
  output [7:0] datu;
  output intz;
  reg [7:0] datu; //設定變量的數據結構;
  ctl_status c0 ( clksys, evt128, rstz, w, cs00,…… );//調用00H單元子模塊;
  sec128 c1 ( clksys, clktest, evt128, rstz,……); //調用01H單元子模塊;
  sec c2 ( clksys, evt128, clktest, rstz,……);//調用02H單元子模塊;
  ……
  int c20 (timer_flag, alarm_flag,……);//調用產生中斷模塊;
  always @ ( addr or stop_soft or )   begin
  if ( cs & r ) begin //根據控制地址信號而輸出RAM中各寄存器的數據;
  case ( addr)
  0 :datu = { stop_soft, hold_flag, func_mode,mask_flag, alarm_en, alarm_flag, time_flag};
  1 :datu = data_latch[7:0];
  2 :datu = data_latch[15:8];
  ……
  47:datu = data_ram [255:248];
  default:datu = 8`h00;
  endcase
  end
  else
  datu = 8`h00;
  end
  endmodule
  在頂層模塊中調用了根據不同功能而編寫的20個子模塊,如ctl_status.v、sec128.v、sec.v和ram.v等。其中RAM存儲器的1F~2FH單元是模擬電路,要用全定制的方法生成。而在數字集成電路設計中,仿真時經常要用到存儲器的行為模型,這里給出的行為模型ram.v用于仿真。
3 利用EDA工具進行系統仿真
  設計人員利用先進的EDA工具作為測試平臺,以驗證數字電子系統設計模塊的邏輯功能和時序功能。雖然不同的EDA工具提供的平臺不同,但都可以對被測試對象加載激勵信號,并通過波形輸出、文件記錄輸出等方式觀察和比較仿真結果。加載激勵信號需要設計人員設計測試程序(TestBench)[3],對于較大規模的系統設計,測試程序的設計有時比本身的程序設計還要復雜。
  在本文的設計中,首先對每一個子模塊設計一個測試程序,單獨進行邏輯仿真,然后再設計一個測試程序對整個設計進行邏輯仿真。由于篇幅有限,在這里僅寫出sec.v的部分測試程序,具體如下:
  `timescale 10ns/10ps
  module sec_test;
  reg clksys,evt128,clktest,carry_sec128,rstz,datin,datout,w;
  reg [7:0] datin, datout;
  reg [1:0] func_mode;
  sec c2 ( clksys, evt128, clktest, carry_sec128, rstz, datin,
  datout, func_mode, w, );
  always #10 clksys = ~ clksys;
  always #30 evt128 = ~ evt128;
  always #50 clktest = ~ clktest;
  always #80 carry_sec128 = ~ carry_sec128;   //產生輸入激勵;
  initial
  begin
  rstz = 0;
   #90 rstz = 1;
   end            //產生復位信號
  initial
  begin
  w = 0;
   #100 w = 1;
   #5 w = 0;
  #1100 w = 1;
  #5 w = 0;
   end            //產生寫信號;
  initial
  begin
  func_mode = 0;
  #1000 func_mode = 1;
  end            //功能模式的選擇;
  initial
  begin
  datin = 0;
   #20 datin = 00100101h;
   #1000 datin = 00010010;
  end             //輸入數據;
  always @ (func_mode or datin or datout)
  $ display ('At time %t, func_mode=%b, datin is %b%b, datout is %b', $time, func_mode, datin, datout );//輸出模擬結果。
  利用Synopsys公司的仿真工具VCS進行仿真,無論在功能上還是在時序上,都完全符合要求。
4 利用EDA工具進行綜合和優化
  綜合是利用芯片制造商提供的基本電路單元(綜合庫)實現用硬件描述語言描述的電路功能。現在許多優秀的綜合工具都能借助現有的綜合庫將Verilog HDL源代碼進行綜合,轉化成門級電路圖,并且可以根據設計者施加的約束條件對電路進行優化,產生面積或者速度達到最優的結構,并生成相應的邏輯網表以供后端設計使用。
  綜合時要進行延時計算和設計規則檢查,需要設置的相關內容主要包括:操作環境、導線負載模型、設計約束、設計規則約束。通常情況,設計者要先編輯一個包括這些設置的腳本文件(例如本文編輯的腳本文件rtc.tcl),啟動邏輯綜合工具DC后就可,執行文件中的各條指令了。綜合的過程如圖4所示。下面利用日歷時鐘實例簡單介紹這一過程。


  (1) 建立設計環境
  臺灣旺宏公司的0.35μm CMOS標準單元綜合庫slow.db和fast.db包含了與非、或非、非門等基本邏輯單元,還有選擇器、與或非、或與非等較復雜的組合邏輯以及DFF(D觸發器)等時序邏輯單元。利用該庫可以這樣來建立環境:
  set target_library {slow.db fast.db}
  set link_library {* slow.db fast.db}
  set search_path '/home/tools/synopsys /library'
  (2) 讀入HDL描述
  如果讀入多個模塊,首先應該讀入的是頂層模塊。要將當前的設計設置為頂層模塊,可以這樣來設置:
  read_verilog 'home/design/rtl/rtc.v'
  read_verilog 'home/design/rtl/sec.v'
  current_design rtc
  (3) 定義環境變量
  環境變量輸出網表和輸出報告等路徑設置可以這樣來定義:
  netlist_path = 'home/design/netlist'
  report_path = 'home/design/report'
  (4) 定義性能約束、時序約束和面積約束
  性能約束主要包括創建時鐘、輸入延遲和輸出延遲等;綜合的目標是得到最小的面積。可以這樣來設置:
  creat_clock-period 70-name my_clock [get_ports clksys]
  set ex_clk[remove_from_collection[all_inputs] [get_ports clksys]
  set_input_delay 4 -clock my_clock $ex_clk
  set_output_delay 3 -clock my_clock [all_outputs]
  set_max_area 1
  (5)編譯
  用compile命令進行編譯即可。
  (6)寫門級網表
  綜合后的門級網表可以用edif文件形式保存,也可以用.V文件形式存放,采用如下命令:
  write-format verilog-hierarchy-output $netlist_path/rtc.vg
  此外,還需要保存延時信息,以便綜合后仿真,延時信息一般放在.sdf文件中,采用如下命令:
  write_sdf $netlist_path/rtc.sdf -version 1.4
  (7)給出報告
  可以報告綜合出的面積、時序信息、違反約束路徑以及單元的個數等,并存放到定義的目錄文件中,下面舉幾個例子:
  report_area     > $report_path/area.rpt
  report_timing    > $report_path/timing.rpt
  report_constraint -verbose -all_violators  > $report_path/constrain.rpt
  利用Synopsys公司的邏輯綜合工具DC[4]進行綜合和優化非常成功。
  本文設計主要描述帶有48字節RAM的日歷時鐘芯片的邏輯設計過程,并對其成功地進行了代碼編寫、仿真和綜合,生成的網表完全可以送給后端工程師進行布局布線、版圖設計等。當然,本邏輯設計不是一蹴而就的。在此過程中,對各種異常情況都需要認真分析和反復調試。


參考文獻
1 Design Automation Standards Committee of the IEEE Com-puter Society. USA: IEEE Standard Hardware Description Language Based on the Verilog Hardware Description Lan-guage IEEE Std: 1364~1995
2 Chaudhry H K, Eichenberger P, Chowdhury D R. Mixed 2-4 state Simulation with VCS. Verilog HDL Conference,1997,IEEE International, 31 March-2 April 1997: 77~82
3 任艷穎,王 彬.IC設計基礎.西安:西安電子科技大學出版社,2003
4 The SOLD of Synopsys. Design Compiler User Guide.Synopsys, 2003
5 王長宏,陳朝陽,鄒雪城,應建華.Verilog HDL設計實例及其仿真與綜合.計算機應用,2001;27(12)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: zzijzzij亚洲日本成熟少妇| 人妻无码一区二区三区四区| 国产在线观看精品一区二区三区| 国产成人精品午夜| 久久99久国产精品黄毛片入口| 欧美大香线蕉线伊人久久国产精品| www欧美日韩| 91国产视频在线播放| 日韩欧美一区二区视频在线播放V| 精品国产一区二区三区久久久狼 | 91九色国产社区在线观看| 国产精品久久久一区| 亚洲精品免费av| 久久久极品av| 久久久久久噜噜噜久久久精品| 久久人人爽人人爽人人片亚洲| 日本韩国在线不卡| 国产在线一区二区三区四区| 亚洲一区美女视频在线观看免费| 欧美中文字幕在线观看视频| 日韩一级免费在线观看| 国产欧美精品xxxx另类| 一区二区三区在线观看www| 久久亚洲国产精品成人av秋霞| 免费91麻豆精品国产自产在线观看| 久久久天堂国产精品女人| 91免费欧美精品| 久久精品一区二区三区不卡免费视频 | 欧美日韩精品久久久免费观看| 久久久久久亚洲精品不卡| 尤物一区二区三区| 狠狠色伊人亚洲综合网站色| 日韩av免费在线播放| 国产极品在线视频| 久久99精品久久久久久噜噜 | 国产精品久久久久高潮| 久久视频国产精品免费视频在线| 91精品视频在线看| 国产精品入口尤物| 国精产品99永久一区一区| 久久精品久久精品国产大片|