基于or1200最小sopc系统搭建(三)--串口

合集下载

单片机最小系统制作

单片机最小系统制作

单片机最小系统制作单片机(Microcontroller)最小系统是指单片机与其必要外围电路的集成,能够实现单片机的正常工作。

单片机最小系统一般包括单片机芯片、时钟电路、复位电路和电源电路等。

1.选购单片机芯片:选择适合自己需求的单片机芯片,有多种型号和规格可以选择。

比较常见的单片机芯片有PIC、AVR、STM32等。

2.设计电源电路:为单片机提供正常工作的电源电压,一般为5V。

可以使用直流电源供电,也可以通过电池供电。

电源电路一般包括电源滤波和稳压电路。

3.设计时钟电路:单片机需要时钟信号来进行计时和同步操作。

时钟电路一般由晶体振荡器和相关电容电阻组成。

选择合适的晶体频率,一般常见的为4MHz或8MHz。

4.设计复位电路:复位电路用于在单片机上电时将其状态清零,进入一个初始状态。

一般采用电容与电阻并联的方式制作,保证在上电时产生足够的复位时间。

5.焊接和布线:将选购的单片机芯片和其他电子元件进行焊接和布线,连接相应的引脚。

注意焊接时要确保焊接点牢固,布线时要避免引起短路和接触不良等问题。

6.测试和调试:将制作好的单片机最小系统连接到计算机或开发板上,通过编程工具对单片机进行测试和调试。

可以使用编程工具(如IDE)编写简单的程序,通过编程上传到单片机进行验证。

7.功能扩展:根据需求可以对单片机最小系统进行功能扩展,如添加输入输出接口、外部存储器、显示屏等。

制作单片机最小系统的过程比较简单,但在实际操作中要细心和耐心,避免出现焊接不良、接触不良等问题。

制作好的最小系统可以为后续的单片机应用提供基础,可以用于各种项目的开发和实现。

总结起来,制作单片机最小系统需要选购单片机芯片,设计电源、时钟和复位电路,进行焊接和布线,并进行测试和调试。

掌握这些基本步骤可以帮助初学者更好地了解和掌握单片机的使用和应用。

NIOSII SOPC实例1

NIOSII SOPC实例1

一.关于SOPC1)SOPC英文全名为:System-On-a-Programmable-Chip,即可编程片上系统。

SOPC 用可编程逻辑技术把整个系统放到一块硅片上,来用于嵌入式系统研究和电子信息处理。

SOPC是一种特殊的嵌入式系统,它是片上系统(System-On-a -Chip,SOC),即由单个芯片完成整个系统的主要逻辑功能但它不是简单的SOC,它也是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

SOPC设计包括以32位NIOSII软核处理器为核心的嵌入式系统的硬件配置、硬件设计、硬件仿真、软件设计以及软件调试等。

SOPC系统设计的基本软件工具有:1)QuartusII:用于完成NIOSII系统的综合、硬件优化、适配、编程下载以及硬件系统调试等;2)SOPC Builder:Altera NiosII嵌入式处理器开发软件包,用于实现NiosII 系统的配置、生成,内嵌于QuartusII软件中;3)ModelSim: 用于对SOPC生成的NiosII系统的HDL描述进行系统的功能仿真;4)NiosII IDE:用于进行软件的开发、调试,以及向目标开发板进行Flash下载;二.关于NIOSII处理器NIOSII 是一个可配置的软核处理器。

“可配置”的意思是设计者可以根据性能和成本的要求来增加或删减处理器的功能。

ALTERA公司并不销售NIOSII处理器芯片,而是销售空的FPGA,并提供NIOSII 系统相应的IP核来组成NIOSII系统,然后将这个系统下载到FPGA中实现。

1)关于AVALONAvalon总线是SOPC硬件系统的重要组成部分,Avalon总线规范是为了开发SOPC 环境下外设而设计的。

图1-1 一个SOPC的示例二. SOPC简单实例:软核控制LCD液晶字母显示器1.系统构成规划1)系统功能:在character LCD上显示”Hello LCD from NiosII!”2)本系统中需要的外围器件:(1)L CD:输出显示(2)S RAM存储器:程序运行时将其导入SRAM3)SOPC中建立系统需要添加的模块包括:(1)N ios II 32bit CPU(2)L CD display(3)外部RAM总线(4)外部RAM接口(5)J TAG UART Interface(6)定时器2.硬件系统的建立1)首先打开Quartus II 建立工程文件:将工程文件命名为hello_lcd,顶层文件与工程文件同名。

SOPC实验一【创建一个CPU的最小系统】

SOPC实验一【创建一个CPU的最小系统】

一、实验内容:基本要求:创建一个CPU的最小系统(NIOS II + 8kB片内RAM + 8kB片内ROM),控制实验板上的8个发光二极管(4个同时亮、4个同时灭,然后循环交替)。

扩展要求:(1)将8个LED的显示改为流水灯形式。

即8个LED每次亮一个灯,从右向左依次轮流循环显示。

(2)在系统中加入两个控制按键,当按键为不同状态时,8个LED按不同方式进行显示,显示方式自己定义。

二、实验步骤概要:1、用QuartusII软件建立工作项目,定义系统名称;2、利用QuartusII软件中的SOPC Builder工具,根据设计的需求配置CPU最小系统。

3、配置完毕后,用SOPC Builder自动生成CPU小系统的硬件电路。

4、返回QuartusII软件,调用CPU硬件,编写顶层文件,设置输入、输出信号,分配引脚,编译,得到下载文件.sof。

5、调用软件集成开发环境,建立软件项目,配置IDE的硬件环境和样板程序。

6、编写、编译并调试程序。

7、下载并运行程序。

三、具体实验步骤:1、进入QuartusII软件环境,新建一个工程项目MyNiosSystem.qpf,并设置为Cyclone III EP3C16F484C6 (DE0)2、定制CPU小系统:A.进入SOPC Builder,定制一个简单的32位CPU小系统B.输入系统名称,选V erilog。

C.选择并添加CPU (NIOS II/s),单击FinishD.选择并添加8 kBytes的片内RAM(on-Chip Memory,选RAM),单击FinishE.选择并添加8 kBytes的片内和一个8位的PIOF.选择并添加一个系统的标识符(可选模块)G.在每个元件的Module Name上面点击鼠标右键,出现下图所示菜单,选Rename将各个模块改为便于记忆的名字,最后得到的结果如下页图所示。

H. 在cpu元件上双击鼠标左键,设置CPU复位地址和系统出现异常时的程序运行的地址, 点击Finish。

单片机最小系统

单片机最小系统

单片机最小系统——串口通信测试1、单片机最小系统的焊接1.1材料准备焊接工具:电烙铁一把(功率最好在40W),焊锡丝一卷(直径最好在0.8左右),焊锡膏或松香若干,剪脚钳一把。

元器件:STC89C52RC、座活动IC座、DIP16 IC座、DC座、简易牛角、USB头、串口通讯母接头、双排针、单排针、发光二极管、晶振、晶振底座、独石电容、瓷片电容、电解电容、电阻、轻触按键、电源开关、固定铜脚、MAX232通讯芯片、上拉电阻排、最小系统板PCB空。

1.2.1主要元器件的介绍(1)STC89C52RCSTC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机、指令代码完全兼容传统8051单片机,12时钟机器周期和6时钟机器周期可以任意选择。

