具体描述
				
				
					基本信息
书名:数字电路EDA实用教程
定价:26.00元
作者:顾斌    等
出版社:西安电子科技大学出版社
出版日期:2014-07-01
ISBN:9787560633978
字数:
页码:
版次:1
装帧:平装
开本:16开
商品重量:0.4kg
编辑推荐
内容提要
全书从实用的角度出发,通过大量工程实例,详细介绍了利用EDA技术设计可编程逻辑器件的方法和技巧。全书分为3篇,共6章。上篇为可编程逻辑器件基础知识篇,简要介绍了EDA技术的应用领域、FPGA和CPLD硬件结构,详细叙述了Altera公司和Xilinx公司常用开发工具的使用方法;中篇为硬件描述语言编程基础篇,通过大量实例详细介绍了VHDL和Verilog这两种常用的硬件描述语言的语法和常用数字电路功能的实现;下篇为数字系统开发实例篇,包括实用数字钟电路设计、串口通信设计、FIR滤波器的设计和数字频率计的设计。
  本书语言简洁、结构清晰,以实际工程为背景,实例典型、丰富,来自于实践并且调试通过,是作者多年开发经验的推广与总结,代表性和指导性强,利于读者举一反三。
  本书适合计算机、自动化、电子及硬件等相关专业的大学生,以及从事FPGA开发的科研人员使用。
