欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4

      時(shí)間:2019-05-14 21:53:53下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4》。

      第一篇:電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4

      實(shí)驗(yàn)四基于ARM的嵌入式Linux開發(fā)環(huán)境建立 【實(shí)驗(yàn)?zāi)康摹?1.掌握嵌入式Linux 開發(fā)環(huán)境的基本流程。2.熟悉Linux 操作系統(tǒng) 3.熟悉嵌入式開發(fā)平臺(tái)

      【實(shí)驗(yàn)內(nèi)容】

      在PC機(jī)虛擬機(jī)下的Linux系統(tǒng)中建立基于ARM 的嵌入式Linux 開發(fā)環(huán)境。

      1.學(xué)會(huì)網(wǎng)口的配置 2.Minicom端口的使用

      【預(yù)備知識(shí)】

      1.了解ARM9處理器結(jié)構(gòu) 2.了解Linux 系統(tǒng)結(jié)構(gòu)

      3.了解ARM開發(fā)板使用常識(shí)

      【實(shí)驗(yàn)設(shè)備和工具】

      硬件:PC機(jī)Pentium100以上,ARM嵌入式開發(fā)平臺(tái)

      軟件:PC機(jī)Linux 操作系統(tǒng)+MINICOM+AMRLINUX開發(fā)環(huán)境

      【實(shí)驗(yàn)原理】

      1.交叉編譯器在一種計(jì)算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,我們就稱這種編譯器支持交叉編譯,這個(gè)編譯過(guò)程就叫交叉編譯。簡(jiǎn)單地說(shuō),就是在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼。這里需要注意的是所謂平臺(tái),實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)

      (Architecture)、操作系統(tǒng)(OperatingSystem)。同一個(gè)體系結(jié)構(gòu)可以運(yùn)行不同的操作系統(tǒng);同樣,同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。舉例來(lái)說(shuō),我們常說(shuō)的x86 Linux平臺(tái)實(shí)際上是Intelx86體系結(jié)構(gòu)和Linuxforx86操作系統(tǒng)的統(tǒng)稱;而x86WinNT平臺(tái) 實(shí)際上是Intelx86體系結(jié)構(gòu)和Windows NTforx86操作系統(tǒng)的簡(jiǎn)稱。交叉編譯這個(gè)概念的出現(xiàn)和流行是和嵌入式系統(tǒng)的廣泛發(fā)展同步的。我們常用的計(jì)算機(jī)軟

      件,都需要通過(guò)編譯的方式,把使用高級(jí)計(jì)算機(jī)語(yǔ)言編寫的代碼(比如C代碼)編譯(compile)成計(jì)算機(jī)可以識(shí)別和執(zhí)行的二進(jìn)制代碼。比如,我們?cè)赪indows平臺(tái)上,可使用Visual C++ 開發(fā)環(huán)境,編寫程序并編譯成可執(zhí)行程序。這種方式下,我們使用PC平臺(tái)上的Windows工具開發(fā)針對(duì)Windows本身的可執(zhí)行程序,這種編譯過(guò)程稱為nativecompilation,中文可理解

      為本機(jī)編譯。然而,在進(jìn)行嵌入式系統(tǒng)的開發(fā)時(shí),運(yùn)行程序的目標(biāo)平臺(tái)通常具有有限的存儲(chǔ)空間和運(yùn)算能力,比如常見的ARM平臺(tái),其一般的靜態(tài)存儲(chǔ)空間大概是16到32MB,而CPU 的主頻大概在100MHz到500MHz之間。這種情況下,在ARM平臺(tái)上進(jìn)行本機(jī)編譯就不太可能了,這是因?yàn)橐话愕木幾g工具鏈(compilationtoolchain)需要很大的存儲(chǔ)空間,并需要很強(qiáng) 的CPU運(yùn)算能力。為了解決這個(gè)問(wèn)題,交叉編譯工具就應(yīng)運(yùn)而生了。通過(guò)交叉編譯工具,我們就可以在CPU能力很強(qiáng)、存儲(chǔ)空間足夠的主機(jī)平臺(tái)上(比如PC上)編譯出針對(duì)其他平臺(tái)的可執(zhí)行程序。

      要進(jìn)行交叉編譯,我們需要在主機(jī)平臺(tái)上安裝對(duì)應(yīng)的交叉編譯工具鏈(crosscompilation tool-chain),然后用這個(gè)交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標(biāo)平臺(tái)上運(yùn)行的代碼。常見的交叉編譯例子如下:

      1、在WindowsPC上,利用RVDS(ARM開發(fā)環(huán)境),使用armcc編譯器,則可編譯出針對(duì)ARMCPU的可執(zhí)行代碼。

      2、在LinuxPC上,利用arm-linux-gcc編譯器,可編譯出針對(duì)LinuxARM平臺(tái)的可執(zhí)行代碼。

      3、在Windows PC上,利用cygwin環(huán)境,運(yùn)行arm-elf-gcc編譯器,可編譯出針對(duì)ARMCPU的可執(zhí)行代碼。

      2.NFS服務(wù)

      NFS是Net FileSystem的簡(jiǎn)寫,即網(wǎng)絡(luò)文件系統(tǒng).網(wǎng)絡(luò)文件系統(tǒng)是FreeBSD支持的文件系統(tǒng)中的一種,也被稱為NFS.NFS允許一個(gè)系統(tǒng)在網(wǎng)絡(luò)上與它人共享目錄和文件。通過(guò)使用NFS,用戶和程序可以像訪問(wèn)本地文件一樣訪問(wèn)遠(yuǎn)端系

      統(tǒng)上的文件。

      NFS至少有兩個(gè)主要部分:一臺(tái)服務(wù)器和一臺(tái)(或者更多)客戶機(jī)??蛻魴C(jī)遠(yuǎn)程訪問(wèn)存放在服務(wù)器上的數(shù)據(jù)。為了正常工作,一些進(jìn)程需要被配置并運(yùn)行。

      在本實(shí)驗(yàn)中就是將PC機(jī)作為服務(wù)器,而將ARM開發(fā)板作為客戶機(jī),這樣ARM開發(fā)板就可以遠(yuǎn)程

      訪問(wèn)存放在在PC機(jī)上的數(shù)據(jù),這樣可以縮短研發(fā)周期,更方便的調(diào)試程序。

      【實(shí)驗(yàn)步驟】

      1.雙擊桌面上VMWARE,打開Linux 虛擬機(jī) 2.點(diǎn)擊啟動(dòng)虛擬機(jī),啟動(dòng)虛擬機(jī) 3.以root身份登陸虛擬機(jī),密碼123456

      4.其他步驟詳見實(shí)驗(yàn)指導(dǎo)書

      【實(shí)驗(yàn)結(jié)果和程序】

      基于ARM 的嵌入式Linux開發(fā)環(huán)境建立完畢。

      【思考題】

      1.如何驗(yàn)證交叉編譯器已安裝成功? 答:在終端輸入命令:cd/arm/rootfs/home/driver(文件夾里已有test_led.c文件)arm-linux-gcc–o test_ledtest_led.c

      若有可執(zhí)行文件test_led生成則表示交叉編譯器已安裝成功

      2.如果我們需要變更根文件系統(tǒng)的目錄,該如何設(shè)置使得ARM開發(fā)板可以成功掛載?答:修改/etc/exports 文件的內(nèi)容,將/arm/rootfs*(rw,sync,no_root_squash)改為/XX/XXX

      *(rw,sync,no_root_squash)(/XX/XXX為變更后點(diǎn)的文件目錄)

      3.怎么在u-boot命令行下修改ARM 開發(fā)板的IP?

      答:輸入setenvip=x.x.x.x:192.168.0.1:192.168.0.1:255.255.255.0:uestc:eth0:off

      Saveenv

      x,x,x,x為ARM開發(fā)板的新IP。

      【實(shí)驗(yàn)結(jié)論】

      本實(shí)驗(yàn)實(shí)現(xiàn)了基于ARM 的嵌入式Linux 開發(fā)環(huán)境建立

      第二篇:電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)5

      實(shí)驗(yàn)五 基于ARM的模塊方式驅(qū)動(dòng)程序?qū)嶒?yàn) 【實(shí)驗(yàn)?zāi)康摹?1.掌握Linux 系統(tǒng)下設(shè)備驅(qū)動(dòng)程序的作用與編寫技巧 2.掌握Linux 驅(qū)動(dòng)程序模塊加載和卸載的方法 3.了解Linux 內(nèi)核中的makefile和kconfig文件

      【實(shí)驗(yàn)內(nèi)容】

      1.基于s3c2440 開發(fā)板編寫led 驅(qū)動(dòng)程序。2.將編寫好的led驅(qū)動(dòng)加入linux內(nèi)核中,修改makefile和kconfig文件,配置和編譯內(nèi)核。3.編寫關(guān)于led 的測(cè)試程序,交叉編譯后運(yùn)行,控制led 燈的亮滅。

      【預(yù)備知識(shí)】

      1.了解ARM9處理器結(jié)構(gòu)和Linux 系統(tǒng)結(jié)構(gòu)

      2.熟練掌握C語(yǔ)言。

      【實(shí)驗(yàn)設(shè)備和工具】

      ? 硬件:ARM嵌入式開發(fā)平臺(tái),PC機(jī)Pentium100 以上。

      ? 軟件:PC機(jī)Linux操作系統(tǒng)+MINICOM+AMRLINUX 開發(fā)環(huán)境

      【實(shí)驗(yàn)原理】

      ?

      linux設(shè)備驅(qū)動(dòng)程序 ? 驅(qū)動(dòng)的模塊式加載和卸載

      ? 編譯模塊

      ? 裝載和卸載模塊

      ? led 驅(qū)動(dòng)的原理

      在本開發(fā)板上有八個(gè)led指示燈,從下往上分別為L(zhǎng)ED0-LED7。這八個(gè)led燈都是接的芯片上的gpio口(通用功能輸入輸出口)。在本實(shí)驗(yàn)的開發(fā)板硬件設(shè)計(jì)中,當(dāng)led 燈對(duì)應(yīng)的gpio的電平為低時(shí),led燈被點(diǎn)亮;當(dāng)led燈對(duì)應(yīng)的gpio的電平為高時(shí),led燈滅。本驅(qū)動(dòng)的作用就是通過(guò)設(shè)置對(duì)應(yīng)gpio口的電平來(lái)控制led 的亮滅。

      因?yàn)锳RM 芯片內(nèi)的GPIO口都是復(fù)用的,即它可以被配置為多種不同的功能,本實(shí)

      驗(yàn)是使用它的普通的I/O口的輸出功能,故需要對(duì)每個(gè)GPIO口進(jìn)行配置。在內(nèi)核中已經(jīng)定義了對(duì)GPIO口進(jìn)行配置的函數(shù),我們只需要調(diào)用這些函數(shù)就可以完成對(duì)GPIO口的配置。

      【實(shí)驗(yàn)步驟】實(shí)驗(yàn)程

      序運(yùn)行效果:

      程序會(huì)提示:“pleaseenterthe led status”

      輸入與希望顯示的led狀態(tài)對(duì)應(yīng)的ledstatus值(輸入十進(jìn)制值即可),觀察led 的顯示情況。例如:

      ? 輸入數(shù)字“3”,對(duì)應(yīng)的二進(jìn)制數(shù)字為00000011

      故點(diǎn)亮LED2~LED7

      ? 輸入數(shù)字“4”,對(duì)應(yīng)的二進(jìn)制數(shù)字為00000100

      故點(diǎn)亮LED0,LED1,LED3~LED7

      【實(shí)驗(yàn)結(jié)果和程序】

      C語(yǔ)言程序:

      #include #include #include #include #include #include #include #include #include #include #include #include #include#defineDEVICE_NAME “s3c2440-led”

      static intLedMajor=231;

      staticintLedMinor=0;

      static charledstatus=0xff;staticstructclass*s3c2440_class;staticstructcdev *s3c2440_led_cdev;

      /*

      ******************************************************************************* ************************

      ** Function name:Update_led()**Descriptions **Input :NONE **Output :NONE :update the led status

      ******************************************************************************* ************************

      */ staticvoid Update_led(void)

      {

      if(ledstatus&0x01)

      s3c2410_gpio_setpin(S3C2410_GPC7,1);//LED0滅

      else

      s3c2410_gpio_setpin(S3C2410_GPC7,0);//LED0亮

      if(ledstatus&0x02)

      s3c2410_gpio_setpin(S3C2410_GPC5,1);//LED1滅

      else

      s3c2410_gpio_setpin(S3C2410_GPC5,0);//LED1亮

      if(ledstatus&0x04)

      s3c2410_gpio_setpin(S3C2410_GPH9,1);//LED2滅

      else

      s3c2410_gpio_setpin(S3C2410_GPH9,0);//LED2亮

      if(ledstatus&0x08)

      s3c2410_gpio_setpin(S3C2410_GPB4,1);//LED3滅

      else

      s3c2410_gpio_setpin(S3C2410_GPB4,0);//LED3亮

      if(ledstatus&0x10)

      s3c2410_gpio_setpin(S3C2410_GPG5,1);//LED4滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG5,0);//LED4亮

      if(ledstatus&0x20)

      s3c2410_gpio_setpin(S3C2410_GPG6,1);//LED5滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG6,0);//LED5亮

      if(ledstatus&0x40)

      s3c2410_gpio_setpin(S3C2410_GPG7,1);//LED6滅elses3c2410_gpio_setpin(S3C2410_GPG7,0);//LED6亮

      if(ledstatus&0x80)

      s3c2410_gpio_setpin(S3C2410_GPG8,1);//LED7滅

      else

      s3c2410_gpio_setpin(S3C2410_GPG8,0);//LED7亮

      }

      staticssize_ts3c2440_Led_write(structfile*file,constchar*buffer,size_tcount,loff_t*ppos){

      copy_from_user(&ledstatus,buffer,sizeof(ledstatus));

      Update_led();

      printk(“write: led=0x%x,count=%dn”,ledstatus,count);returnsizeof(ledstatus);} staticints3c2440_Led_open(structinode*inode,struct file *filp)

      {

      printk(“l(fā)ed device openn”);

      return 0;

      } staticints3c2440_Led_release(structinode*inode,struct file*filp)

      {

      printk(“l(fā)ed device releasen”);

      return 0;} staticstructfile_operationss3c2440_fops={.owner=THIS_MODULE,.open=s3c2440_Led_open,.write=s3c2440_Led_write,.release=s3c2440_Led_release, };

      staticintinits3c2440_Led_init(void)

      {

      dev_ts3c2440_leds_devno;

      /*configure the gpiofor leds*/

      s3c2410_gpio_cfgpin(S3C2410_GPG5,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG6,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG7,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPG8,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPC7,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPC5,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPH9,S3C2410_GPIO_OUTPUT);

      s3c2410_gpio_cfgpin(S3C2410_GPB4,S3C2410_GPIO_OUTPUT);

      Update_led();/*registerthe devnumber*/ s3c2440_leds_devno=MKDEV(LedMajor,LedMinor);ret=register_chrdev_region(s3c2440_leds_devno, 1,DEVICE_NAME);

      /*registerthe chardevice*/

      s3c2440_led_cdev=cdev_alloc();if

      (s3c2440_led_cdev!= NULL)

      { cdev_init(s3c2440_led_cdev, &s3c2440_fops);s3c2440_led_cdev->owner=THIS_MODULE;if(cdev_add(s3c2440_led_cdev, s3c2440_leds_devno, 1))

      printk(KERN_NOTICE “Something wrong when addings3c2440_led_cdev!n”);

      else

      printk(“Success addings3c2440_led_cdev!n”);} /*create the device node in /dev*/ s3c2440_class =class_create(THIS_MODULE, “l(fā)ed_class”);class_device_create(s3c2440_class, NULL, s3c2440_leds_devno, NULL, DEVICE_NAME);

      printk(DEVICE_NAME “ initializedn”);

      return 0;

      }

      staticvoid exits3c2440_Led_exit(void)

      cdev_del(s3c2440_led_cdev);class_device_destroy(s3c2440_class, MKDEV(LedMajor,LedMinor));class_destroy(s3c2440_class);printk(DEVICE_NAME “ removedn”);

      }

      module_init(s3c2440_Led_init);

      module_exit(s3c2440_Led_exit);

      【思考題】

      1.設(shè)備驅(qū)動(dòng)程序的功能是什么?答:設(shè)備驅(qū)動(dòng)的功能就是將系統(tǒng)提供的調(diào)用映射到作用于實(shí)際硬件的和設(shè)備相關(guān)的操作上。

      2.模塊化的最大優(yōu)點(diǎn)是什么?答:可以在系統(tǒng)正在運(yùn)行著的時(shí)候給內(nèi)核增加模塊

      提供的功能(也可以移除功能)。

      3.如果在驅(qū)動(dòng)模塊中刪除module_exit(s3c2440_Led_exit);后會(huì)有什么影響?

      答:這個(gè)模塊將不能被移除。

      4.驅(qū)動(dòng)代碼中調(diào)用的宏MKDEV 的作用是什么?答:獲取設(shè)備在設(shè)備表中的位置。輸入主設(shè)備號(hào),從設(shè)備號(hào),返回位置號(hào)。

      【實(shí)驗(yàn)結(jié)論】

      本實(shí)驗(yàn)實(shí)現(xiàn)了linux環(huán)境下的led燈驅(qū)動(dòng)的添加。

      第三篇:北京科技大學(xué)微機(jī)原理實(shí)驗(yàn)報(bào)告

      微機(jī)原理及應(yīng)用實(shí)驗(yàn)報(bào)告

      學(xué)院: 班級(jí): 學(xué)號(hào): 姓名:

      微機(jī)實(shí)驗(yàn)報(bào)告書(Ⅰ)學(xué)號(hào):姓名:班級(jí): 同組名單:實(shí)驗(yàn)日期:

      實(shí)驗(yàn)題目:8253可編程定時(shí)器計(jì)數(shù)器

      實(shí)驗(yàn)?zāi)繕?biāo):掌握8253的基本工作原理和編程方法 實(shí)驗(yàn)步驟:

      連接電路圖

      如圖虛線連接電路,將計(jì)數(shù)器0設(shè)置為方式0,計(jì)數(shù)器初值為N(N<=0FH),用手動(dòng)逐個(gè)輸入單脈沖,編程使計(jì)數(shù)值在屏幕上顯示,并同時(shí)用邏輯筆觀察OUT0電平變化(當(dāng)輸入N+1個(gè)脈沖后OUT0變高電平)。程序框圖:

      程序清單:

      ;*************************;;* 8253方式0計(jì)數(shù)器實(shí)驗(yàn) *;;*************************;IOPORT

      EQU

      0C800H-0280H

      IO8253A EQU

      IOPORT+283H

      IO8253B EQU

      IOPORT+280H

      CODE SEGMENT

      ASSUME

      CS:CODE

      START: MOV

      AL,00010000B

      ;設(shè)置8253工作方式

      MOV

      DX,IO8253A

      OUT

      DX,AL

      MOV

      DX,IO8253B

      ;送計(jì)數(shù)初值為0FH

      MOV

      AL,0FH

      OUT

      DX,AL

      LLL: IN

      AL,DX

      ;讀計(jì)數(shù)初值

      CALL

      DISP

      ;調(diào)顯示子程序

      PUSH

      DX

      MOV

      AH,06H

      MOV

      DL,0FFH

      INT

      21H

      POP

      DX

      JZ

      LLL

      ;跳轉(zhuǎn)到LLL

      MOV

      AH,4CH

      ;退出

      INT

      21H

      DISP PROC

      NEAR

      ;顯示子程序

      PUSH

      DX

      AND

      AL,0FH

      ;首先取低四位

      MOV

      DL,AL

      CMP

      DL,9

      ;判斷是否<=9

      JLE

      NUM

      ;若是則為'0'-'9',ASCII碼加30H

      ADD

      DL,7

      ;否則為'A'-'F',ASCII碼加37H

      NUM: ADD

      DL,30H

      MOV

      AH,02H

      ;顯示

      INT

      21H

      MOV

      DL,0DH

      ;加回車符

      INT

      21H

      MOV

      DL,0AH

      ;加換行符

      INT

      21H

      POP

      DX

      RET

      ;子程序返回

      DISP ENDP

      CODE ENDS

      END

      START 運(yùn)行結(jié)果:

      每輸入一個(gè)單脈沖,屏幕上的數(shù)值減1,從15減到0后(撥動(dòng)16次后),檢測(cè)到OUT0輸出由低電平變?yōu)楦唠娖健P〗Y(jié)(體會(huì)與收獲):

      通過(guò)預(yù)習(xí)和實(shí)驗(yàn),學(xué)會(huì)了 8253 芯片和微機(jī)接口原理和方法,掌握 8253 定時(shí)器/計(jì)數(shù)器的基本工作原理、工作方式和編程原理,熟悉了匯編代碼的編寫。實(shí)驗(yàn)中,連接電路,利用代碼控制實(shí)驗(yàn)電路,深對(duì)了課本理論的理解。

      由于是第一次實(shí)驗(yàn),進(jìn)程比較緩慢,所以僅進(jìn)行了8253可編程定時(shí)器/計(jì)數(shù)器的一個(gè)實(shí)驗(yàn),下次實(shí)驗(yàn)會(huì)熟練一些。

      微機(jī)實(shí)驗(yàn)報(bào)告書(Ⅱ)

      學(xué)號(hào):姓名:班級(jí): 同組名單:實(shí)驗(yàn)日期:

      實(shí)驗(yàn)題目:1.8253可編程定時(shí)器計(jì)數(shù)器

      2.8255可編程并行接口(方式0)3.七段數(shù)碼管

      實(shí)驗(yàn)?zāi)繕?biāo):1.掌握8253的基本工作原理和編程方法

      2.掌握8255方式0的工作原理及使用方法 3.掌握數(shù)碼管顯示數(shù)字的原理

      實(shí)驗(yàn)步驟: 實(shí)驗(yàn)一:

      連接電路圖

      按上圖連接電路,將計(jì)數(shù)器0、計(jì)數(shù)器1分別設(shè)置為方式3,計(jì)數(shù)初值設(shè)為1000,用邏輯筆觀察OUT1輸出電平的變化(頻率1HZ)。實(shí)驗(yàn)二:

      連接電路圖

      1)實(shí)驗(yàn)電路如圖,8255C口接邏輯電平開關(guān)K0~K7,A口接LED顯示電路L0~L7。

      2)編程從8255C口輸入數(shù)據(jù),再?gòu)腁口輸出。實(shí)驗(yàn)三:

      連接電路圖

      靜態(tài)顯示:按圖連接好電路,將8255的A口PA0~PA6分別與七段數(shù)碼管的段碼驅(qū)動(dòng)輸入端a~g相連,位碼驅(qū)動(dòng)輸入端S1接+5V(選中), S0、dp接地(關(guān)閉)。編程從鍵盤輸入一位十進(jìn)制數(shù)字(0~9),在七段數(shù)碼管上顯示出來(lái)。程序框圖: 實(shí)驗(yàn)一:

      實(shí)驗(yàn)二:

      實(shí)驗(yàn)三:

      程序清單: 實(shí)驗(yàn)一:

      ;*******************;* 8253分頻 *;******************* IOPORT EQU

      0C800H-0280H

      IO8253A EQU

      IOPORT+283H

      IO8253B EQU

      IOPORT+280H

      IO8253C EQU

      IOPORT+281H

      CODE SEGMENT

      ASSUME

      CS:CODE

      START: MOV

      DX,IO8253A;向8253寫控制字

      MOV

      AL,36H

      ;工作方式

      OUT

      DX,AL

      MOV

      AX,1000

      ;寫入循環(huán)計(jì)數(shù)初值1000

      MOV

      DX,IO8253B

      OUT

      DX,AL

      ;先寫入低字節(jié)

      MOV

      AL,AH

      OUT

      DX,AL

      ;后寫入高字節(jié)

      MOV

      DX,IO8253A

      MOV

      AL,76H

      ;設(shè)工作方式

      OUT

      DX,AL

      MOV

      AX,1000

      ;寫入循環(huán)計(jì)數(shù)初值1000

      MOV

      DX,IO8253C

      OUT

      DX,AL

      ;先寫低字節(jié)

      MOV

      AL,AH

      OUT

      DX,AL

      ;后寫高字節(jié)

      MOV

      AH,4CH

      ;程序退出

      INT

      21H

      CODE ENDS

      END

      START

      實(shí)驗(yàn)二:

      ;*************************;;* 8255A的基本輸入輸出 *;;*************************;IOPORT EQU 0C800H‐280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+ 28BH IO8255C EQU IOPORT+28AH CODE SEGMENT ASSUME CS:CODE START: MOV DX,IO8255B;對(duì) 8255 進(jìn)行設(shè)定,A 輸出,C 輸入

      MOV AL,10001001B

      OUT DX,AL INPUT: MOV DX,IO8255C;從 C 輸入

      IN AL,DX

      MOV DX,IO8255A;從 A 輸出

      OUT DX,AL

      MOV DL,0FFH;判斷是否有按鍵

      MOV AH,06H

      INT 21H

      JZ INPUT;若無(wú),則繼續(xù) C 輸入,A 輸出

      MOV AH,4CH;否則,返回 DOS

      INT 21H CODE ENDS END START 實(shí)驗(yàn)三:

      ;************************************;;*鍵盤輸入數(shù)據(jù)(0-9)控制LED數(shù)碼管顯示*;;************************************;

      DATA

      SEGMENT

      IOPORT

      EQU

      0C800H-280H IO8255A

      EQU

      IOPORT+288H IO8255B

      EQU

      IOPORT+28BH IO8255C

      EQU

      IOPORT+28AH

      LED

      DB

      3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

      MESG1

      DB

      0DH,0AH,'Input a num(0--9),other key is exit:',0DH,0AH,'$' DATA

      ENDS CODE SEGMENT

      ASSUME CS:CODE,DS:DATA START:

      MOV

      AX,DATA

      MOV

      DS,AX

      MOV

      DX,IO8255B

      ;使 8255 的A口為輸出方式

      MOV

      AX,10000000B

      OUT

      DX,AL

      SSS:

      MOV

      DX,OFFSET MESG1

      ;顯示提示信息

      MOV

      AH,09H

      INT

      21H

      MOV

      AH,01

      ;從鍵盤接收字符

      INT

      21H

      CMP

      AL,30H

      ;是否小于 0

      JL

      EXIT

      ;若是則退出

      CMP

      AL,39H

      ;是否大于9

      JG

      EXIT

      ;若是則退出

      SUB

      AL,30H

      ;將所得字符的 ASCII 碼減 30H

      MOV

      BX,OFFSET LED

      ;BX為數(shù)碼表的起始地址

      XLAT

      ;求出相應(yīng)的段碼

      MOV

      DX,IO8255A

      ;從 8255 的A口輸出

      OUT

      DX,AL

      JMP

      SSS

      ;轉(zhuǎn) SSS EXIT:

      MOV

      AH,4CH

      ;返回

      INT

      21H CODE

      ENDS

      END

      START;

      運(yùn)行結(jié)果: 實(shí)驗(yàn)一:

      8253通道0和通道1均工作在方式3,計(jì)數(shù)初值均為1000。通道0的時(shí)鐘輸入為1MHz標(biāo)準(zhǔn)脈沖,產(chǎn)生1000Hz的方波;通道1以通道0輸出的1000Hz方波脈沖為輸入,產(chǎn)生1Hz的方波。用邏輯筆發(fā)現(xiàn),OUT1 輸出電平呈規(guī)律性高低變化(顯示燈閃爍),時(shí)間間隔為 1s,說(shuō)明輸出頻率為 1Hz,實(shí)現(xiàn)計(jì)時(shí)器功能。實(shí)驗(yàn)二:

      當(dāng)邏輯開關(guān)K0~K7中的一個(gè)或幾個(gè)打開時(shí),對(duì)應(yīng)的LED燈就會(huì)亮起來(lái),即利用8255A實(shí)現(xiàn)了基本的輸入輸出控制。實(shí)驗(yàn)三:

      靜態(tài)顯示:當(dāng)從鍵盤輸入0~9任一數(shù)字時(shí),七段數(shù)碼管上便 會(huì)顯示相應(yīng)的數(shù)字,按下其他按鍵則退出程序。小結(jié)(體會(huì)和收獲):

      通過(guò)本次實(shí)驗(yàn),進(jìn)一步了解了8253可編程定時(shí)器/計(jì)數(shù)器;鞏固了可編程并行接口8255的基本知識(shí)點(diǎn),了解了該芯片的應(yīng)用。通過(guò)編程實(shí)現(xiàn),熟悉了8255方式控制字,了解了方式0和基本工作原理。通過(guò)這三次實(shí)驗(yàn)的學(xué)習(xí),對(duì)于可編程接口芯片有了更深的認(rèn)識(shí),掌握了基本的微機(jī)接口方法。

      在實(shí)驗(yàn)過(guò)程中要細(xì)心,當(dāng)編譯、鏈接或者運(yùn)行的時(shí)候遇到錯(cuò)誤的時(shí)候,要仔細(xì)檢查程序的輸入是否正確,很容易輸錯(cuò)字母數(shù)字。

      微機(jī)實(shí)驗(yàn)報(bào)告書(Ⅲ)

      學(xué)號(hào):姓名:班級(jí): 同組名單:實(shí)驗(yàn)日期: 實(shí)驗(yàn)題目:步進(jìn)電機(jī)控制實(shí)驗(yàn)

      實(shí)驗(yàn)?zāi)繕?biāo):1.了解步進(jìn)電機(jī)控制的基本原理

      2.掌握控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的編程方法

      實(shí)驗(yàn)步驟:

      連接電路圖

      1)按圖14連接線路,利用8255輸出脈沖序列,開關(guān)K0~K6控制步進(jìn)電機(jī)轉(zhuǎn)速,K7控制步進(jìn)電機(jī)轉(zhuǎn)向。8255 CS接288H~28FH。PA0~PA3接BA~BD;PC0~PC7接K0~K7。

      2)編程:當(dāng)K0~K6中某一開關(guān)為“1”(向上撥)時(shí)步進(jìn)電機(jī)啟動(dòng)。K7向上撥電機(jī)正轉(zhuǎn),向下?lián)茈姍C(jī)反轉(zhuǎn)。程序框圖:

      程序清單:

      ;*******************************;;*

      步進(jìn)電機(jī)

      *;;*******************************;

      DATA

      SEGMENT

      IOPORT

      EQU

      0E400H-280H

      IO8255A

      EQU

      IOPORT+288H

      ;8255A 輸出端口

      IO8255B

      EQU

      IOPORT+ 28BH

      ;8255B 控制端口

      IO8255C

      EQU

      IOPORT+ 28AH

      ;8255C 輸入端口

      BUF

      DB

      0

      MES

      DB

      'K0-K6 ARE SPEED CONTROL',0AH,0DH

      DB

      'K6 IS THE LOWEST SPEED ',0AH,0DH

      DB

      'K0 IS THE HIGHEST SPEED',0AH,0DH

      DB

      'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$'

      DATA

      ENDS

      CODE SEGMENT

      ASSUME

      CS:CODE,DS:DATA

      START:

      MOV

      AX,CS

      MOV

      DS,AX

      MOV

      AX,DATA

      MOV

      DS,AX

      MOV

      DX,OFFSET MES

      MOV

      AH,09

      INT

      21H

      MOV

      DX,IO8255B

      MOV

      AL, 10001001B

      OUT

      DX,AL

      ;8255 C輸入, A 輸出

      MOV

      BUF,33H

      OUT1:

      MOV

      AL,BUF

      MOV

      DX,IO8255A

      OUT

      DX,AL

      PUSH

      DX

      MOV

      AH,06H

      MOV

      DL,0FFH

      INT

      21H

      POP

      DX

      JE

      IN1

      MOV

      AH,4CH

      INT

      21H

      IN1:

      MOV

      DX,IO8255C

      IN

      AL,DX

      ;輸入開關(guān)狀態(tài)

      TEST

      AL,01H

      JNZ

      K0

      TEST

      AL,02H

      JNZ

      K1

      TEST

      AL,04H

      JNZ

      K2

      TEST

      AL,08H

      JNZ

      K3

      TEST

      AL,10H

      JNZ

      K4

      TEST

      AL,20H

      JNZ

      TEST

      JNZ

      STOP:

      MOV

      MOV

      JMP

      K0:

      MOV

      SAM:

      TEST

      JZ

      JMP

      K1:

      MOV

      JMP

      SAM

      K2:

      MOV

      JMP

      K3:

      MOV

      JMP

      K4:

      MOV

      JMP

      K5:

      MOV

      JMP

      K6:

      MOV

      JMP

      SAM

      ZX0:

      CALL

      MOV

      ROR

      MOV

      JMP

      NX0:

      CALL

      MOV

      ROL

      MOV

      JMP

      DELAY

      PROC

      DELAY1:

      MOV

      DELAY2:

      LOOP

      K5

      AL,40H K6

      DX,IO8255C AL,0FFH

      OUT1

      BL,40H

      AL,80H ZX0 NX0

      BL,50H

      BL,70H

      SAM

      BL,80H SAM

      BL,0A0H SAM

      BL,0C0H SAM

      BL,0FFH

      DELAY

      AL,BUF

      AL,1

      BUF,AL OUT1

      DELAY

      AL,BUF

      AL,1

      BUF,AL OUT1

      NEAR

      CX,0FFFFH

      DELAY2

      DEC

      BL

      JNZ

      DELAY1

      RET

      DELAY

      ENDP

      CODE

      ENDS

      END

      START 運(yùn)行結(jié)果:

      當(dāng)K0~K6中任意一開關(guān)向上撥時(shí)步進(jìn)電機(jī)啟動(dòng),且K1速度最快,K6速度最慢;當(dāng)K7向上撥電機(jī)正轉(zhuǎn),向下?lián)茈姍C(jī)反轉(zhuǎn)。當(dāng)鍵盤中有任意鍵輸入的時(shí)候則程序終止。小結(jié)(收獲與體會(huì)):

      實(shí)驗(yàn)和理論是相互檢驗(yàn),相互補(bǔ)充和相互促進(jìn)的,在實(shí)際動(dòng)手動(dòng)腦運(yùn)用理論知識(shí)的時(shí)候,能更深入地領(lǐng)會(huì)概念,熟練運(yùn)用,在此基礎(chǔ)上方能進(jìn)行創(chuàng)新和自由發(fā)揮。通過(guò)本次實(shí)驗(yàn),我了解了步進(jìn)電機(jī)控制的基本原理,掌握了控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的編程方法。更加深入地了解了微機(jī)原理這門課程。

      第四篇:現(xiàn)代電子實(shí)驗(yàn)報(bào)告 電子科技大學(xué)

      基于FPGA的現(xiàn)代電子實(shí)驗(yàn)設(shè)計(jì)報(bào)告

      ——數(shù)字式秒表設(shè)計(jì)(VHDL)

      學(xué)院:物理電子學(xué)院

      專業(yè):

      學(xué)號(hào):

      學(xué)生姓名:

      指導(dǎo)教師:

      實(shí)驗(yàn)地點(diǎn):

      實(shí)驗(yàn)時(shí)間:

      劉曦 科研樓303

      摘要:

      通過(guò)使用VHDL語(yǔ)言開發(fā)FPGA的一般流程,重點(diǎn)介紹了秒表的基本原理和相應(yīng)的設(shè)計(jì)方案,最終采用了一種基于 FPGA 的數(shù)字頻率的實(shí)現(xiàn)方法。該設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開發(fā)平臺(tái)ISE上完成。該設(shè)計(jì)的秒表能準(zhǔn)確地完成啟動(dòng),停止,分段,復(fù)位功能。使用 ModelSim 仿真軟件對(duì)VHDL 程序做了仿真,并完成了綜合布局布線,最終下載到EEC-FPGA實(shí)驗(yàn)板上取得良好測(cè)試效果。

      關(guān)鍵詞:FPGA,VHDL,ISE,ModelSim

      目錄

      緒論.........................................................4

      第一章實(shí)驗(yàn)任務(wù)…………………………………..5

      第二章系統(tǒng)需求和解決方案計(jì)劃………..5

      第三章設(shè)計(jì)思路…………………………………..6

      第四章系統(tǒng)組成和解決方案………………..6

      第五章各分模塊原理……………………………8

      第六章仿真結(jié)果與分析………………………..11

      第七章分配引腳和下載實(shí)現(xiàn)…………………13

      第八章實(shí)驗(yàn)結(jié)論…………………...………………14 緒論:

      1.1 課程介紹:

      《現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)》課程通過(guò)引入模擬電子技術(shù)和數(shù)字邏輯設(shè)計(jì)的綜合應(yīng)用、基于MCU/FPGA/EDA技術(shù)的系統(tǒng)設(shè)計(jì)等綜合型設(shè)計(jì)型實(shí)驗(yàn),對(duì)學(xué)生進(jìn)行電子系統(tǒng)綜合設(shè)計(jì)與實(shí)踐能力的訓(xùn)練與培養(yǎng)。

      通過(guò)《現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)》課程的學(xué)習(xí),使學(xué)生對(duì)系統(tǒng)設(shè)計(jì)原理、主要性能參數(shù)的選擇原則、單元電路和系統(tǒng)電路設(shè)計(jì)方法及仿真技術(shù)、測(cè)試方案擬定及調(diào)測(cè)技術(shù)有所了解;使學(xué)生初步掌握電子技術(shù)中應(yīng)用開發(fā)的一般流程,初步建立起有關(guān)系統(tǒng)設(shè)計(jì)的基本概念,掌握其基本設(shè)計(jì)方法,為將來(lái)從事電子技術(shù)應(yīng)用和研究工作打下基礎(chǔ)。

      本文介紹了基于FPGA的數(shù)字式秒表的設(shè)計(jì)方法,設(shè)計(jì)采用硬件描述語(yǔ)言VHDL,在軟件開發(fā)平臺(tái)ISE上完成,可以在較高速時(shí)鐘頻率(48MHz)下正常工作。該數(shù)字頻率計(jì)采用測(cè)頻的方法,能準(zhǔn)確的測(cè)量頻率在10Hz到100MHz之間的信號(hào)。使用ModelSim仿真軟件對(duì)VHDL程序做了仿真,并完成了綜合布局布線,最終下載到芯片Spartan3A上取得良好測(cè)試效果。1.2VHDL語(yǔ)言簡(jiǎn)介: VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。

      VHDL語(yǔ)言的特點(diǎn): VHDL 語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用,它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。歸納起來(lái),VHDL 語(yǔ)言主要具有以下優(yōu)點(diǎn):(1)VHDL 語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方式多樣(2)VHDL 語(yǔ)言具有強(qiáng)大的硬件描述能力(3)VHDL 語(yǔ)言具有很強(qiáng)的移植能力(4)VHDL 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān)(5)VHDL 語(yǔ)言程序易于共享和復(fù)用 由于 VHDL 語(yǔ)言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語(yǔ)言,因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享,從而減小硬件電路設(shè)計(jì)的工作量,縮短開發(fā)周期。1.3FPGA簡(jiǎn)介

      FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。

      以硬件描述語(yǔ)言(Verilog或VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC設(shè)計(jì)驗(yàn)證的技術(shù)主流。這些可編輯元件可以被用來(lái)實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計(jì)師可以根據(jù)需要通過(guò)可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來(lái),就好像一個(gè)電路試驗(yàn)板被放在了一個(gè)芯片里。一個(gè)出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以FPGA可以完成所需要的邏輯功能。

      FPGA一般來(lái)說(shuō)比ASIC(專用集成電路)的速度要慢,實(shí)現(xiàn)同樣的功能比ASIC電路面積要大。但是他們也有很多的優(yōu)點(diǎn)比如可以快速成品,可以被修改來(lái)改正程序中的錯(cuò)誤和更便宜的造價(jià)。廠商也可能會(huì)提供便宜的但是編輯能力差的FPGA。因?yàn)檫@些芯片有比較差的可編輯能力,所以這些設(shè)計(jì)的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計(jì)轉(zhuǎn)移到一個(gè)類似于ASIC的芯片上。另外一種方法是用CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)。

      FPGA設(shè)計(jì)流程:

      對(duì)于目標(biāo)文件為FPGA的HDL設(shè)計(jì),其一般流程如下:

      1、文本編輯

      用任何文本編輯器都可以進(jìn)行,通常 VHDL文件保存為vhd文件,Verilog 文件保存為 v文件。

      2、使用編譯工具編譯源文件

      HDL 的編譯器有很多,ACTIVE 公司,MODELSIM 公司,SYNPLICITY 公司,SYNOPSYS 公司,VERIBEST公司等都有自己的編譯器。

      3、邏輯綜合

      將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合。綜合的目的是在于將設(shè)計(jì)的源文件由語(yǔ)言轉(zhuǎn)換為實(shí)際的電路。但是此時(shí)還沒有在芯片中形成真正的電路。這一步的最終目的是生成門電路級(jí)的網(wǎng)表(Netlist)。

      4、布局、布線

      將第 3 步生成的網(wǎng)表文件調(diào)入 PLD 廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放到 CPLD/FPGA 內(nèi)。這一步的目的是生成用于下載(編程 Programming)的編程文件。在這一步,將用到第 3 步生成的網(wǎng)表,并根據(jù) CPLD /FPGA 廠商的器件容量,結(jié)構(gòu)等進(jìn)行布局、布線。這就好像在設(shè)計(jì) PCB 時(shí)的布局布線一樣。先將各個(gè)設(shè)計(jì)中的門根據(jù)網(wǎng)表的內(nèi)容和器件的結(jié)構(gòu)放在器件的特定部位。然后,在根據(jù)網(wǎng)表中提供的各門的連接,把各個(gè)門的輸入輸出連接起來(lái)。最后,生成一個(gè)供編程的文件。這一步同時(shí)還會(huì)加一些時(shí)序信息(Timing)到你的設(shè)計(jì)項(xiàng)目中去,以便于你做后仿真。

      5、后仿真

      利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫布局布線仿真或時(shí)序仿真)。這一步主要是為了確定你的設(shè)計(jì)在經(jīng)過(guò)布局布線之后,是不是還滿足你的設(shè)計(jì)要求。

      6、編程,下載

      如果前幾步都沒有發(fā)生錯(cuò)誤,并且符合設(shè)計(jì)要求,這一步就可以將由適配器等產(chǎn)生的配置或下載文件通過(guò)編程器或下載電纜下載到目標(biāo)芯片中。

      7、硬件測(cè)試

      硬件測(cè)試的目的是為了在更真實(shí)的環(huán)境中檢驗(yàn) HDL設(shè)計(jì)的運(yùn)行情況,特別是對(duì)于 HDL 程序設(shè)計(jì)上不是十分規(guī)范,語(yǔ)義上含有一定歧義的程序。

      一、實(shí)驗(yàn)任務(wù)——設(shè)計(jì)一個(gè)秒表:

      秒表的計(jì)時(shí)范圍為00’00”00 ~ 59’59”99。有兩個(gè)按鈕開關(guān)Start/Stop和Split/Reset,控制秒表的啟動(dòng)、停止、分段和復(fù)位:

      1,在秒表已經(jīng)被復(fù)位的情況下,按下“Start/Stop”鍵,秒表開始計(jì)時(shí)。

      2,在秒表正常運(yùn)行的情況下,如果按下“Start/Stop”鍵,則秒表暫停計(jì)時(shí)。3,再次按下該鍵,秒表繼續(xù)計(jì)時(shí)。

      4,在秒表正常運(yùn)行的情況下,如果按下“Split/Reset”鍵,顯示停止在按鍵時(shí)的時(shí)間,但秒表仍然在計(jì)時(shí); 5,再次按下該鍵,秒表恢復(fù)正常顯示。

      6,在秒表暫停計(jì)時(shí)的情況下,按下“Split/Reset”鍵,秒表復(fù)位歸零。

      二、系統(tǒng)需求和解決方案計(jì)劃:

      在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。

      按照秒表的設(shè)計(jì)要求,整個(gè)電路需要下面這些組成部分: 2.1 分頻器:

      對(duì)晶體振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。2.2 計(jì)數(shù)器:

      對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。2.3 數(shù)據(jù)鎖存器:

      鎖存數(shù)據(jù)使顯示保持暫停。2.4 控制器:

      控制計(jì)數(shù)器的運(yùn)行、停止以及復(fù)位產(chǎn)生鎖存器的使能信號(hào)。2.5 掃描顯示的控制電路:

      包括掃描計(jì)數(shù)器、數(shù)據(jù)選擇器和7段譯碼器,控制8個(gè)數(shù)碼管以掃描方式顯示計(jì)時(shí)結(jié)果。2.6 按鍵消抖電路:

      消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。

      三、設(shè)計(jì)思路:

      從FPGA開發(fā)板的電路可以看出,其不具備對(duì)按鍵輸入的消抖功能,故須編寫消抖功能的模塊代碼。消除按鍵抖動(dòng)的影響;每按一次鍵,只輸出一個(gè)脈沖,其寬度為一個(gè)時(shí)鐘周期。由開發(fā)板電路結(jié)構(gòu)可以看出,其為共陽(yáng)結(jié)構(gòu),故在其運(yùn)行為低有效。

      8個(gè)數(shù)碼顯示管共用一個(gè)段位,故為了將時(shí)鐘顯示在8個(gè)數(shù)碼管上,需要一定頻率(本秒表為1KHz)的信號(hào)進(jìn)行掃描,使得我們?nèi)庋劭瓷先ナ?個(gè)數(shù)碼管同時(shí)顯示的。為了實(shí)現(xiàn)秒表暫停和復(fù)位的功能,需要鎖存器模塊將時(shí)鐘數(shù)據(jù)鎖存起來(lái),并且結(jié)合控制電路滿足秒表的功能。

      FPGA開發(fā)板的晶振頻率為48MHz,而實(shí)際電路需要的頻率為1KHz,故須建立分頻模塊,將48MHz的晶振頻率分頻成1KHz。在構(gòu)建計(jì)數(shù)范圍從00’00”00-59’59”99的秒表時(shí),從數(shù)碼管顯示的角度可知,需要建立模六和模十兩種計(jì)數(shù)模塊進(jìn)行組合形成。設(shè)計(jì)圖如下:

      四、系統(tǒng)組成和解決方案:

      在項(xiàng)目開始設(shè)計(jì)時(shí),首先要確定系統(tǒng)的需求并發(fā)展出一個(gè)針對(duì)這些需求的計(jì)劃。按照數(shù)字式秒表工作原理的描述,需要下面這些主要的子系統(tǒng): 1,控制電路;

      2,由石英振蕩器和數(shù)字分頻器構(gòu)成的時(shí)基信號(hào)發(fā)生器; 3,按鍵開關(guān)(按鍵消抖); 4,計(jì)數(shù)器; 5,數(shù)據(jù)鎖存器; 6,掃描顯示的控制子系統(tǒng)(包括顯示譯碼和掃描控制); 7,六個(gè)數(shù)碼管(LED顯示電路)。

      設(shè)計(jì)框圖如下:

      五、各分模塊原理:

      5.1、48M-1K分頻器

      對(duì)晶振振蕩器產(chǎn)生的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生時(shí)間基準(zhǔn)信號(hào)。由于FPGA開發(fā)板的晶振頻率為48MHz,故在設(shè)計(jì)分頻器模塊時(shí),為了將頻率分頻成1KHz,即將輸入的信號(hào)源每48000個(gè)周期轉(zhuǎn)換成輸出的一個(gè)周期。因此利用上升沿計(jì)數(shù)手段,將0-47999用16位二進(jìn)制數(shù)表示,而在從0-47999的計(jì)數(shù)過(guò)程中,該二進(jìn)制數(shù)的最高位只有一次狀態(tài)變化,故可取對(duì)應(yīng)二進(jìn)制數(shù)的最高位來(lái)輸出達(dá)到分頻到1KHz的目的。如下代碼為將晶振振蕩器48MHz頻率分頻成1KHz信號(hào):

      5.2、計(jì)數(shù)器

      對(duì)時(shí)間基準(zhǔn)脈沖進(jìn)行計(jì)數(shù),完成計(jì)時(shí)功能。實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì)需要模6和模10計(jì)數(shù)器進(jìn)行組合??紤]到秒表的暫停和清零等功能,在設(shè)計(jì)計(jì)數(shù)器模塊時(shí),必須有時(shí)鐘輸入端、使能以及清零端。在有時(shí)鐘信號(hào)輸入的情況下,當(dāng)使能端無(wú)效時(shí),計(jì)數(shù)器不能進(jìn)行計(jì)數(shù);當(dāng)清零端有效時(shí),計(jì)數(shù)重新歸為0值。而為了實(shí)現(xiàn)計(jì)數(shù)的目的,故必須將各個(gè)計(jì)數(shù)器級(jí)聯(lián)來(lái)實(shí)現(xiàn)從00’00”00-59’59”99的計(jì)數(shù),使得級(jí)聯(lián)的各技術(shù)模塊有共同的清零端與使能端,因此該單個(gè)模塊需要有輸出進(jìn)位以及該時(shí)刻的計(jì)數(shù)值并且前一級(jí)的進(jìn)位端連在下一級(jí)的使能端上。如下為模6和模10計(jì)數(shù)器代碼:

      5.2.1、模6計(jì)數(shù)器

      為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-5的計(jì)數(shù)部分,故須設(shè)計(jì)一個(gè)模6計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到5時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從5變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。

      5.2.2、模10計(jì)數(shù)器

      為了實(shí)現(xiàn)在秒表計(jì)數(shù)是0-9的計(jì)數(shù)部分,故須設(shè)計(jì)一個(gè)模10計(jì)數(shù)器,輸入時(shí)鐘信號(hào)、使能和清零,遇上升沿則記一次數(shù),當(dāng)從0記到9時(shí),進(jìn)位端(用于與下一級(jí)計(jì)數(shù)器級(jí)聯(lián))有效,且遇上升沿后從9變到0,并且輸出的還有每一時(shí)刻的計(jì)數(shù)值。

      5.3、控制電路

      控制計(jì)數(shù)器的運(yùn)行、暫停以及復(fù)位;產(chǎn)生鎖存器的使能信號(hào)。從如下狀態(tài)圖可知,在設(shè)計(jì)控制模塊時(shí),為實(shí)現(xiàn)開發(fā)板上控制秒表的運(yùn)行暫停和清零功能,必須設(shè)置兩個(gè)控制輸入端,以及需要時(shí)鐘信號(hào)輸入端。在時(shí)鐘信號(hào)輸入情況下,由狀態(tài)圖顯示,在輸入不同的控制信號(hào)是,控制模塊需輸出信號(hào)控制計(jì)數(shù)器及其他各模塊的清零和使能端,即當(dāng)外部控制運(yùn)行/暫停鍵首次按下時(shí),控制模塊輸出控制技術(shù)模塊最開始的計(jì)數(shù)器模塊使能有效,各模塊清零無(wú)效;當(dāng)?shù)诙伟聪聲r(shí)為暫停信號(hào),控制模塊控制鎖存器鎖存并控制顯示。當(dāng)清零控制鍵按下時(shí),控制模塊控制技術(shù)模塊清零,故要兩個(gè)輸出使能端。

      5.4、鎖存器

      鎖存數(shù)據(jù),使顯示保持鎖定。為達(dá)到鎖存數(shù)據(jù)目的,則必須要有對(duì)應(yīng)的8個(gè)數(shù)碼顯示數(shù)據(jù)輸入,當(dāng)其中兩個(gè)數(shù)碼數(shù)據(jù)為不變的,故只需輸入6組由4位二進(jìn)制碼構(gòu)成的數(shù)據(jù)、1KHz時(shí)鐘信號(hào)以及控制模塊作用的使能端。當(dāng)使能端有效的情況下,將輸入6組數(shù)據(jù)輸出。5.5、消抖電路

      消除按鍵輸入信號(hào)抖動(dòng)的影響,輸出單脈沖。在手動(dòng)控制按鍵輸入控制信號(hào)前,由于人為因素,會(huì)導(dǎo)致輸入信號(hào)不穩(wěn)定等問(wèn)題,故須添加一個(gè)消抖模塊,使得每次按鍵只會(huì)產(chǎn)生一個(gè)脈沖。故除1KHz時(shí)鐘信號(hào)輸入外,還需要一個(gè)按鍵控制信號(hào)輸入端以及一個(gè)按鍵消抖后輸出信號(hào)。

      5.6、譯碼器

      包括掃描計(jì)數(shù)器、3-8譯碼器、數(shù)據(jù)選擇器以及7段譯碼器;控制8個(gè)數(shù)碼管一掃描方式顯示計(jì)時(shí)結(jié)果。譯碼模塊的功能是對(duì)之前計(jì)數(shù)模塊的計(jì)數(shù)值進(jìn)行譯碼,使其可以在數(shù)碼管上顯示出來(lái)。在8個(gè)數(shù)碼管中有兩個(gè)數(shù)碼管顯示是不變的,故不需要輸出,所以譯碼模塊要求輸入需要譯碼的6組數(shù)據(jù)以及1KHz時(shí)鐘信號(hào)。譯碼模塊除了要求對(duì)每一個(gè)可能的值(0-9)進(jìn)行譯碼外,還有設(shè)計(jì)要求8個(gè)數(shù)碼管顯示共用一個(gè)段位,故還需設(shè)計(jì)一個(gè)3-8譯碼模塊對(duì)8個(gè)數(shù)碼顯示管進(jìn)行選擇,使其輪流顯示,在1KHz的掃描下,使人看上去是8個(gè)數(shù)碼管同時(shí)顯示的。

      l

      5.7、計(jì)數(shù)器模塊

      由模6和模10計(jì)數(shù)器級(jí)聯(lián)而成。為了實(shí)現(xiàn)從00’00”00-59’59”99的計(jì)數(shù),需要將4個(gè)模10計(jì)數(shù)模塊和2個(gè)模6計(jì)數(shù)模塊級(jí)聯(lián),并且為了達(dá)到設(shè)計(jì)要求是這6個(gè)計(jì)數(shù)器工作在100Hz的時(shí)鐘信號(hào)下,可利用一個(gè)模10的計(jì)數(shù)模塊對(duì)1KHz進(jìn)行分頻,輸出的信號(hào)頻率即為100Hz,該總計(jì)數(shù)模塊最終需輸出6組計(jì)數(shù)數(shù)據(jù)以及其最終的進(jìn)位。

      5.8、top文件

      由以上各個(gè)文件相互連接而成,以及硬件的管腳管腳分布。將之前所建立的各個(gè)模塊級(jí)聯(lián)起來(lái),從按鍵輸入信號(hào)到按鍵消抖模塊再進(jìn)而連接到控制器,通過(guò)控制模塊對(duì)總計(jì)數(shù)器模塊、鎖存器模塊、譯碼器模塊、分頻器模塊相互連接起來(lái),并設(shè)置晶振輸入信號(hào)以及兩個(gè)按鍵控制信號(hào)輸入,再由譯碼器模塊知,秒表設(shè)計(jì)的最終輸出由一個(gè)3-8對(duì)應(yīng)的8位位選信號(hào)和一組7位的段選信號(hào)組成。最后對(duì)總文件的輸出進(jìn)行管腳分配,并下載到FPGA開發(fā)板上驗(yàn)證設(shè)計(jì)。

      六、仿真結(jié)果與分析::

      6.11000HZ信號(hào)的產(chǎn)生

      6.210位計(jì)數(shù)器的產(chǎn)生

      由圖可得,10位計(jì)數(shù)器從0000計(jì)到1001

      6.3 6位計(jì)數(shù)器的產(chǎn)生

      由圖可得,6位計(jì)數(shù)器從0000計(jì)到0101。

      6.4七段數(shù)碼管顯示數(shù)字

      6.5鎖存器

      由圖可得,當(dāng)沒有時(shí)鐘信號(hào)時(shí)Q不變。6.6分頻器 1000Hz-100Hz

      七、分配引腳和下載實(shí)現(xiàn):

      全部仿真通過(guò)后,就運(yùn)行ISE 的設(shè)計(jì)實(shí)現(xiàn),然后再打開XILINX PACE,在里面分配引腳,即實(shí)現(xiàn)設(shè)計(jì)的輸入輸出端口與實(shí)際芯片的輸入輸出端口的對(duì)應(yīng)連接。

      比如七段LED 管的控制信號(hào)就連接到實(shí)際電路的七個(gè)引腳。需要注意的是一些端口是固定的,不能胡亂的連接。比如時(shí)基信號(hào)即石英振蕩器所提供的信號(hào)就只能由P181 輸入。同時(shí)還要考慮內(nèi)部的可配制邏輯塊CLB 的數(shù)量是否夠滿足程序的綜合要求。一切都準(zhǔn)備就緒后就可以運(yùn)行Configure Device,選擇要下載的位文件(.bit)便可開始。

      八、實(shí)驗(yàn)結(jié)論:

      8.1、本次實(shí)驗(yàn)實(shí)現(xiàn)了秒表的計(jì)數(shù),復(fù)位,暫停,鎖顯等功能,讓我充分了解和認(rèn)識(shí)到ISE 和Modelsim軟件的強(qiáng)大功能和FPGA 技術(shù)的優(yōu)越性。并對(duì)軟件開發(fā)產(chǎn)生了興趣。

      8.2、仿真和下載實(shí)現(xiàn)是兩個(gè)不同的檢驗(yàn),仿真從軟件內(nèi)部來(lái)檢驗(yàn)程序的合理性和正確性,準(zhǔn)確性較高。而下載實(shí)現(xiàn)是從外部來(lái)觀察程序的實(shí)現(xiàn)效果,更直觀,但不具有準(zhǔn)確性。8.3、有時(shí)候下載實(shí)現(xiàn)了所有的功能,但是仿真通不過(guò),這可能是因?yàn)槌绦蛑杏行┎糠植⒉煌晟茖?dǎo)致。從外部來(lái)看,效果是一樣的,但實(shí)際程序卻存在漏洞。附:參考文獻(xiàn):

      《數(shù)字設(shè)計(jì)原理與實(shí)踐》作者:(美)John F.Wakerly編 《FPGA應(yīng)用開發(fā)入門與典型實(shí)例》華清遠(yuǎn)見嵌入式培訓(xùn)中心編

      附件:(源程序)

      1.TOP文件:

      library IEEE;use IEEE.STD_LOGIC_1164.ALL;

      entity top is

      Port(S_S : in STD_LOGIC;

      S_R : in STD_LOGIC;clk : in STD_LOGIC;

      Out8: out STD_LOGIC_VECTOR(7 downto 0);Seg : out STD_LOGIC_VECTOR(6 downto 0));end top;

      architecture Behavioral of top is

      COMPONENT fenpingqi_48m_1k PORT(clk : IN std_logic;

      q : OUT std_logic);END COMPONENT;

      COMPONENT counter PORT(clk : IN std_logic;

      eng : IN std_logic;

      clear : IN std_logic;

      ou : OUT std_logic;

      daout1 : OUT std_logic_vector(3 downto 0);

      daout2 : OUT std_logic_vector(3 downto 0);

      daout3 : OUT std_logic_vector(3 downto 0);

      daout4 : OUT std_logic_vector(2 downto 0);daout5 : OUT std_logic_vector(3 downto 0);daout6 : OUT std_logic_vector(2 downto 0));

      END COMPONENT;

      COMPONENT keydb PORT(clk : IN std_logic;key_in : IN std_logic;

      key_out : OUT std_logic);END COMPONENT;

      COMPONENT control PORT(clk : IN std_logic;q : IN std_logic;p : IN std_logic;

      j_clr : OUT std_logic;j_en : OUT std_logic;s_en : OUT std_logic);END COMPONENT;COMPONENT latch PORT(cnt_0 : IN std_logic_vector(3 downto 0);cnt_00 : IN std_logic_vector(3 downto 0);cnt_1 : IN std_logic_vector(3 downto 0);cnt_11 : IN std_logic_vector(2 downto 0);cnt_2 : IN std_logic_vector(3 downto 0);cnt_22 : IN std_logic_vector(2 downto 0);display_in : IN std_logic;

      cnt0 : OUT std_logic_vector(3 downto 0);cnt00 : OUT std_logic_vector(3 downto 0);cnt1 : OUT std_logic_vector(3 downto 0);cnt11 : OUT std_logic_vector(2 downto 0);cnt2 : OUT std_logic_vector(3 downto 0);cnt22 : OUT std_logic_vector(2 downto 0));END COMPONENT;

      COMPONENT display PORT(clk_1k : IN std_logic;

      cnt0 : IN std_logic_vector(3 downto 0);

      cnt00 : IN std_logic_vector(3 downto 0);

      cnt1 : IN std_logic_vector(3 downto 0);

      cnt11 : IN std_logic_vector(2 downto 0);

      cnt2 : IN std_logic_vector(3 downto 0);

      cnt22 : IN std_logic_vector(2 downto 0);

      output: out STD_LOGIC_VECTOR(7 downto 0);

      seg : OUT std_logic_vector(7 downto 1));END COMPONENT;

      signal clk_1k,clk_100:std_logic;signal S_S_out,S_R_out:std_logic;signal clr_A,ena_A,lock_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;signal dao1,dao2,dao3,dao5,daoA,daoB,daoC,daoE:std_logic_vector(3 0);signal dao4,dao6,daoD,daoF:std_logic_vector(2 downto 0);signal Dig:std_logic_vector(2 downto 0);

      begin

      Inst_fenpingqi_48000: fenpingqi_48m_1k PORT MAP(clk =>clk,q => clk_1k);

      Inst_counter: counter PORT MAP(clk =>clk_1k ,eng =>ena_A ,clear =>clr_A ,daout1 =>dao1 ,daout2 => dao2,daout3 => dao3,daout4 => dao4,daout5 => dao5,daout6 => dao6);

      Inst_keydb1: keydb PORT MAP(clk =>clk_1k ,key_in => S_S,downto

      key_out =>S_S_out);

      Inst_keydb2: keydb PORT MAP(clk =>clk_1k , key_in => S_R, key_out =>S_R_out);Inst_control: control PORT MAP(clk =>clk_1k , q =>S_S_out , p =>S_R_out , j_clr =>clr_A , j_en =>ena_A , s_en =>lock_A);Inst_latch: latch PORT MAP(cnt_0 => dao1, cnt_00 => dao2, cnt_1 => dao3, cnt_11 => dao4, cnt_2 => dao5, cnt_22 => dao6, display_in =>lock_A , cnt0 =>daoA, cnt00 =>daoB, cnt1 =>daoC, cnt11 =>daoD, cnt2 =>daoE, cnt22 =>daoF);Inst_display: display PORT MAP(clk_1k => clk_1k, cnt0 =>daoA , cnt00 =>daoB, cnt1 =>daoC, cnt11 =>daoD, cnt2 =>daoE, cnt22 =>daoF, output => Out8, seg =>Seg);

      end Behavioral;

      2.模10計(jì)算器:

      entity counter10 is

      Port(clr : in STD_LOGIC;clk : in STD_LOGIC;

      en : in STD_LOGIC;

      co : out STD_LOGIC;daout : out STD_LOGIC_VECTOR(3 downto 0));end counter10;

      architecture Behavioral of counter10 is signal count:std_logic_vector(3 downto 0);begin process(clk,clr,count)begin if clr='1' then count<=“0000”;co<='0';elsif(clk='1' and clk'event)then if en='1' then if count=“1001” then count<=“0000”;else count<=count+1;end if;end if;end if;if count=“1001”and en='1' then co<='1';else co<='0';end if;daout<=count;end process;

      end Behavioral;3.模6計(jì)算器:

      entity counter6 is

      Port(clr : in STD_LOGIC;clk : in STD_LOGIC;

      en : in STD_LOGIC;

      co : out STD_LOGIC;daout : out STD_LOGIC_VECTOR(2 downto 0));end counter6;

      architecture Behavioral of counter6 is signal count:std_logic_vector(2 downto 0);

      begin process(clk,clr,count)begin if clr='1' then count<=“000”;

      co<='0';elsif(clk='1' and clk'event)then if en='1' then if count=“101” then count<=“000”;else count<=count+1;end if;end if;end if;if count=“101”and en='1' then co<='1';else co<='0';end if;daout<=count;end process;end Behavioral;

      4.計(jì)算器級(jí)聯(lián):

      entity counter is

      Port(clk : in STD_LOGIC;eng : in STD_LOGIC;

      clear : in STD_LOGIC;

      ou : out STD_LOGIC;

      daout1 : out STD_LOGIC_VECTOR(3 downto 0);

      daout2 : out STD_LOGIC_VECTOR(3 downto 0);

      daout3 : out STD_LOGIC_VECTOR(3 downto 0);

      daout4 : out STD_LOGIC_VECTOR(2 downto 0);

      daout5 : out STD_LOGIC_VECTOR(3 downto 0);

      daout6 : out STD_LOGIC_VECTOR(2 downto 0));end counter;

      architecture Behavioral of counter is COMPONENT fenpingqi_1k_100 PORT(clk : IN std_logic;

      q : OUT std_logic);END COMPONENT;

      COMPONENT counter10 PORT(clr : IN std_logic;

      clk : IN std_logic;

      en : IN std_logic;

      co : OUT std_logic;

      daout : OUT std_logic_vector(3 downto 0));END COMPONENT;

      COMPONENT counter6 PORT(clr : IN std_logic;

      clk : IN std_logic;

      en : IN std_logic;

      co : OUT std_logic;

      daout : OUT std_logic_vector(2 downto 0));END COMPONENT;

      signal clk_100:std_logic;signal clr_A,ena_A:std_logic;signal co_out1,co_out2,co_out3,co_out4,co_out5:std_logic;

      begin Inst_fenpingqi_10: fenpingqi_1k_100 PORT MAP(clk =>clk,q => clk_100);

      Inst_counter10_1: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en =>eng,co => co_out1,daout => daout1);Inst_counter10_2: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out1,co => co_out2,daout => daout2);Inst_counter10_3: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out2,co => co_out3,daout => daout3);

      Inst_counter6_1: counter6 PORT MAP(clr =>clear ,clk =>clk_100,en =>co_out3,co =>co_out4 ,daout => daout4);Inst_counter10_4: counter10 PORT MAP(clr => clear,clk =>clk_100 ,en => co_out4,co => co_out5,daout => daout5);Inst_counter6_2: counter6 PORT MAP(clr =>clear,clk =>clk_100,en =>co_out5,co =>ou,daout => daout6);

      end Behavioral;

      5.控制電路:

      entity control is

      Port(clk : in STD_LOGIC;

      q : in STD_LOGIC;

      p : in STD_LOGIC;j_clr : out STD_LOGIC;j_en : out STD_LOGIC;s_en : out STD_LOGIC);end control;

      architecture Behavioral of control is signal state:std_logic_vector(1 downto 0):=“00”;signal next_state:std_logic_vector(1 downto 0);signal key:std_logic_vector(1 downto 0);

      begin key<=q&p;process(state,key)begin case state is when“00”=> if key=“10” then next_state<=“01”;else next_state<=state;end if;when“01”=> case key is when“10”=>next_state<=“11”;when“01”=>next_state<=“10”;when others=>next_state<=state;end case;when“10”=> if key=“01” then next_state<=“01”;else next_state<=state;end if;when others=> case key is when“10”=>next_state<=“01”;when“01”=>next_state<=“00”;when others=>next_state<=state;end case;end case;end process;process(clk)begin if rising_edge(clk)then state<=next_state;end if;end process;process(state)begin case state is when“00”=> j_clr<='1';j_en<='1';s_en<='1';when“01”=> j_clr<='0';j_en<='1';s_en<='1';when“10”=> j_clr<='0';j_en<='1';s_en<='0';when others=> j_clr<='0';j_en<='0';s_en<='1';end case;end process;end Behavioral;

      6.分頻器(2個(gè)): entity fenpingqi_48m_1k is

      Port(clk : in STD_LOGIC;

      q : out STD_LOGIC);end fenpingqi_48m_1k;

      architecture Behavioral of fenpingqi_48m_1k is signal counter:STD_LOGIC_VECTOR(15 downto 0);begin process(clk)begin if(clk='1'and clk'event)then if counter=47999 then counter<=(others=>'0');else

      counter<=counter+1;end if;end if;

      q<= counter(15);end process;

      end Behavioral;

      entity fenpingqi_1k_100 is

      Port(clk : in STD_LOGIC;

      q : out STD_LOGIC);end fenpingqi_1k_100;architecture Behavioral of fenpingqi_1k_100 is signal counter:STD_LOGIC_vector(3 downto 0);

      begin process(clk)begin if(clk='1'and clk'event)then if counter=9 then counter<=“0000”;else

      counter<=counter+1;end if;end if;q<=counter(3);end process;end Behavioral;

      7.顯示電路:

      entity display is

      Port(clk_1k : in STD_LOGIC;

      cnt0 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt00 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt1 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt11 : in STD_LOGIC_VECTOR(2 downto 0);

      cnt2 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt22 : in STD_LOGIC_VECTOR(2 downto 0);

      output: out STD_LOGIC_VECTOR(7 downto 0);seg : out STD_LOGIC_VECTOR(7 downto 1));end display;

      architecture Behavioral of display is signal dig:std_logic_vector(2 downto 0):=“000”;signal bcd:std_logic_vector(3 downto 0):=“1000”;signal seg7:std_logic_vector(7 downto 1):=“1111110”;

      begin process(clk_1k)begin if clk_1k'event and clk_1k='1' then dig<=dig+1;end if;end process;process(dig)begin case dig is when“000”=>bcd<=cnt0;when“001”=>bcd<=cnt00;when“010”=>bcd<=“1010”;when“011”=>bcd<=cnt1;when“100”=>bcd<='0'& cnt11;when“101”=>bcd<=“1010”;when“110”=>bcd<=cnt2;when“111”=>bcd<='0'&cnt22;when others=>bcd<=“1010”;end case;end process;process(bcd)begin case bcd is when“0000”=>seg7<=“0000001”;when“0001”=>seg7<=“1001111”;when“0010”=>seg7<=“0010010”;when“0011”=>seg7<=“0000110”;when“0100”=>seg7<=“1001100”;when“0101”=>seg7<=“0100100”;when“0110”=>seg7<=“1100000”;when“0111”=>seg7<=“0001111”;when“1000”=>seg7<=“0000000”;when“1001”=>seg7<=“0001100”;when others=>seg7<=“1111110”;end case;end process;process(dig)begin case dig is when“000”=>output<=“01111111”;when“001”=>output<=“10111111”;when“010”=>output<=“11011111”;when“011”=>output<=“11101111”;when“100”=>output<=“11110111”;when“101”=>output<=“11111011”;when“110”=>output<=“11111101”;when“111”=>output<=“11111110”;when others=>output<=“11111111”;end case;end process;seg<=seg7;end Behavioral;

      8.鎖存器:

      entity latch is

      Port(cnt_0 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_00 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_1 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_11 : in STD_LOGIC_VECTOR(2 downto 0);

      cnt_2 : in STD_LOGIC_VECTOR(3 downto 0);

      cnt_22 : in STD_LOGIC_VECTOR(2 downto 0);display_in : in STD_LOGIC;

      cnt0 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt00 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt1 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt11 : out STD_LOGIC_VECTOR(2 downto 0);

      cnt2 : out STD_LOGIC_VECTOR(3 downto 0);

      cnt22 : out STD_LOGIC_VECTOR(2 downto 0));end latch;

      architecture Behavioral of latch is

      begin process(display_in,cnt_0,cnt_00,cnt_1,cnt_11,cnt_2,cnt_22)begin if display_in='1' then cnt0<=cnt_0;cnt00<=cnt_00;cnt1<=cnt_1;cnt11<=cnt_11;cnt2<=cnt_2;cnt22<=cnt_22;end if;end process;end Behavioral;

      9.消抖電路:

      entity keydb is

      Port(clk : in STD_LOGIC;key_in : in STD_LOGIC;key_out : out STD_LOGIC);end keydb;

      architecture Behavioral of keydb is signal k1,k2:STD_LOGIC;signal cnt : STD_LOGIC_VECTOR(1 DOWNTO 0);

      begin process(clk,key_in)begin if clk'event and clk ='0' then if cnt =3 then k1<='1';else k1<='0';cnt<=cnt+1;end if;k2<=k1;end if;if key_in ='0' then cnt<=“00”;end if;end process;key_out<= not k1 and k2;

      end Behavioral

      第五篇:電子科技大學(xué)實(shí)驗(yàn)報(bào)告格式

      九、實(shí)驗(yàn)結(jié)論:

      十、總結(jié)及心得體會(huì):

      十一、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議:

      報(bào)告評(píng)分:指導(dǎo)教師簽字:

      電子科技大學(xué)

      學(xué)生姓名:

      學(xué)號(hào):

      指導(dǎo)教師:

      日期:實(shí) 驗(yàn) 報(bào) 告年月日

      一、實(shí)驗(yàn)室名稱:

      二、實(shí)驗(yàn)項(xiàng)目名稱:

      三、實(shí)驗(yàn)原理:

      四、實(shí)驗(yàn)?zāi)康模?/p>

      五、實(shí)驗(yàn)內(nèi)容:

      六、實(shí)驗(yàn)器材(設(shè)備、元器件):

      七、實(shí)驗(yàn)步驟:

      八、實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析:

      下載電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4word格式文檔
      下載電子科技大學(xué)微機(jī)實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)4.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        電子科技大學(xué)實(shí)驗(yàn)報(bào)告格式

        九、實(shí)驗(yàn)結(jié)論:十、總結(jié)及心得體會(huì):十一、對(duì)本實(shí)驗(yàn)過(guò)程及方法、手段的改進(jìn)建議: 報(bào)告評(píng)分: 指導(dǎo)教師簽字: 電子科技大學(xué) 學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:日期:實(shí) 驗(yàn) 報(bào) 告 年月 日一、實(shí)驗(yàn)......

        電子科技大學(xué)數(shù)學(xué)實(shí)驗(yàn)報(bào)告

        一、 選擇題:(每題3分,共30分) 1、若分式 有意義,則x的取值范圍是( A.B.C.D.x≠-1 ) 2、一射擊運(yùn)動(dòng)員在一次射擊練習(xí)中打出的成績(jī)?nèi)缦卤硭荆哼@次成績(jī)的眾數(shù)是( ) A;6B;8C;10D;7 3、若一組......

        電子科技大學(xué)實(shí)驗(yàn)報(bào)告(推薦閱讀)

        電子科技大學(xué)信息與軟件學(xué)院實(shí) 驗(yàn) 報(bào) 告(實(shí)驗(yàn))課程名稱 學(xué)生姓名學(xué)生學(xué)號(hào)電子科技大學(xué)教務(wù)處制表電 子 科 技 大 學(xué) 實(shí)驗(yàn)報(bào)告 學(xué)生姓名:學(xué) 號(hào):指導(dǎo)教師: 實(shí)驗(yàn)地點(diǎn):實(shí)驗(yàn)時(shí)間: 一、實(shí)......

        微機(jī)實(shí)驗(yàn)報(bào)告

        自動(dòng)化 學(xué)院 物聯(lián)網(wǎng) 專業(yè) 1 班 學(xué)號(hào)姓名 協(xié)作者 教師評(píng)定 實(shí)驗(yàn)一 操作訓(xùn)練及數(shù)碼轉(zhuǎn)換實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1)掌握80x86微機(jī)原理及接口技術(shù)教學(xué)實(shí)驗(yàn)系統(tǒng)的操作,熟悉Wmd86聯(lián)級(jí)集成......

        微機(jī)實(shí)驗(yàn)報(bào)告

        微機(jī)實(shí)驗(yàn)報(bào)告 曾東明 實(shí)驗(yàn)一 輸出字符‘A’ 一、實(shí)驗(yàn)?zāi)康?1.通過(guò)這個(gè)簡(jiǎn)單的例子熟悉在微機(jī)上建立、匯編、鏈接和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程。 2.掌握字符的顯示方法。 3......

        計(jì)算機(jī)組成原理實(shí)驗(yàn)報(bào)告 電子科技大學(xué)

        計(jì)算機(jī)專業(yè)類課程 實(shí)驗(yàn)報(bào) 告 課程名稱:計(jì)算機(jī)組成原理 學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與工程 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名:** 學(xué)號(hào):20120600***** 指導(dǎo)教師:吳曉華 日期:2014年11月30日 實(shí) 驗(yàn)......

        電子科技大學(xué) 實(shí)驗(yàn)報(bào)告 創(chuàng)新學(xué)分 實(shí)驗(yàn)課(優(yōu)秀范文5篇)

        電子科技大學(xué)學(xué)生姓名: 學(xué)號(hào): 指導(dǎo)教師: 日期:實(shí) 驗(yàn) 報(bào)告 一、實(shí)驗(yàn)室名稱: 二、實(shí)驗(yàn)項(xiàng)目名稱: 三、實(shí)驗(yàn)原理:四、實(shí)驗(yàn)?zāi)康模何?、?shí)驗(yàn)內(nèi)容:六、實(shí)驗(yàn)器材(設(shè)備、元器件):七、實(shí)驗(yàn)步驟:八、實(shí)......

        微機(jī)實(shí)驗(yàn)報(bào)告數(shù)模轉(zhuǎn)換器和模數(shù)轉(zhuǎn)換器實(shí)驗(yàn)5篇

        實(shí)驗(yàn)報(bào)告 課程名稱 微機(jī)接口與匯編語(yǔ)言實(shí)驗(yàn)項(xiàng)目 實(shí)驗(yàn)五 數(shù)/模轉(zhuǎn)換器和模/數(shù)轉(zhuǎn)換器實(shí)驗(yàn) 實(shí)驗(yàn)儀器 TPC-USB通用微機(jī)接口實(shí)驗(yàn)系統(tǒng) 系 別 計(jì)算機(jī)學(xué)院專 業(yè) 班級(jí)/學(xué)號(hào) 學(xué)生姓......