主要特性:1)工作电压:5.5V~3.3V(5V单片机)、3.8V~2.0V(3V单片机);2)工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz;3)用户应用程序空间为8K字节;4)片上集成512字节RAM;5)通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,6)作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;7)ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成一片;8)具有EEPROM功能,具有看门狗功能;9)共3个16位定时器/计数器,即定时器T0、T1、T2;10)外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒;11)通用异步串行口(UART),还可用定时器软件实现多个UART;12)工作温度范围:-40~+85℃(工业级)/0~75℃(商业级);(2)MAX232MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。

51单片机实验DIY焊电源--串口详细步骤

51单片机实验DIY焊电源--串口详细步骤

51单片机实验DIY焊电源--串口详细步骤
对于DIY(自己动手焊板子)的朋友在做以下实验是先要将实验板上的电源(用来给单片机提供5V 的稳压电源),和串口(用来给单片机下载程序)焊接好.第一步焊接电源模块:
以是电源的原理图,以下是实物图
先按上图所示的标号,将(1,2,3,4,5,6,7)元件一个一个焊好:
1---为9V 的电源座;
2---是7805 为5V 稳压模块;上面带有散热片(必须要焊).
3---电解电容100UF,标号为c14,作用是将7805 输出的5V 中的电压更稳定(即滤波).(其引脚有正负之分,长脚为正极,短脚为负极).
4---电解电容100UF,标号为c13,作用是稳定7805 输入端的9V 中的电压(即滤波). (其引脚有正负之分,长脚为正极,短脚为负极).
5---发光二极管,其作用:是用来做上电指示.(其引脚有正负之分,长脚为正极,短脚为负极).
6---限流电阻,给发光二极管提供限流,防止烧坏发光二极管
7---电源开关,按下开,弹起为关(焊接此元件时,也要注意该元件了有反正,在元件的下面有一个四方的小孔,要和实验板子上方框对应,如下图所示)
焊好了1,2,3,4,5,6,7 元件后,插上9V 电源,按开电源开关后,发光二极管会点亮。