目录
上篇  可编程逻辑器件基础知识章  绪论  1.1  概述  1.2  EDA技术的应用领域  l.3  EDA的设计步骤  1.4  TOP-DOWN设计方法  1.5  硬件描述语言    1.5.l  ABEL-HDL    1.5.2  Verilog-HDL    1.5.3  VHDL    1.5.4  Verilog-HDL和VHDL的比较  1.6  可编程逻辑器件开发工具    l.6.1  ispLEVER    1.6.2  ISE    l.6.3  Quanus II  l.7  IP核概述第2章  Xilinx公司产品介绍及开发平台应用  2.1  Xilinx公司及其FPGA产品    2.1.1  概述    2.1.2  可配置逻辑块CLB    2.1.3  输入/输出模块10B    2.1.4  Block RAM  2.2  ISE Design Suite集成开发环境    2.2.1  ISE Design suite各功能模块简介    2.2.2  ISE Foundation软件介绍  2.3  ISE  Foundation设计流程    2.3.1  问题分析    2.3.2  设计输入    2.3.3  工程编译    2.3.4  仿真验证    2.3.5  器件配置与编程    2.3.6  IP核的使用  习题2第3章  AItera公司产品介绍及开发平台应用  3.1  Altera公司CPLD芯片    3.1.1  概述    3.1.2  功能描述    3.1.3  逻辑阵列块    3.1.4  用户Flash存储区  3.2  ModelSim的设计过程    3.2.1  新建工程与源文件    3.2.2  ModelSim仿真  3.3  Quartus Ⅱ的设计过程    3.3.1  设计输入    3.3.2  编译    3.3.3  编译前的约束设置    3.3.4  仿真前的参数设置    3.3.5  仿真    3.3.6  引脚分配  3.4  Quartus Ⅱ与Modelsim联合仿真    3.4.1  存储器初始化文件    3.4.2  Megawizard Plus-In Manager定制ROM    3.4.3  Quartus Ⅱ与ModelSim联合仿真  习题3中篇  硬件描述语言编程基础第4章  VHDL编程基础  4.1  VHDL概述  4.2  VHDL结构    4.2.1  实体说明    4.2.2  构造体    4.2.3  程序包、库及配置  4.3  VHDL顺序语句与并发语句    4.3.1  顺序语句    4.3.2  并行语句  4.4  VHDL要素    4.4.1  VHDL文字规则    4.4.2  VHDL数据对象    4.4.3  VHDL数据类型    4.4.4  VHDL运算符  4.5  数字电路的VHDL实现    4.5.1  组合逻辑电路设计    4.5.2  时序逻辑电路的VHDL实现    4.5.3  状态机的VHDL实现  知识梳理与总结  习题4第5章  Veriloo编程基础  5.1  Verilog简介    5.1.1  模块    5.1.2  时延    5.1.3  数据流描述方式    5.1.4  行为描述方式    5.1.5  结构化描述形式    5.1.6  混合设计描述方式  5.2  Verilog要素    5.2.1  标识符    5.2.2  注释    5.2.3  格式    5.2.4  编译指令    5.2.5  值集合    5.2.6  数据类型  5.3  表达式    5.3.1  算术操作符    5.3.2  关系操作符    5.3.3  相等关系操作符    5.3.4  逻辑操作符    5.3.5  按位操作符    5.3.6  归约操作符.    5.3.7  移位操作符    5.3.8  条件操作符    5.3.9  连接和复制操作  5.4  Veritog HDL的基本语法    5.4.1  赋值语句    5.4.2  块语句    5.4.3  条件语句    5.4.4  循环语句    5.4.5  结构说明语句  5.5  数字电路的Verilog实现    5.5.1  简单的组合逻辑设计    5.5.2  简单时序逻辑电路的设计    5.5.3  利用条件语句实现较复杂的时序逻辑电路    5.5.4  用always块实现较复杂的组合逻辑电路    5.5.5  在Verilog HDL中使用函数    5.5.6  利用有限状态机进行复杂时序逻辑的设计    5.5.7  模块之间的调用实现自顶向下的设计  知识梳理与总结  习题5下篇  数字系统开发实例第6章  典型数字系统设计  6.1  实用数字钟电路设计    6.1.1  分频器    6.1.2  时分秒计时器    6.1.3  数码管驱动模块    6.1.4  报时电路    6.1.5  顶层设计    6.1.6  数字钟的硬件验证  6.2  串口通信    6.2.1  异步串口数据传送格式    6.2.2  波特率发生器    6.2.3  数据发送模块程序    6.2.4  数据接收模块程序    6.2.5  顶层设计    6.2.6  串口通信的硬件验证  6.3  FIR滤波器的设计    6.3.1  FIR滤波器原理    6.3.2  FIR滤波器直接运算法    6.3.3  FIR滤波器IP核法  6.4  数字频率计的设计    6.4.1  测频原理    6.4.2  频率计的组成结构分析    6.4.3  频率计的VHDL程序    6.4.4  频率计的仿真结果    6.4.5  频率计的硬件验证  习题6附录  Nexys3开发板参考文献
作者介绍
文摘
序言
				 
				
				
					《嵌入式系统设计:从原理到实践》  内容简介:  《嵌入式系统设计:从原理到实践》是一本深入探讨嵌入式系统构建、开发与应用的全方位教程。本书旨在为读者提供扎实的理论基础和丰富的实践经验,帮助他们掌握从微控制器选型、硬件接口设计,到软件开发、系统集成和调试的全过程。本书面向的对象广泛,包括电子工程、计算机科学、自动化等专业的在校学生,以及致力于投身嵌入式系统研发的工程师和技术爱好者。  第一部分:嵌入式系统基础理论  本部分将为读者构建坚实的理论基石,理解嵌入式系统的核心概念和关键技术。     第一章:嵌入式系统概述        1.1 什么是嵌入式系统?            定义与特征:区别于通用计算机,强调专用性、实时性、可靠性、低功耗等。            典型应用领域:工业控制、汽车电子、消费电子、医疗设备、通信系统、物联网等,通过生动的案例分析,展示嵌入式系统在现代生活中的广泛渗透。            嵌入式系统的发展历程与趋势:从早期简单的微控制器到如今复杂的SoC(System on Chip),分析技术演进的关键节点和未来发展方向,如AIoT、边缘计算等。        1.2 嵌入式系统的组成            硬件核心:微处理器/微控制器(CPU)、存储器(RAM, ROM, Flash)、外设接口(GPIO, UART, SPI, I2C, ADC, DAC等)、电源管理单元。            软件核心:固件(Firmware)、嵌入式操作系统(RTOS)、应用软件。            人机交互接口(HMI):显示屏、按键、触摸屏、指示灯等。            通信接口:网络接口(Ethernet, Wi-Fi, Bluetooth)、串行通信接口等。        1.3 嵌入式系统开发流程            需求分析与系统规格定义。            硬件选型与设计。            嵌入式软件开发(驱动程序、中间件、应用层)。            系统集成与测试。            部署与维护。            介绍开发中的关键挑战,如资源受限、实时性要求、功耗优化等。     第二章:微控制器(MCU)原理与选型        2.1 微控制器体系结构            CPU核心:CISC vs RISC,介绍ARM Cortex-M系列等主流架构的特点和优势。            存储器组织:程序存储器(Flash)、数据存储器(SRAM)、寄存器。            总线结构:地址总线、数据总线、控制总线,以及它们如何协同工作。            中断系统:中断向量表、中断优先级、中断响应流程,理解实时性保障机制。            定时器/计数器:不同类型定时器的原理(如通用定时器、低功耗定时器),及其在PWM生成、时间测量等方面的应用。            通用输入/输出(GPIO)端口:配置、读写操作,控制外部设备。        2.2 常用外设接口详解            串行通信接口:                UART/USART:异步串行通信原理,波特率、数据位、停止位、校验位设置,常用于设备间的简单通信。                SPI(Serial Peripheral Interface):同步串行通信,主从模式,时钟同步,全双工通信,适合高速数据传输,如连接传感器、SD卡等。                I2C(Inter-Integrated Circuit):多主多从通信,两条总线(SDA, SCL),地址机制,适合连接少量设备,如EEPROM、ADC/DAC等。            ADC(Analog-to-Digital Converter):模拟信号数字化原理,采样率、分辨率、参考电压,将传感器模拟信号转换为数字量。            DAC(Digital-to-Analog Converter):数字信号模拟化原理,将数字量转换为模拟电压或电流,用于音频输出、控制模拟电路等。            DMA(Direct Memory Access):直接内存访问,CPU绕过,实现高效数据传输,减轻CPU负担,提高系统性能。            PWM(Pulse Width Modulation):脉冲宽度调制,通过改变脉冲宽度来控制输出电压或电流的平均值,用于电机调速、LED亮度调节等。        2.3 微控制器选型指南            性能需求:CPU主频、运算能力。            存储器容量:Flash ROM(程序存储)、RAM(运行时数据)。            外设接口需求:根据应用场景选择所需的接口类型和数量。            功耗要求:低功耗模式、待机电流。            封装与尺寸:PCB板空间限制。            成本与可获得性。            开发生态与支持:工具链、社区资源、文档资料。            通过对比不同厂商(如STMicroelectronics, NXP, Microchip, Espressif等)和系列(如STM32, LPC, PIC, ESP32等)的典型MCU,引导读者进行实际选型。     第三章:嵌入式实时操作系统(RTOS)        3.1 RTOS的核心概念            任务(Task)/线程(Thread):独立执行的程序段,上下文切换。            任务状态:就绪、运行、阻塞、挂起。            任务调度:抢占式调度、协作式调度,优先级调度算法(如固定优先级、动态优先级)。            任务间通信与同步:                消息队列(Message Queue):多任务间传递数据,支持阻塞接收。                信号量(Semaphore):用于资源互斥访问或事件通知,二元信号量(互斥锁)、计数信号量。                互斥锁(Mutex):解决共享资源竞争,防止死锁。                事件标志组(Event Flags):任务之间通过等待和设置事件来实现同步。            中断服务程序(ISR)与任务交互:ISR的特点(短小精悍)、如何通过信号量或消息队列与任务交互。        3.2 常见的RTOS介绍            FreeRTOS:广泛应用,开源,功能强大,跨平台性好,详细介绍其内核特性,如任务管理、内存管理、同步机制等。            RT-Thread:国产RTOS,活跃的社区,完善的组件生态,分层架构,提供丰富的中间件。            Zephyr OS:Linux基金会项目,面向资源受限设备,安全性高,支持多种硬件平台。            UCOS系列:成熟的商业RTOS,广泛应用于工业和医疗领域。            通过对比不同RTOS的特点、优势和适用场景,帮助读者选择合适的RTOS。        3.3 RTOS在嵌入式系统中的作用            提高并发处理能力,实现多任务并行运行。            简化复杂系统的软件设计,模块化开发。            有效管理系统资源,避免资源冲突。            确保系统的实时性和可靠性。            提供标准化的API,方便移植和维护。  第二部分:嵌入式系统硬件接口与驱动开发  本部分将聚焦于如何通过代码与硬件进行交互,编写高效、可靠的设备驱动程序。     第四章:嵌入式Linux系统入门        4.1 Linux在嵌入式领域的优势            开源免费,灵活度高。            强大的功能和丰富的应用程序支持。            成熟的网络协议栈和文件系统。            广泛的硬件支持和活跃的社区。            适合资源相对丰富的嵌入式设备,如嵌入式网关、智能终端等。        4.2 嵌入式Linux开发环境搭建            交叉编译工具链的安装与配置:介绍为何需要交叉编译,以及如何获取和使用。            目标板与主机(Host)的连接:串口、网络连接。            构建嵌入式Linux镜像:Bootloader(如U-Boot)、Kernel、Root Filesystem。            SD卡/eMMC烧写系统镜像。        4.3 嵌入式Linux常用命令与工具            文件操作:`ls`, `cd`, `cp`, `mv`, `rm`, `mkdir`。            进程管理:`ps`, `kill`, `top`。            网络通信:`ping`, `ifconfig`, `ssh`, `scp`。            文本编辑:`vi`/`vim`。            调试工具:`gdb`(远程调试)。        4.4 Linux设备模型与驱动框架            Linux设备驱动模型:字符设备、块设备、网络设备。            设备树(Device Tree):描述硬件信息的标准化方式,解耦硬件配置与内核代码。            Linux内核模块(LKM):动态加载和卸载驱动代码。            介绍`platform_driver`、`i2c_driver`、`spi_driver`等常用驱动模型。     第五章:嵌入式Linux设备驱动开发        5.1 GPIO驱动开发            Linux GPIO子系统接口:`gpio_request`, `gpio_direction_output`, `gpio_set_value`, `gpio_get_value`。            通过设备树配置GPIO。            编写一个简单的GPIO驱动,控制LED闪烁。        5.2 串口(UART)驱动开发            Linux串口子系统:`/dev/ttyS`,`termios`结构体。            使用`open`, `read`, `write`, `ioctl`等系统调用进行串口通信。            编写一个串口通信测试程序。        5.3 I2C/SPI驱动开发            Linux I2C/SPI子系统:`i2c-dev`接口,`spi-dev`接口。            使用`ioctl`与I2C/SPI设备进行通信。            编写驱动程序与传感器(如温度传感器、加速度计)进行数据交互。        5.4 ADC/PWM驱动开发            Linux IIO(Industrial I/O)子系统:统一的模拟输入/输出设备接口。            通过`sysfs`接口访问ADC/PWM设备。            编写驱动程序读取ADC采样值或控制PWM输出。        5.5 块设备驱动开发(概念介绍)            Linux块设备层:`block_device_operations`。            介绍SD卡、eMMC等存储设备的驱动工作原理。        5.6 驱动调试技巧            `printk`日志输出。            `debugfs`和`sysfs`文件系统。            GDB远程调试。            分析内核日志(`dmesg`)。     第六章:嵌入式RTOS设备驱动开发        6.1 RTOS下的裸机编程与HAL库            直接操作寄存器进行硬件控制:理解硬件手册,直接读写MCU寄存器。            使用HAL(Hardware Abstraction Layer)库/SDK:厂商提供的API,封装底层硬件细节,提高开发效率。            对比裸机编程与HAL库开发的优缺点。        6.2 基于RTOS的设备驱动开发模式            中断驱动:编写中断服务函数(ISR),任务中使用信号量或消息队列等待中断。            轮询驱动:任务周期性地检查设备状态。            DMA驱动:配置DMA控制器,实现高效数据传输。        6.3 典型外设驱动开发实践(以FreeRTOS为例)            GPIO驱动:                使用HAL库初始化GPIO。                编写任务函数控制LED输出、读取按键输入。                结合中断实现按键事件处理。            UART驱动:                使用HAL库配置UART。                实现发送和接收函数,支持阻塞接收。                利用RTOS的队列或消息机制实现数据缓冲和处理。            I2C/SPI驱动:                使用HAL库进行I2C/SPI总线配置。                编写读写函数的封装,与外接传感器(如BMP280气压传感器、MPU6050陀螺仪)通信。                考虑错误处理和超时机制。            定时器/PWM驱动:                使用HAL库配置定时器,实现周期性任务触发。                配置PWM输出,控制舵机角度或LED亮度。            ADC驱动:                使用HAL库配置ADC通道、采样模式。                编写任务读取ADC值,实现数据采集。        6.4 驱动程序的设计与优化            模块化设计:将驱动逻辑分解为独立函数。            错误处理:完善的错误检测和报告机制。            功耗优化:合理使用低功耗模式,减少不必要的硬件唤醒。            性能优化:利用DMA,优化中断处理流程。            驱动与应用层的接口设计:定义清晰的API。  第三部分:嵌入式系统应用开发与集成  本部分将引导读者完成从硬件控制到系统功能的实现,构建完整的嵌入式应用。     第七章:嵌入式通信协议        7.1 TCP/IP协议栈            TCP/IP模型:分层结构,各层功能(应用层、传输层、网络层、数据链路层、物理层)。            TCP与UDP:区别与联系,可靠性、连接性、传输速度的权衡。            IP地址与端口:网络通信的寻址方式。            Socket编程:创建套接字,进行客户端/服务器通信,介绍`socket()`, `bind()`, `listen()`, `accept()`, `connect()`, `send()`, `recv()`等常用API。        7.2 常用通信协议            HTTP/HTTPS:Web服务通信,客户端/服务器模型,请求/响应机制。            MQTT(Message Queuing Telemetry Transport):轻量级的发布/订阅消息协议,适用于物联网场景,低带宽、低功耗。            CoAP(Constrained Application Protocol):针对受限网络的RESTful协议,类似于HTTP,但更轻量。            DDS(Data Distribution Service):实时数据分发,广泛应用于工业自动化、航空航天等领域。        7.3 无线通信技术            Wi-Fi:原理,配置,连接方式(AP模式、Station模式、AP+Station模式)。            Bluetooth(经典蓝牙与BLE):区别,应用场景,配对连接。            Zigbee:低功耗、低速率的短距离无线网络技术。            LoRa/NB-IoT:长距离、低功耗的广域网技术。     第八章:嵌入式系统应用开发实践        8.1 传感器数据采集与处理            从各种传感器(温度、湿度、光照、压力、气体、姿态等)读取数据。            数据滤波与校准:去除噪声,提高数据精度。            数据格式化与打包:为后续传输或存储做准备。        8.2 人机交互(HMI)设计            基于LCD/OLED显示屏的UI设计:菜单、列表、图表等。            触摸屏交互:手势识别、事件响应。            按键与指示灯:基础的交互方式。            图形库的使用:如LVGL(Light and Versatile Graphics Library),提供丰富的UI组件和动画效果。        8.3 嵌入式Web服务器            使用LWIP(Lightweight IP)等轻量级TCP/IP协议栈。            在嵌入式设备上搭建HTTP服务器,通过浏览器访问设备状态或进行控制。            CGI(Common Gateway Interface)或Websocket实现动态内容。        8.4 云平台接入            选择合适的云平台:如阿里云IoT、AWS IoT、Azure IoT Hub。            使用MQTT等协议将设备数据上传至云平台。            实现设备与云平台的双向通信(远程控制、OTA升级)。        8.5 案例分析:智能家居网关开发            需求分析:连接多种智能设备,提供远程控制和数据监测。            硬件选型:高主频MCU或嵌入式Linux开发板。            软件架构:RTOS或Linux,MQTT客户端,设备驱动。            功能实现:设备配网、数据转发、云平台对接、APP控制接口。     第九章:嵌入式系统调试与优化        9.1 调试工具与技术            JTAG/SWD接口:硬件调试器,单步执行、设置断点、观察变量。            串口调试助手:查看日志输出,发送命令。            逻辑分析仪/示波器:分析硬件信号时序、协议。            代码调试技巧:断点、单步、观察、条件断点。        9.2 系统性能分析            CPU占用率分析:`top`命令,RTOS任务统计。            内存占用分析:内存泄漏检测,静态/动态内存分配。            功耗分析:测量电流,分析低功耗模式下的唤醒源。            实时性分析:测量中断响应时间,任务执行周期。        9.3 系统可靠性设计            Watchdog(看门狗):硬件/软件看门狗,防止系统死锁。            异常处理:捕获和处理程序异常,如非法指令、总线错误。            错误恢复机制:断电重启后的数据恢复,设备自动重连。            代码健壮性:充分考虑边界条件和异常输入。        9.4 OTA(Over-The-Air)升级            OTA升级的原理与流程:固件分片、传输、校验、写入、重启。            安全考虑:固件签名、加密。            实现方案:Bootloader支持,应用层协议。  《嵌入式系统设计:从原理到实践》通过详实的内容和丰富的实例,引领读者踏上嵌入式系统开发的探索之旅。本书不仅仅是技术知识的传授,更是对系统思维、问题解决能力和工程实践的培养。无论是初学者还是有经验的工程师,都能从中受益,掌握设计和实现下一代智能嵌入式系统的关键技能。