将万用表放在测直电压档上,测一下如下图所示的两个点:(如果万用表上显示为5V,表明你已经焊接无误,如果电压过高>5.5V 或者电压过低第二步焊接单片机最小系统:
什么是单片机最小系统?
单片机最小系统就是:有单片机,晶振,复位电路,EA 引脚接高电平,即。

原创一步一步学习开源32位CPU or1200(众多的IP core

原创一步一步学习开源32位CPU or1200(众多的IP core

/bbs/bbs_content_all.jsp?bbs_sn=4464641原创:一步一步学习开源32位CPU or1200(众多的IP core,三年来的资料,收集,全部奉送,希望大家喜欢)or1200 cpu 是什么OR1200是OpenCores组织提供的基于GPL协议的开放源代码处理器,性能介于ARM7和ARM9之间,适合一般的嵌入式系统使用。

OpenCores组织提供了大量的源代码IP核供研究人员使用,OR1200在使用0.18um及6层金属工艺时,主频可以运行在300MHz,可以提供300Dhrystone、2.1MIPS和300次的32x32 DSP 乘加操作。

OR1200是32位标量RISC处理器,具有哈佛结构、5级整数流水线、支持MMU和Cache,带有基本的DSP功能。

外部数据和地址总线采用Wishbone片上总线标准。

学niosii 还是or1200,个人观点,不要在niosii 花太多时间,它和普通的asic cpu没有任何区别,虽然它很灵活,但你学不到任何东西(我是2004年就开始用nios的),学or1200,你可以理解cpu的运行,每个外设的设计(uart i2c spi ps2 vga lcd ethernet ),基础打好了,以后做什么都理解的更深了.资料陆续上传or1200的vga显示(1024 X 768 ) (原文件名:b.JPG)openrisc-HW-tutorial-Altera ourdev_605678ZFDPVJ.pdf(文件大小:329K)(原文件名:openrisc-HW-tutorial-Altera.pdf)openrisc-HW-tutorial-Xilinx ourdev_605679KV1VTG.pdf(文件大小:342K)(原文件名:openrisc-HW-tutorial-Xilinx.pdf)openrisc-SW-tutorial ourdev_605680UL5544.pdf(文件大小:175K)(原文件名:openrisc-SW-tutorial.pdf)wbspec_b3ourdev_605681SI73HB.pdf(文件大小:899K)(原文件名:wbspec_b3.pdf)DbgSupp ourdev_605682MPUS ML.pdf(文件大小:788K)(原文件名:DbgSupp.pdf)toolchain(编译工具)ourdev_605683IZTZRK.rar(文件大小:13.44M)(原文件名:or32-uclinux.rar)我的 or1200_ep3c16+bpard 原理图ourdev_605687NND8PQ.rar(文件大小:254K) <fontcolor=green>(原文件名:or1200_ep3c16_board.rar)下面是我用过的IP core 源程序,经测试,还没发现问题好用的IPcore (usb的,我还没做)(原文件名:d.JPG)10-100M以太网ourdev_605691K1YG1R.rar(文件大小:87K)(原文件名:ethmac.rar)通用 IO 口ourdev_605692GXSED3.rar(文件大小:3K)(原文件名:gpio.rar)I2C ourdev_605693TEHUOU.rar(文件大小:11K)(原文件名:i2c.rar)内存ourdev_605694MICLU9.rar(文件大小:2K)(原文件名:mem_if.rar)or1200 cpu core ourdev_605695GF5IIK.rar(文件大小:182K)(原文件名:or1200.rar)PS2ourdev_605696T1RTHU.rar(文件大小:21K)(原文件名:ps2.rar)sdram ourdev_605697ZYM0CF.rar(文件大小:24K)(原文件名:sdram.rar)spi ourdev_605698SBBL37.rar(文件大小:1.42M)(原文件名:spi.rar)uart ourdev_605699QNYKWB.rar(文件大小:36K)(原文件名:uart.rar)usb ourdev_605700KPCWGH.rar(文件大小:57K)(原文件名:usb.rar)总线ourdev_605701VMVIKO.rar(文件大小:12K)(原文件名:wishbone.rar)闲话学or1200 及opencores上的IP core 有什么用? 那些都是高手写的东西,即使有bug,也值得我们去学习参考.软件上有linux开源,硬件上有opencores 放着宝贝不去学,那就没什么可讲的了,国内的FPGA书里面讲的,不说大家也清楚,一家之言,呵呵,见笑.下图是我做的 16路语音采集 + 语音回放 + 硬件TCP/IP传输 ( FPGA实现,没用任何cpu,包括niosii 和or1200 ,-片ep3c10即完成用i2s接口作语音采集语音回放以太网协议包括 MAC ARP ICMP UDP 其中MAC核就是用opencores下的,其它的是我写的,基于wishbone总线,可随时增加新模块,新功能)语音采集 + 语音回放 +硬件以太网协议板(原文件名:h.JPG)回fanwt ,or1200是一个软核,你可以在任何fpga上实现,开发工具,都是开源的.你不必用在产品上,假如你真想学点什么的话,还是从轮子开始上工程! or1200 + uart + spi + sdram + rom (基本系统,Quartusii 8.0 ,大家可根据需要,按本例示范,可挂上其它IP core, IP core 我以上传到1,2楼)Quartusii 工程 or1200 + uart + spi + sdram + rom (基本系统)ourdev_605883NTYWDB.rar(文件大小:640K)(原文件名:ep3c16_board.rar)Quartusii 工程截图(原文件名:g.JPG)超级终端输出(原文件名:f.JPG)串口输出 boot程序,.mif文件是rom.v需要用的ourdev_605886RTLM0W.rar(文件大小:151K)(原文件名:rom_3c16_tc_top_48Mhz.rar)基本的软硬件程序以全部上传!!!串口的使用一 (写完,请大家提意见及建议)串口的使用(原文件名:j.JPG)UART IP Core 使用说明ourdev_606807GLB9QY.pdf(文件大小:139K)(原文件名:UART IP Core 使用说明.pdf)pspice :ep2c35 资源够,5k 查找表就能把内核跑起来ssaweee :1 在embed_rom.v下程序defparamaltsyncram_component.intended_device_family = "Cyclone",altsyncram_component.width_a = 32,altsyncram_component.widthad_a = 9,altsyncram_component.numwords_a = 512,altsyncram_component.init_file = "d:/rom_3c16_tc_top_48Mhz/hxl_led.hex",altsyncram_component.operation_mode = "ROM",altsyncram_component.outdata_reg_a = "UNREGISTERED",altsyncram_component.address_aclr_a = "NONE",altsyncram_component.outdata_aclr_a = "NONE",altsyncram_component.width_byteena_a = 1,altsyncram_component.lpm_hint = "ENABLE_RUNTIME_MOD=NO",altsyncram_component.lpm_type = "altsyncram";用quartusii 将hxl_led.mif 变换成hxl_led.hex即可,同时注意路径2) 你可以将除串口外的外设引脚改成虚引脚整理了一份Wishbone总线的文档,写了两个小例子.后续打算写 SPI SD卡的读写,及文件系统.Wishbone总线和两个小例子(原文件名:k.JPG)Wishbone总线(中文)ourdev_607637UP4W7G.pdf(文件大小:1.04M)(原文件名:Wishbone总线.pdf)整理了一份关于or1200的 GNU交叉编译环境组成和建立GNU交叉编译环境组成和建立(原文件名:L.JPG)GNU交叉编译环境组成和建立ourdev_608098LWRX83.pdf(文件大小:623K)(原文件名:GNU交叉编译环境组成和建立.pdf)整理了一份陈皓大侠写的 <跟我一起写Makefile>跟我一起写Makefile (原文件名:m.JPG)跟我一起写Makefile ourdev_608872CV3YUR.pdf(文件大小:562K)(原文件名:跟我一起写 Makefile.pdf)</font 整理了一份 Modelsim使用指南Modelsim使用指南(原文件名:n.JPG)Modelsim使用指南ourdev_609342V6WEE2.rar(文件大小:2.63M)(原文件名:Modelsim使用指南.rar)再上传一份大量IP 核的资料。

bios串口

bios串口

C语言操作串口嵌入式系统 2009-03-26 20:59:08 阅读124 评论0 字号:大中小订阅/blog/static/1588596820077108242067/熟悉C语言的人都知道,虽然C语言是一门高级语言,拥有很多高级语言的特性,但是作为一种由低级语言到高级的过渡,他又继承了很多低级语言的特性,那就是可以直接操作计算机的硬件设备。

本人近日在学习有关PLC网络方面的知识的时候接触到了这方面的知识特拿来和大家分享。

C语言实现串口通信功能的调用可分为三个层次,它们是:高级语言层(速度较慢)、BIOS功能调用以及直接驱动硬件,今天我要和大家介绍的的这种方法就是基于BIOS功能调用的。

首先,简单介绍一下何谓BIOS。

BIOS的全称是ROM-BIOS——ROM Basic I/O System(只读存储器基本输入输出系统)。

它是一组固化到微机主板上一个ROM芯片上的子程序,主要功能包括:(1)驱动系统中所配置的常用外设(即驱动程序),如显示器、键盘、打印机、磁盘驱动器、通信接口等。

(2)开机自检,引导装入。

(3)提供时间、内存容量及设备配置情况等参数。

使用BIOS中断调用与DOS系统功能调用类似,用户也无须了解相关设备的结构与组成细节,直接调用即可。

为了实现BIOS调用,在BIOS中提供了大量的中断调用,供我们操作不同的硬件设备,它们是:INT 05H ;打印屏幕内容功能调用INT 10H ;显示中断调用INT 12H ;测定内存容量调用INT 14H ;异步通行功能调用INT 16H ;键盘中断调用INT 17H ;打印机控制调用INT 1AH ;时钟调用在众多的中断调用功能中于串口通讯有关的事 INT 14H 中断调用,为了实现串口通信对它的入口参数和出口参数作了如下的约束:现在,再将通信线路控制寄存器的各位意义简要介绍如下:在对BIOS调用和通信线路控制寄存器有了一些基本的了解以后,在对硬件了解的要求不高的情况下我们就可以借助下面的模块利用C语言实现异步通讯了。

单片机实践-串口1寄存器及工作模式

单片机实践-串口1寄存器及工作模式

②串行口1用定时器T1作为其波特率发生器且定时器T1工作于模式2(8位
Hale Waihona Puke 自动重装模式)时:波特率=(2SMOD/32)×(定时器T1的溢出率)
3 波特率计算
方式1和方式3中,UART波特率可变,波特率计算方法如下:
① 当采用定时器T1作为波特率发生器,且工作于模式0(16位自动重装载模式)时: 且当AUXR.6/T1x12=0时(12T模式),则:定时器T1的溢出率 = SYSclk /12/(65536[RL_TH1, RL_TL1]) 且当AUXR.6/T1x12=1时(1T模式),则:定时器T1的溢出率 = SYSclk /(65536[RL_TH1, RL_TL1])
1 相关寄存器
② SM2:方式2或方式3多机通信控制位。方式0和方式1为非多机通信方式,该位设置为0。
③ REN:允许/禁止串行接收控制位。REN=1,允许串行接收;REN=0,禁止接收。 ④ TB8:在方式2或方式3,为发送数据的第9位,由软件置位或清0。例如,可用作数据的校验位或多机 通信中表示地址帧/数据帧的标志位。在方式0和方式1中,该位不用。。
串口1寄存器及工 作模式
CONTENTS
相关寄存器 工作方式 波特率计算
1 相关寄存器
符号
描述
地址 MSB
位地址及符号 LSB
复位值
SCON
串口1控制
98H SM0/FE SM1
SM2 REN TB8 RB8
TI
RI 0x00
SBUF
串口1缓冲器
99H
0xxx
T2H
T2高8位
D6H
0x00
T2L AUXR PCON
位自动重装载模式),或者采用定时器T2作波特率发生器时:波特率=

基于or1200最小sopc系统搭建(三)--串口

基于or1200最小sopc系统搭建(三)--串口

接上一篇(原创)基于or1200最小sopc系统搭建(二)--QuartuII工程及DE2平台下载现再为构建的or1200最小系统添加上串口。

先进行仿真,再在DE2上验证,在hyperterminal 上显示hello world!从opencores网站上下载uart16550_latest.tar.gz,在or1200_sopc目录下新建uart16550目录,将uart16550的源码在解压到这个目录。

修改or1200_sys.v文件。

修改后文件如下:module or1200_sys(input clk_i,input rst_n,// buttonsinput[15:0]SW,// uart interfaceinput uart_rxd,output uart_txd,// segmentsoutput[31:0]LEDR);wire rst=~rst_n;// **************************************************// Wires from OR1200 Inst Master to Conmax m0// **************************************************wire wire_iwb_ack_i;wire wire_iwb_cyc_o;wire wire_iwb_stb_o;wire[31:0]wire_iwb_data_i;wire[31:0]wire_iwb_data_o;wire[31:0]wire_iwb_addr_o;wire[3:0]wire_iwb_sel_o;wire wire_iwb_we_o;wire wire_iwb_err_i;wire wire_iwb_rty_i;// **************************************************// Wires from OR1200 Data Master to Conmax m1// **************************************************wire wire_dwb_ack_i;wire wire_dwb_cyc_o;wire wire_dwb_stb_o;wire[31:0]wire_dwb_data_i;wire[31:0]wire_dwb_data_o;wire[31:0]wire_dwb_addr_o;wire[3:0]wire_dwb_sel_o;wire wire_dwb_we_o;wire wire_dwb_err_i;wire wire_dwb_rty_i;// **************************************************// Wires from Conmax s0 to onchip_ram0// **************************************************wire wire_ram0_ack_o;wire wire_ram0_cyc_i;wire wire_ram0_stb_i;wire[31:0]wire_ram0_data_i;wire[31:0]wire_ram0_data_o;wire[31:0]wire_ram0_addr_i;wire[3:0]wire_ram0_sel_i;wire wire_ram0_we_i;// **************************************************// Wires from Conmax s1 to GPIO// **************************************************wire wire_gpio_ack_o;wire wire_gpio_cyc_i;wire wire_gpio_stb_i;wire[31:0]wire_gpio_data_i;wire[31:0]wire_gpio_data_o;wire[31:0]wire_gpio_addr_i;wire[3:0]wire_gpio_sel_i;wire wire_gpio_we_i;wire wire_gpio_err_o;wire wire_gpio_interrupt;// ************************************************** // Wires from Conmax s2 to uart16550// **************************************************wire wire_uart_ack_o;wire wire_uart_cyc_i;wire wire_uart_stb_i;wire[31:0]wire_uart_data_i;wire[31:0]wire_uart_data_o;wire[31:0]wire_uart_addr_i;wire[3:0]wire_uart_sel_i;wire wire_uart_we_i;wire wire_uart_interrupt;or1200_top u_or1200(// System.clk_i(clk_i),.rst_i(rst),.pic_ints_i({18'b0,wire_uart_interrupt,wire_gpio_interrupt}), .clmode_i(2'b00),// Instruction WISHBONE INTERFACE.iwb_clk_i(clk_i),.iwb_rst_i(rst),.iwb_ack_i(wire_iwb_ack_i),.iwb_err_i(wire_iwb_err_i),.iwb_rty_i(wire_iwb_rty_i),.iwb_dat_i(wire_iwb_data_i),.iwb_cyc_o(wire_iwb_cyc_o),.iwb_adr_o(wire_iwb_addr_o),.iwb_stb_o(wire_iwb_stb_o),.iwb_we_o(wire_iwb_we_o),.iwb_sel_o(wire_iwb_sel_o),.iwb_dat_o(wire_iwb_data_o),`ifdef OR1200_WB_CAB.iwb_cab_o(),`endif//`ifdef OR1200_WB_B3// iwb_cti_o(),// iwb_bte_o(),//`endif// Data WISHBONE INTERFACE.dwb_clk_i(clk_i),.dwb_rst_i(rst),.dwb_ack_i(wire_dwb_ack_i),.dwb_err_i(wire_dwb_err_i),.dwb_cyc_o(wire_dwb_cyc_o), .dwb_adr_o(wire_dwb_addr_o), .dwb_stb_o(wire_dwb_stb_o), .dwb_we_o(wire_dwb_we_o), .dwb_sel_o(wire_dwb_sel_o), .dwb_dat_o(wire_dwb_data_o), `ifdef OR1200_WB_CAB.dwb_cab_o(),`endif//`ifdef OR1200_WB_B3// dwb_cti_o(),// dwb_bte_o(),//`endif// External Debug Interface.dbg_stall_i(1'b0),.dbg_ewt_i(1'b0),.dbg_lss_o(),.dbg_is_o(),.dbg_wp_o(),.dbg_bp_o(),.dbg_stb_i(1'b0),.dbg_we_i(1'b0),.dbg_adr_i(0),.dbg_dat_i(0),.dbg_dat_o(),.dbg_ack_o(),//`ifdef OR1200_BIST// // RAM BIST// mbist_si_i(),// mbist_so_o(),// mbist_ctrl_i(),//`endif// Power Management.pm_cpustall_i(0),.pm_clksd_o(),.pm_dc_gate_o(),.pm_ic_gate_o(),.pm_dmmu_gate_o(),.pm_immu_gate_o(),.pm_tt_gate_o(),.pm_cpu_gate_o(),.pm_wakeup_o(),.pm_lvolt_o());wb_conmax_top u_wb(.clk_i(clk_i),.rst_i(rst),// Master 0 Interface.m0_data_i(wire_iwb_data_o), .m0_data_o(wire_iwb_data_i), .m0_addr_i(wire_iwb_addr_o), .m0_sel_i(wire_iwb_sel_o),.m0_we_i(wire_iwb_we_o),.m0_cyc_i(wire_iwb_cyc_o),.m0_stb_i(wire_iwb_stb_o),.m0_rty_o(wire_iwb_rty_i),// .m0_cab_i(),// Master 1 Interface.m1_data_i(wire_dwb_data_o), .m1_data_o(wire_dwb_data_i), .m1_addr_i(wire_dwb_addr_o), .m1_sel_i(wire_dwb_sel_o),.m1_we_i(wire_dwb_we_o),.m1_cyc_i(wire_dwb_cyc_o),.m1_stb_i(wire_dwb_stb_o),.m1_ack_o(wire_dwb_ack_i), .m1_err_o(wire_dwb_err_i),.m1_rty_o(wire_dwb_rty_i),// .m0_cab_i(),// Slave 0 Interface.s0_data_i(wire_ram0_data_o), .s0_data_o(wire_ram0_data_i), .s0_addr_o(wire_ram0_addr_i), .s0_sel_o(wire_ram0_sel_i),.s0_we_o(wire_ram0_we_i),.s0_cyc_o(wire_ram0_cyc_i), .s0_stb_o(wire_ram0_stb_i),.s0_ack_i(wire_ram0_ack_o), .s0_err_i(0),.s0_rty_i(0),//.s0_cab_o(),// Slave 1 Interface.s1_data_i(wire_gpio_data_o), .s1_data_o(wire_gpio_data_i), .s1_addr_o(wire_gpio_addr_i), .s1_sel_o(wire_gpio_sel_i),.s1_we_o(wire_gpio_we_i),.s1_cyc_o(wire_gpio_cyc_i),.s1_stb_o(wire_gpio_stb_i),.s1_ack_i(wire_gpio_ack_o),.s1_err_i(wire_gpio_err_o),.s1_rty_i(0),//.s1_cab_o(),// Slave 2 Interface.s2_data_i(wire_uart_data_o), .s2_data_o(wire_uart_data_i), .s2_addr_o(wire_uart_addr_i), .s2_sel_o(wire_uart_sel_i),.s2_we_o(wire_uart_we_i),.s2_cyc_o(wire_uart_cyc_i),.s2_stb_o(wire_uart_stb_i),.s2_ack_i(wire_uart_ack_o),.s2_err_i(0),.s2_rty_i(0)//,//.s0_cab_o(),);ram0_top u_ram0(.clk_i(clk_i),.rst_i(rst),.wb_stb_i(wire_ram0_stb_i),.wb_cyc_i(wire_ram0_cyc_i),.wb_ack_o(wire_ram0_ack_o),.wb_addr_i(wire_ram0_addr_i),.wb_sel_i(wire_ram0_sel_i),.wb_we_i(wire_ram0_we_i),.wb_data_i(wire_ram0_data_i),.wb_data_o(wire_ram0_data_o));gpio_top u_gpio(// WISHBONE Interface.wb_clk_i(clk_i),.wb_rst_i(rst),.wb_cyc_i(wire_gpio_cyc_i),.wb_adr_i(wire_gpio_addr_i),.wb_dat_i(wire_gpio_data_i),.wb_sel_i(wire_gpio_sel_i),.wb_we_i(wire_gpio_we_i),.wb_stb_i(wire_gpio_stb_i),.wb_dat_o(wire_gpio_data_o),.wb_ack_o(wire_gpio_ack_o),.wb_err_o(wire_gpio_err_o),.wb_inta_o(wire_gpio_interrupt),//`ifdef GPIO_AUX_IMPLEMENT// // Auxiliary inputs interface// .aux_i(),//`endif // GPIO_AUX_IMPLEMENT// External GPIO Interface.ext_pad_i({16'b0,SW}),.ext_pad_o(LEDR),.ext_padoe_o()//,//`ifdef GPIO_CLKPAD// .clk_pad_i()//`endif);uart_top u_uart(.wb_clk_i(clk_i),// Wishbone signals.wb_rst_i(rst),.wb_adr_i(wire_uart_addr_i[4:0]),.wb_dat_i(wire_uart_data_i),.wb_dat_o(wire_uart_data_o),.wb_we_i(wire_uart_we_i),.wb_stb_i(wire_uart_stb_i),.wb_cyc_i(wire_uart_cyc_i),.wb_ack_o(wire_uart_ack_o),.wb_sel_i(wire_uart_sel_i),.int_o(wire_uart_interrupt),// interrupt request // UART signals// serial input/output.stx_pad_o(uart_txd),.srx_pad_i(uart_rxd),// modem signals.rts_pad_o(),.cts_pad_i(1'b0),.dtr_pad_o(),.dsr_pad_i(1'b0),.ri_pad_i(1'b0),.dcd_pad_i(1'b0)//,//`ifdef UART_HAS_BAUDRATE_OUTPUT// .baud_o()//`endif);endmodule修改or1200_sopc.v文件://small sopc with openrisc//`include "or1200_defines.v"module or1200_sopc(//////////////////// Clock Input ////////////////////CLOCK_27,// On Board 27 MHzCLOCK_50,// On Board 50 MHz//////////////////// Push Button ////////////////////KEY,// Pushbutton[3:0]//////////////////// DPDT Switch ////////////////////SW,// Toggle Switch[17:0]//////////////////////// LED ////////////////////////LEDR,// LED Red[17:0]//////////////////////// UART ////////////////////////UART_TXD,// UART TransmitterUART_RXD//, // UART Receiver );//////////////////////// Clock Input ////////////////////////input CLOCK_27;// On Board 27 MHzinput CLOCK_50;// On Board 50 MHz//////////////////////// Push Button ////////////////////////input[3:0]KEY;// Pushbutton[3:0]//////////////////////// DPDT Switch ////////////////////////input[17:0]SW;// Toggle Switch[17:0]//////////////////////////// LED ////////////////////////////output[17:0]LEDR;// LED Red[17:0]//////////////////////////// UART ////////////////////////////output UART_TXD;// UART Transmitter input UART_RXD;// UART Receiverwire CPU_RESET;wire clk_25,clk_10;Reset_Delay delay1(.iRST(KEY[0]),.iCLK(CLOCK_50),.oRESET(CPU_RESET));cpu_pll pll0(.inclk0(CLOCK_50),.c0(clk_25),.c1(clk_10));or1200_sys or1200(.clk_i(clk_25),.rst_n(CPU_RESET),// buttons.SW(SW[15:0]),// segments.LEDR(LEDR[17:0]),// uart interface.uart_rxd(UART_RXD),.uart_txd(UART_TXD)//,);endmodule仿真UART时需要用到UART的接收器核uart_rx。

一种开源微处理器OR1200的嵌入式SoC设计

一种开源微处理器OR1200的嵌入式SoC设计

一种开源微处理器OR1200的嵌入式SoC设计一种开源微处理器OR1200的嵌入式SoC设计摘要:介绍了一种基于32位开放源代码的OpenRISC1200处理器嵌入式SoC的设计方案。

系统以OR1200为核心,开发基于Wishone 总线的IP核,并集成到OR1200系统中,构成了系统的硬件平台。

软件部分构建了基于OR1200系统的交叉编译环境,开发了系统的启动程序Bootloader,移植了&mu;C/OS-II操作系统。

关键词:OR1200微处理器;嵌入式系统;Bootloader;&mu;C/OS-II高性能的处理器核是SoC设计中最为关键和核心的部分。

绝大多数SoC的处理器都采用了R ISC体系结构。

RISC处理器具有指令效率高、电路面积小和功率消耗低等特点,满足了SoC高性能、低成本和低功耗的设计要求。

目前在SoC设计中广泛使用的32位RISC处理器(如ARM 公司的ARM处理器、IBM的Power PC处理器、MIPS公司的MIPS处理器等)均属于商业内核,使用者必须支付相对昂贵的授权费。

近年来开放源代码运动迅速发展,开放性源码的概念已经从软件领域(如Linux,GCC等)扩展到了硬件领域,出现了专门发布免费的IP核源代码的组织&mdash;&mdash;OpenCores。

OR1200以其完全开放的源代码和编译器吸引了设计者。

其结构简单、通用性和可移植性强,具备完整的开发平台,非常适合嵌入式SoC设计[1]。

关于OR1200的研究也受到学术界和工业界越来越多的关注。

132位开放源代码处理器核OpenRISC1200OpenRISC1000系列处理器是开放IP核源代码组织OpenCores公布的32/64位处理器软核。

OpenRISC1200采用了自主设计的OpenRISC1000体系结构和自定义的ORBIS32指令集。

它是一种32位、标量、哈佛结构、5级整数流水线的RISC,支持Cache、MMU 和基本的DSP功能。

PLC丨S7-1200与第三方设备实现自由口通信详解

PLC丨S7-1200与第三方设备实现自由口通信详解

PLC丨S7-1200与第三方设备实现自由口通信详解导读:西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。

因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。

1控制系统原理图1:控制系统原理2硬件需求S7-1200 PLC目前有3种类型的CPU:1)S7-1211C CPU。

2)S7-1212C CPU。

3)S7-1214C CPU。

这三种类型的CPU都可以连接三个串口通信模版。

本例中使用的PLC硬件为:1)PM1207电源( 6EP1 332-1SH71 )2)S7-1214C ( 6ES7 214 -1BE30 -0XB0 )3) CM1241 RS232 ( 6ES7 241 -1AH30 -0XB0 )3软件需求1) 编程软件Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)4组态我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。

点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:图2:新建S7 -1200项目首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。

创建后的窗口如下图所示:图3:新建项目后点击门户视图左下角的“Project View”切换到项目视图下,如下图:图4:切换到项目视图打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。

选择后如下图:图5:PLC硬件组态插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口,在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。

一种开源微处理器OR1200的嵌入式SoC设计

一种开源微处理器OR1200的嵌入式SoC设计

一种开源微处理器OR1200的嵌入式SoC设计
焦汉明;陈新华;沈国新;方翰华
【期刊名称】《微型机与应用》
【年(卷),期】2009(028)017
【摘要】介绍了一种基于32位开放源代码的OpenRISC1200处理器嵌入式SoC 的设计方案.系统以OR1200为核心,开发基于Wishone总线的IP核,并集成到OR1200系统中,构成了系统的硬件平台.软件部分构建了基于OR1200系统的交叉编译环境,开发了系统的启动程序Bootloader,移植了μC/OS-Ⅱ操作系统.
【总页数】4页(P70-72,75)
【作者】焦汉明;陈新华;沈国新;方翰华
【作者单位】山东科技大学,电子信息科学与技术系,山东,青岛,266510;山东科技大学,电子信息科学与技术系,山东,青岛,266510;山东科技大学,电子信息科学与技术系,山东,青岛,266510;山东科技大学,电子信息科学与技术系,山东,青岛,266510
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.基于一种微处理器的SOC设计 [J], 张学慧;张晓林;张展;张向阳
2.一种可用在基于平台SoC设计中的处理器核OR1200 [J], 兰文丽;杨昆;谢翔;张春
3.一种开源软核OR1200的系统级描述方法研究 [J], 吴琼飞;张志强;朱勇
4.基于OR1200微处理器的嵌入式以太网设计 [J], 焦汉明;陈新华;张德学
5.一种基于国产嵌入式CPU核的BP神经网络SoC设计 [J], 徐文亮
因版权原因,仅展示原文概要,查看原文内容请购买。

2021年基于Protues的仿真实验

2021年基于Protues的仿真实验

Proteus基本操作与8051最小系统利用Proteus平台搭建一个“8051最小系统”的仿真电路(流水灯为例)一、Proteus基本操作(一)启动Proteus仿真软件:双击“isis”图标,出现isis操作页面。

(二)搭建单片机系统仿真电路:分“器件选取”、“器件放置”和“电路连接”三大步来操作。

〖第一步器件选取〗:isis操作页面的左侧中下部分是电路和器件操作的导航区域,器件选取前“Devices”栏目下为空,器件选取操作的目的是将从器件库中分拣出需要的器件,这些器件排列在“Devices”栏目下。

A:先选择“器件和仪器工具栏”的“放大器符号样”图标(该工具栏的第一个图标),再单击“P”键即弹出“Pick Devices”窗口。

Pick Devices窗口左侧可以输入器件类型名称,或者选择器件类型,窗口中部即出现相应类型的器件,若鼠标选中器件,窗口右侧会出现该器件的引脚图和封装图。

B:在Pick Devices窗口中,先选中器件,后点击窗口右下脚的“确定”按钮,即将器件排列在“Devices”栏目下了。

或者直接双击被选的器件,也能收到同样的操作结果。

C:对于电源、地、输入和输出端等特殊器件,不在“Pick Devices”窗口中选取而在“Pick Terminals”窗口中选取。

只要选择“器件和仪器工具栏”的“输入输出符号样”图标(该工具栏的第八个图标),即变“Devices”栏目为“Terminals”栏目,“Terminals”栏目下已经将电源、地、输入和输出端等特殊器件列出了一部分,如还要增加时,单击“P”键即弹出“Pick Terminals”窗口供选取。

〖第二步器件放置〗:isis操作页面的中右侧是搭建硬件电路系统原理图和显示系统运行状态的区域。

器件放置前或选择“New Design”文件后,器件放置区域同导航区一样栏目内容为空,器件放置操作是把导航区的器件排列在放置区的适当位置,以便于搭建硬件电路系统原理图。

(大一组)ST89C52最小系统设计及串口通信

(大一组)ST89C52最小系统设计及串口通信

STC单片机串口通信一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。

由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。

串口通信的工作原理请同学们参看教科书。

以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。

MSC-51串行端口在四种工作模式下有不同的波特率计算方法。

其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。

在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。

在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。

在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。

这要根据系统的运作特点,确定通信的频率范围。

然后考虑通信时钟误差。

使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。

为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。

下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。

则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。

列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。

2、通信协议的使用通信协议是通信设备在通信前的约定。

单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。

一种基于STM32的最小系统及串口通信的实现

一种基于STM32的最小系统及串口通信的实现

一种基于STM32的最小系统及串口通信的实现 STM32是意法半导体(ST)推出的32位RISC(精简指令集计算机)微控制器系列产品,采用高性能的ARMCortex-M3内核,工作频率为72MHz,内置高速存储器(128K字节的闪存和20K字节的SRAM)。

本文介绍STM32F103增强型微处理器的最小系统,实现其串口通信的设计调试。

  1、STM32的最小系统 STM32微处理器不能独立工作,必须提供外围相关电路,构成STM32最小系统。

包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口、串行通信接口等电路。

最小系统原理图如图1所示。

 图1 S TM32最小系统原理图 1.1、电源模块与外部晶振 STM32F103C8T6内嵌8MHz高速晶体振荡器,也可外部时钟供给,本系统采用8MHz外部晶振供给。

 STM32F103C8T6的供电电压范围为2.0~3.6V。

电源模块是电路关键的一部分,是整个系统工作的基础。

因此,电源设计过程中需要考虑以下因素:①输入电压、电流;②输出的电压、电流和功率;③电磁兼容和电磁干扰等。

 1.1.1、电源供电设计 最小系统供电电源为12V直流电源供电,通过LM2576S-5.0单元电路,将电压稳定到+5V。

LM2576系列芯片是单片集成电路,能提供降压开关稳压器的各种功能,能驱动3A的负载,有优异的线性和负载调整能力,在指定输入电压和输出负载条件下保证输出电压的&plusmn;4%误差。

LM2576的效率比流行的三段线性稳压器要高的多,是理想的替代。

用DL4003串接到电源正端,为系统提供电源反接保护。

+5V电压通过三端稳压芯片ASM1117-3.3将电压转换成+3.3V,D3作为电源指示灯,为主控芯片STM32F103C8T6、串口通信电路和其他外围芯片供电。

电源供电原理如图2所示。

 图2 电源供电原理 1.1.2、电源抗干扰设计 电源电压转换过程中需要进行滤波处理,+12V转+5V的电路中,需要在+12V输入端加入47&mu;F/50V的电解电容,+5V输出端加入1000&mu;F/25V的电解电容,IN5822起到续流作用;+5V转3.3V电路中,在+5V输入端和+3.3V输出端需要各加入100&mu;F/10V的钽电容。

串口的设计流程

串口的设计流程

串口的设计流程串口是计算机和外部设备之间进行数据传输的一种常用接口,其设计流程包括硬件设计和软件设计两个部分。

硬件设计部分:1. 确定串口的物理连接方式:串口可以通过DB9、DB25、USB等不同的物理连接方式进行连接。

需要根据具体应用场景进行选择。

2. 选择串口芯片:串口芯片可以是单片机内置的UART、外部芯片(如MAX232)或者使用FPGA等可编程器件实现。

3. 确定串口的工作电平:串口的电平分为RS232和TTL两种,需要根据具体应用场景进行选择。

4. 确定串口的通信速率:串口的通信速率可以通过波特率进行设置,需要根据具体应用场景进行选择。

5. 设计串口的防雷保护电路:串口连接在外部设备上,需要考虑外部环境对串口的影响,设计相应的防雷保护电路。

6. 确定串口的接口标准:串口的接口标准有RS232、RS422、RS485等多种,需要根据具体应用场景进行选择。

7. 确定串口的工作模式:串口的工作模式可以是异步模式、同步模式、半同步半异步模式等多种,需要根据具体应用场景进行选择。

软件设计部分:1. 驱动程序设计:操作系统中需要安装相应的串口驱动程序,可以通过编写驱动程序实现串口的读写操作和数据传输。

2. 协议设计:串口通信需要使用协议进行数据传输,可以根据具体应用场景设计协议格式。

3. 应用程序设计:根据具体的应用需求设计相应的应用程序,实现与外部设备的数据交互和控制。

4. 调试程序设计:在调试过程中需要编写相应的调试程序,对串口进行测试和调试。

5. 系统集成测试:在完成软件设计后需要进行系统集成测试,测试系统的整体性能和稳定性。

总结:串口的设计流程包括硬件设计和软件设计两个部分。

在硬件设计中,需要确定串口的物理连接方式、选择串口芯片、确定通信速率和接口标准等。

在软件设计中,需要编写驱动程序、设计协议格式、编写应用程序、设计调试程序和进行系统集成测试。

通过合理的设计流程,能够实现稳定可靠的串口通信。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

接上一篇(原创)基于or1200最小sopc系统搭建(二)--QuartuII工程及DE2平台下载现再为构建的or1200最小系统添加上串口。

先进行仿真,再在DE2上验证,在hyperterminal 上显示hello world!从opencores网站上下载uart16550_latest.tar.gz,在or1200_sopc目录下新建uart16550目录,将uart16550的源码在解压到这个目录。

修改or1200_sys.v文件。

修改后文件如下:module or1200_sys(input clk_i,input rst_n,// buttonsinput[15:0]SW,// uart interfaceinput uart_rxd,output uart_txd,// segmentsoutput[31:0]LEDR);wire rst=~rst_n;// **************************************************// Wires from OR1200 Inst Master to Conmax m0// **************************************************wire wire_iwb_ack_i;wire wire_iwb_cyc_o;wire wire_iwb_stb_o;wire[31:0]wire_iwb_data_i;wire[31:0]wire_iwb_data_o;wire[31:0]wire_iwb_addr_o;wire[3:0]wire_iwb_sel_o;wire wire_iwb_we_o;wire wire_iwb_err_i;wire wire_iwb_rty_i;// **************************************************// Wires from OR1200 Data Master to Conmax m1// **************************************************wire wire_dwb_ack_i;wire wire_dwb_cyc_o;wire wire_dwb_stb_o;wire[31:0]wire_dwb_data_i;wire[31:0]wire_dwb_data_o;wire[31:0]wire_dwb_addr_o;wire[3:0]wire_dwb_sel_o;wire wire_dwb_we_o;wire wire_dwb_err_i;wire wire_dwb_rty_i;// **************************************************// Wires from Conmax s0 to onchip_ram0// **************************************************wire wire_ram0_ack_o;wire wire_ram0_cyc_i;wire wire_ram0_stb_i;wire[31:0]wire_ram0_data_i;wire[31:0]wire_ram0_data_o;wire[31:0]wire_ram0_addr_i;wire[3:0]wire_ram0_sel_i;wire wire_ram0_we_i;// **************************************************// Wires from Conmax s1 to GPIO// **************************************************wire wire_gpio_ack_o;wire wire_gpio_cyc_i;wire wire_gpio_stb_i;wire[31:0]wire_gpio_data_i;wire[31:0]wire_gpio_data_o;wire[31:0]wire_gpio_addr_i;wire[3:0]wire_gpio_sel_i;wire wire_gpio_we_i;wire wire_gpio_err_o;wire wire_gpio_interrupt;// ************************************************** // Wires from Conmax s2 to uart16550// **************************************************wire wire_uart_ack_o;wire wire_uart_cyc_i;wire wire_uart_stb_i;wire[31:0]wire_uart_data_i;wire[31:0]wire_uart_data_o;wire[31:0]wire_uart_addr_i;wire[3:0]wire_uart_sel_i;wire wire_uart_we_i;wire wire_uart_interrupt;or1200_top u_or1200(// System.clk_i(clk_i),.rst_i(rst),.pic_ints_i({18'b0,wire_uart_interrupt,wire_gpio_interrupt}), .clmode_i(2'b00),// Instruction WISHBONE INTERFACE.iwb_clk_i(clk_i),.iwb_rst_i(rst),.iwb_ack_i(wire_iwb_ack_i),.iwb_err_i(wire_iwb_err_i),.iwb_rty_i(wire_iwb_rty_i),.iwb_dat_i(wire_iwb_data_i),.iwb_cyc_o(wire_iwb_cyc_o),.iwb_adr_o(wire_iwb_addr_o),.iwb_stb_o(wire_iwb_stb_o),.iwb_we_o(wire_iwb_we_o),.iwb_sel_o(wire_iwb_sel_o),.iwb_dat_o(wire_iwb_data_o),`ifdef OR1200_WB_CAB.iwb_cab_o(),`endif//`ifdef OR1200_WB_B3// iwb_cti_o(),// iwb_bte_o(),//`endif// Data WISHBONE INTERFACE.dwb_clk_i(clk_i),.dwb_rst_i(rst),.dwb_ack_i(wire_dwb_ack_i),.dwb_err_i(wire_dwb_err_i),.dwb_cyc_o(wire_dwb_cyc_o), .dwb_adr_o(wire_dwb_addr_o), .dwb_stb_o(wire_dwb_stb_o), .dwb_we_o(wire_dwb_we_o), .dwb_sel_o(wire_dwb_sel_o), .dwb_dat_o(wire_dwb_data_o), `ifdef OR1200_WB_CAB.dwb_cab_o(),`endif//`ifdef OR1200_WB_B3// dwb_cti_o(),// dwb_bte_o(),//`endif// External Debug Interface.dbg_stall_i(1'b0),.dbg_ewt_i(1'b0),.dbg_lss_o(),.dbg_is_o(),.dbg_wp_o(),.dbg_bp_o(),.dbg_stb_i(1'b0),.dbg_we_i(1'b0),.dbg_adr_i(0),.dbg_dat_i(0),.dbg_dat_o(),.dbg_ack_o(),//`ifdef OR1200_BIST// // RAM BIST// mbist_si_i(),// mbist_so_o(),// mbist_ctrl_i(),//`endif// Power Management.pm_cpustall_i(0),.pm_clksd_o(),.pm_dc_gate_o(),.pm_ic_gate_o(),.pm_dmmu_gate_o(),.pm_immu_gate_o(),.pm_tt_gate_o(),.pm_cpu_gate_o(),.pm_wakeup_o(),.pm_lvolt_o());wb_conmax_top u_wb(.clk_i(clk_i),.rst_i(rst),// Master 0 Interface.m0_data_i(wire_iwb_data_o), .m0_data_o(wire_iwb_data_i), .m0_addr_i(wire_iwb_addr_o), .m0_sel_i(wire_iwb_sel_o),.m0_we_i(wire_iwb_we_o),.m0_cyc_i(wire_iwb_cyc_o),.m0_stb_i(wire_iwb_stb_o),.m0_rty_o(wire_iwb_rty_i),// .m0_cab_i(),// Master 1 Interface.m1_data_i(wire_dwb_data_o), .m1_data_o(wire_dwb_data_i), .m1_addr_i(wire_dwb_addr_o), .m1_sel_i(wire_dwb_sel_o),.m1_we_i(wire_dwb_we_o),.m1_cyc_i(wire_dwb_cyc_o),.m1_stb_i(wire_dwb_stb_o),.m1_ack_o(wire_dwb_ack_i), .m1_err_o(wire_dwb_err_i),.m1_rty_o(wire_dwb_rty_i),// .m0_cab_i(),// Slave 0 Interface.s0_data_i(wire_ram0_data_o), .s0_data_o(wire_ram0_data_i), .s0_addr_o(wire_ram0_addr_i), .s0_sel_o(wire_ram0_sel_i),.s0_we_o(wire_ram0_we_i),.s0_cyc_o(wire_ram0_cyc_i), .s0_stb_o(wire_ram0_stb_i),.s0_ack_i(wire_ram0_ack_o), .s0_err_i(0),.s0_rty_i(0),//.s0_cab_o(),// Slave 1 Interface.s1_data_i(wire_gpio_data_o), .s1_data_o(wire_gpio_data_i), .s1_addr_o(wire_gpio_addr_i), .s1_sel_o(wire_gpio_sel_i),.s1_we_o(wire_gpio_we_i),.s1_cyc_o(wire_gpio_cyc_i),.s1_stb_o(wire_gpio_stb_i),.s1_ack_i(wire_gpio_ack_o),.s1_err_i(wire_gpio_err_o),.s1_rty_i(0),//.s1_cab_o(),// Slave 2 Interface.s2_data_i(wire_uart_data_o), .s2_data_o(wire_uart_data_i), .s2_addr_o(wire_uart_addr_i), .s2_sel_o(wire_uart_sel_i),.s2_we_o(wire_uart_we_i),.s2_cyc_o(wire_uart_cyc_i),.s2_stb_o(wire_uart_stb_i),.s2_ack_i(wire_uart_ack_o),.s2_err_i(0),.s2_rty_i(0)//,//.s0_cab_o(),);ram0_top u_ram0(.clk_i(clk_i),.rst_i(rst),.wb_stb_i(wire_ram0_stb_i),.wb_cyc_i(wire_ram0_cyc_i),.wb_ack_o(wire_ram0_ack_o),.wb_addr_i(wire_ram0_addr_i),.wb_sel_i(wire_ram0_sel_i),.wb_we_i(wire_ram0_we_i),.wb_data_i(wire_ram0_data_i),.wb_data_o(wire_ram0_data_o));gpio_top u_gpio(// WISHBONE Interface.wb_clk_i(clk_i),.wb_rst_i(rst),.wb_cyc_i(wire_gpio_cyc_i),.wb_adr_i(wire_gpio_addr_i),.wb_dat_i(wire_gpio_data_i),.wb_sel_i(wire_gpio_sel_i),.wb_we_i(wire_gpio_we_i),.wb_stb_i(wire_gpio_stb_i),.wb_dat_o(wire_gpio_data_o),.wb_ack_o(wire_gpio_ack_o),.wb_err_o(wire_gpio_err_o),.wb_inta_o(wire_gpio_interrupt),//`ifdef GPIO_AUX_IMPLEMENT// // Auxiliary inputs interface// .aux_i(),//`endif // GPIO_AUX_IMPLEMENT// External GPIO Interface.ext_pad_i({16'b0,SW}),.ext_pad_o(LEDR),.ext_padoe_o()//,//`ifdef GPIO_CLKPAD// .clk_pad_i()//`endif);uart_top u_uart(.wb_clk_i(clk_i),// Wishbone signals.wb_rst_i(rst),.wb_adr_i(wire_uart_addr_i[4:0]),.wb_dat_i(wire_uart_data_i),.wb_dat_o(wire_uart_data_o),.wb_we_i(wire_uart_we_i),.wb_stb_i(wire_uart_stb_i),.wb_cyc_i(wire_uart_cyc_i),.wb_ack_o(wire_uart_ack_o),.wb_sel_i(wire_uart_sel_i),.int_o(wire_uart_interrupt),// interrupt request // UART signals// serial input/output.stx_pad_o(uart_txd),.srx_pad_i(uart_rxd),// modem signals.rts_pad_o(),.cts_pad_i(1'b0),.dtr_pad_o(),.dsr_pad_i(1'b0),.ri_pad_i(1'b0),.dcd_pad_i(1'b0)//,//`ifdef UART_HAS_BAUDRATE_OUTPUT// .baud_o()//`endif);endmodule修改or1200_sopc.v文件://small sopc with openrisc//`include "or1200_defines.v"module or1200_sopc(//////////////////// Clock Input ////////////////////CLOCK_27,// On Board 27 MHzCLOCK_50,// On Board 50 MHz//////////////////// Push Button ////////////////////KEY,// Pushbutton[3:0]//////////////////// DPDT Switch ////////////////////SW,// Toggle Switch[17:0]//////////////////////// LED ////////////////////////LEDR,// LED Red[17:0]//////////////////////// UART ////////////////////////UART_TXD,// UART TransmitterUART_RXD//, // UART Receiver );//////////////////////// Clock Input ////////////////////////input CLOCK_27;// On Board 27 MHzinput CLOCK_50;// On Board 50 MHz//////////////////////// Push Button ////////////////////////input[3:0]KEY;// Pushbutton[3:0]//////////////////////// DPDT Switch ////////////////////////input[17:0]SW;// Toggle Switch[17:0]//////////////////////////// LED ////////////////////////////output[17:0]LEDR;// LED Red[17:0]//////////////////////////// UART ////////////////////////////output UART_TXD;// UART Transmitter input UART_RXD;// UART Receiverwire CPU_RESET;wire clk_25,clk_10;Reset_Delay delay1(.iRST(KEY[0]),.iCLK(CLOCK_50),.oRESET(CPU_RESET));cpu_pll pll0(.inclk0(CLOCK_50),.c0(clk_25),.c1(clk_10));or1200_sys or1200(.clk_i(clk_25),.rst_n(CPU_RESET),// buttons.SW(SW[15:0]),// segments.LEDR(LEDR[17:0]),// uart interface.uart_rxd(UART_RXD),.uart_txd(UART_TXD)//,);endmodule仿真UART时需要用到UART的接收器核uart_rx。

相关文档
最新文档