基于VHDL语言的数字电路设计

合集下载

VHDL硬件描述语言在数字电路设计中的应用

VHDL硬件描述语言在数字电路设计中的应用
和设 计流程 ,以全 加器 为 例说 明 用 V L语 言 设计 数 字逻 辑 电路 的方 法 ,并 给 出 了仿 真 结果 。结 果表 明, HD
VD H L对数字 电路 的硬件描述能力强 ,在设计 上非常 有效 ,是 数字 电路 教学 中全新 的理 论联 系实际 的方 法和
培养学生实 际动手能力 的有效 工具 。 关键词 :V D ;数字 电路 ;电子技术 H L 中图分类号 :P 9 T 31 文献标识码 : A di1 .9 9 ji n 17 — 35 2 1 .50 0 o:0 3 6/.s . 62 4 0 .0 10 .3 s
i lcr u tc n tme tt e n e so e d gt l n e r t d cr u t I h sb e e eo i g t n o a - t i i a a c e e d ft i i t g ae i i t a e n a d v l p n r d t c h h a i c . e c mp ih t e d s n o a d r i u tb o l h e i fh r wa e cr i y VHDL s g c .A r f n r d c in o e b s t c u e e t r s b i to u t ft a i sr t r ,f au e e i o h c u a d t e d sg r c s fVHDL i gv n n h e i n p o e so s i e .T ef l a d ri u e sa x mp e t l mi ae t ed sg h l d e s s d a n e a l o i u n t e i— u l h
随 着数 字 电子 技术 的发 展 , 字 电路 已 由早 期 数 的分 立元 件逐 渐 发 展成 集 成 电路 , 以及 具 有 特 定 功

vhdl实验报告

vhdl实验报告

vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。

本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。

一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。

通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。

二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。

然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。

在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。

在学习了VHDL的基础知识后,我们开始进行实验设计。

我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。

首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。

然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。

接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。

三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。

在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。

在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。

毕业设计vhdl

毕业设计vhdl

毕业设计vhdl毕业设计:VHDL的应用与挑战在计算机科学与技术领域中,VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述和设计数字电路。

作为一门重要的课程,毕业设计是学生们在大学期间的重要任务之一。

本文将探讨毕业设计中VHDL的应用与挑战。

VHDL是一种用于描述和设计数字电路的语言,它具有丰富的语法和强大的功能。

通过使用VHDL,设计师可以描述数字电路的结构和行为,从而实现复杂的功能。

VHDL具有模块化的特性,可以将电路划分为不同的模块,每个模块负责特定的功能。

这种模块化的设计方法使得电路的设计更加灵活和可维护。

在毕业设计中,VHDL的应用广泛而深入。

首先,VHDL可以用于设计和实现各种数字电路,如加法器、乘法器、寄存器等。

这些电路是计算机系统的基础组成部分,通过使用VHDL进行设计和实现,可以提高电路的性能和可靠性。

其次,VHDL还可以用于设计和实现数字信号处理(DSP)算法。

DSP算法在音频、视频等领域中具有广泛的应用,通过使用VHDL进行设计和实现,可以实现高效的算法并提高系统的性能。

然而,毕业设计中使用VHDL也面临一些挑战。

首先,VHDL的学习曲线较陡峭。

对于初学者来说,掌握VHDL的语法和规范需要一定的时间和精力。

其次,VHDL的调试和验证也是一个复杂的过程。

由于VHDL是一种硬件描述语言,无法直接运行和调试,需要使用仿真工具进行验证。

这个过程需要设计师具备一定的专业知识和技巧。

最后,VHDL的设计和实现也需要考虑到电路的性能和资源占用。

设计一个高效的电路需要综合考虑电路的结构和算法,以及资源的利用和分配。

为了克服这些挑战,毕业设计中可以采取一些策略。

首先,学生可以通过参加相关的课程和培训来提高对VHDL的理解和掌握。

这些课程和培训可以帮助学生了解VHDL的语法和规范,以及设计和实现电路的方法和技巧。

其次,学生可以利用仿真工具进行调试和验证。

用VHDL设计数字电路

用VHDL设计数字电路
言 , 目 前 正 在 被 越 来 越 多 的 电 子 技 术 设 计 人 员所 应 用 本 文 介 绍 了 VHD 的 特 点 及 用 L
以 设 计 数 字 电路 的 设 计流 程和 描 述 方 法 。 本 文 结 合 实 例 从 总体 上 介 绍 了利 用 V HDL设 计 硬 件 电路 的 一 般 流 程 。 关 键词 : HD V L;硬 件描述 语言 概 述

( )V H D L 语 言 的 设 计描 述 与 器 四 件 无 关 当 一 个设 计描 述 用 V H D L 模 拟 器和 VHDL综 合器进 行编译 , 模拟 和综 合后 , 可 以 采 用 不 同 的 映 射 工具 映 射 到 不 同 的 工 艺 上 去 。映 射 成 不 同 的 工 艺 ,只 需 要 改 变 相 应 的映射 工具 , 无需 改变 VH DL设 计描 而 述 。 因此 设计 人 员用 VH DL 进行硬 件 电路 设 计 时 ,不 需 要 首 先 考 虑 编 程 器 件 的具 体 工 艺 和 结 构 ,而 可 以 将 主 要 精 力 集 中 在设 计 的 优 化上 。 当 硬 件 电路 设 计 完 成 以 后 , V H 语 言允 许采 用多种 不同 的器件 结构 DL 来实现 。 ( )V H D L 语 言 程 序 易 于共 享 和 五 复 用 VHDL采 用基于库( i r r ) L b a y 的设 计方 法 。 在设 计 过 程 中 ,可 以 建 立 各 种 可 再 次 利 用 的模 块 ,一 个大 规 模 的 硬 件 电路 设 计 往往 不 可 能 从 门 级 电路 开 始 一 步 步地 进行 设计 ,而 是一 些模 块 的 累加 。这 些 模 块 可 以是 一 些 标 准 库 ,也 可 以 是 预 先 设 计 或 以 前 设计 的 模块 , 将这 些 模块 存于 库 中 , 可 就 以 在 以 后 的 设 计 中 反复 使 用 。 这 种设 计方 法 可 以 大 大 的 减 少设 计 工作 量 ,降 低 设计 周期 。 三 .VHDL的设 计流程 个 完 整 的 设 计 流程 是 设 计 思 想 逐 步 细 化 .逐 步 排 除 错 误 的 过程 。 一 般的 电子 系 统 设 计 可分 为前 端 和 后 端 两 部 分 ,前 端 是 系 统 的 逻辑 设 计 和 仿 真 ,得 到 的是 门级 电 路 的原 理 图或 网表 ,后 端 设 计 如 印 刷 电 路板 的 布局 布 线 ,集 成 电路 的版 图设计 等 , 得 出 的是 最 终 的物 理设 计 。设 计 工 作 首 先 是 用 VHDL描述设计概 念 , 利用 VHDL仿 真 与 调试 工 具分 析 设 计概 念 的 “ 为 ” 行 ,检 查 是 否满 足 初 始要 求 。这 一 部 分 的 情 形 与 普通 编程语言 如 PASCAL.C语言的编译 . 运 行 .调 试 是 类似 的 。这 时 的 仿 真 速 度要 大 大 快 于 门级 仿 真 的 速 度 。 高 层 设 计 的验 证 .纠 错 ,有 利 于 早 期 发 现 设 计 方 案 中 的 错误 。设 计概 念验证 后 , VH D L设 计输 把 入 VHDL 综合工具 , VHDL综合 工具 利 用 集 成 电路 厂 商 或 电子 自动 化厂 商提 供 的 被

vhdl设计实验报告

vhdl设计实验报告

vhdl设计实验报告VHDL设计实验报告引言VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和验证。

本实验旨在通过设计一个简单的电路来熟悉VHDL语言的基本语法和设计流程。

一、实验背景数字电路是现代电子系统的基础,而VHDL则是描述和设计数字电路的重要工具。

VHDL可以帮助工程师们以一种形式化的语言来描述电路的功能和结构,从而实现电路的模拟和验证。

二、实验目的本实验的目的是通过使用VHDL语言设计一个简单的电路,加深对VHDL语言的理解,并掌握基本的电路设计流程。

三、实验步骤1. 确定电路功能在设计电路之前,首先需要明确电路的功能。

本实验中,我们选择设计一个4位加法器电路。

2. 设计电路结构根据电路功能的要求,设计电路的结构。

在本实验中,我们需要设计一个4位加法器,因此需要使用4个输入端口和一个输出端口。

3. 编写VHDL代码使用VHDL语言编写电路的描述代码。

在代码中,需要定义输入和输出端口的类型和位宽,并实现电路的功能。

4. 进行仿真使用仿真工具对设计的电路进行仿真,以验证电路的功能是否符合预期。

通过输入不同的测试数据,观察输出是否正确。

5. 下载到FPGA开发板将设计好的电路代码下载到FPGA开发板上进行验证。

通过连接输入信号和观察输出信号,验证电路在实际硬件上的运行情况。

四、实验结果与分析经过仿真和实际验证,我们设计的4位加法器电路在功能上符合预期。

输入不同的数据进行加法运算时,输出结果都正确。

五、实验总结通过本次实验,我们深入了解了VHDL语言的基本语法和设计流程。

通过设计一个简单的电路,我们掌握了VHDL的应用方法,并通过仿真和实际验证,加深了对电路设计的理解。

六、实验心得本实验让我对VHDL语言有了更深入的认识。

通过实际操作,我更加熟悉了VHDL的编写和仿真流程。

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计数字电路是由逻辑门、寄存器以及其他数字组件组成的电子系统,用于处理和传输数字信号。

VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。

通过使用VHDL语言,我们可以实现数字电路的设计,从而满足各种需求。

VHDL语言提供了一种结构化的设计方法,允许设计者描述硬件电路的结构、功能以及时序行为。

以下是一些常见的数字电路设计任务,以及如何使用VHDL语言来实现它们。

1. 门电路设计门电路是最简单的数字电路之一,由逻辑门组成。

使用VHDL语言,我们可以通过描述逻辑门的输入和输出来实现门电路的设计。

例如,我们可以使用VHDL语言描述一个与门:```vhdlentity AND_gate isport (A, B : in bit;Y : out bit);end entity AND_gate;architecture dataflow of AND_gate isbeginY <= A and B;end architecture dataflow;```在这个例子中,我们定义了一个输入端口A和B,以及一个输出端口Y。

在architecture部分,我们使用VHDL语言描述了Y的逻辑值为A和B的逻辑与。

2. 时序逻辑电路设计时序逻辑电路是根据时钟信号进行操作和状态转换的电路。

使用VHDL语言,我们可以描述时序逻辑电路的行为和状态变化。

例如,我们可以使用VHDL语言描述一个触发器:```vhdlentity D_flip_flop isport (D, CLK : in bit;Q : out bit);end entity D_flip_flop;architecture behavior of D_flip_flop issignal Q_temp : bit;beginprocess(CLK)beginif CLK'event and CLK = '1' thenQ_temp <= D;end if;end process;Q <= Q_temp;end architecture behavior;```在这个例子中,我们定义了一个输入端口D和CLK,以及一个输出端口Q。

基于VHDL的数字电路设计

基于VHDL的数字电路设计

基于VHDL的数字电路设计数字电路是电子信息领域中最重要的一部分,控制着现代社会各种各样的设备的运行。

为了满足各种不同的应用需求,数字电路被设计成了多种多样的形态。

其中,基于VHDL的数字电路设计方式得到了广泛的应用。

VHDL是一种硬件描述语言,是用来描述数字电路的语言。

本文将着重探讨基于VHDL的数字电路设计的流程和步骤,以及在实际设计中的应用。

一、VHDL简介VHDL全称是VHSIC硬件描述语言(VHSIC Hardware Description Language),VHSIC即:超高速集成电路(Very-high-speed integrated circuit)。

VHDL是一种硬件描述语言,它是用来描述数字电路的语言,可以描述数字电路功能、电路结构和电路时序特性等。

在数字电路设计中,VHDL是最重要的一种设计语言。

VHDL是一种结构化的硬件描述语言,包括有三个层次:一是建模层次,主要是用户对数字电路的需求,这一层次不直接与具体的电路有关;二是结构化层次,是用户根据需求所建立的结构化的电路模型;三是行为层次,是用户描述数字电路的最终形态。

二、数字电路设计的流程数字电路设计的流程如下:1. 分析功能需求,确定电路功能和处理流程,针对不同的应用要求,从而确定数字电路的类型和规格。

2. 设计实现电路,采用FPGA(Field Programmable Gate Array)或ASIC (Application Specific Integrated Circuit)等芯片,使用VHDL编写代码,使用VHDL进行模拟验证,并对设计进行等效性检查。

3. 对电路进行综合,将VHDL代码转化为对应的生成目标电路的结构级综合器,主要用于对电路进行优化和管脚分配等方面的处理。

4. 进行电路设计验证,生成电路功能模拟信号,通过波形查看器、时钟分析器等工具进行验证测试。

5. 编写VHDL管理器,通过代码编写实现电路的管理和控制,包括对电路的自测试、故障诊断和运行状态监测等。

浅谈VHDL语言在数字电路实验中的应用

浅谈VHDL语言在数字电路实验中的应用

闹 校 然 模 器 件 的应 用 . 设 计 过 程 中往 往 把 有 趣 的 电路 设 计 变 成 了枯 燥 无 味 以利 用 业 余 时 间 设 计 报 时 模 块 、 时模 块 、 正 模 块 等 , 后 重 新 连 接 在 采 的机 械 推 导 和 化 简 。 这 样 不 仅 在 推 导 上 花 费 了大 量 的 时 间 , 于 较 复 到 顶 层 数 字 钟 模 块 中 。 用 传 统 方 法 数 字 钟 的 设 计 要 用 两 周课 程设 计 对 而 H L语 言 , 用 模 块 化 、 采 自顶 向 下 的 设计 方 杂 系 统 的 设 计 显 得 无 能 为 力 。 生 的认 识 也 就 停 留在 局 部 小 器 件 的 水 的 时 间 才 能 完 成 。 应 用 V D 学 只需用 6个学时 , 过实验和课程设 计使学生对数 字电路能上升 通 平 上 , 能 上 升 到 系 统 概 念 , 生 设计 能 力 达 不 到培 养 目标 的要 求 。 不 学 随 法 ,
着 P D器 件 及 E A技 术 的广 泛 应 用 ,现 代 数 字 电 路 实 验教 学 中加 入 到 一 个 系 统 的 概 念 。 L D 四 、 验 中应 注 意 的 问题 实 了 C L /P A芯 片 。这 类 芯 片 电路 容 积 高 、 能 佳 、 有 完 备 的开 发 PDF G 性 具 工 具 和 可 编程 功 能 , 且 价 格 低 廉 . 用 这 种 芯 片 就 要 求 我 们 必 须 掌 在 电子 工 程 领 域 , HD 而 使 V L语 言 已逐 渐 成 为 通 用 的硬 件 描 述 语 言 ,得 到 DA公 司 的 支 持 。在 学 习 V L语 言 时 , 语 法 的角 度 , 以 HD 从 可 握 V L语 言 。利 用 V L硬 件描 述 语 言描 述 电路 的功 能 , 用模 块 了 众 多 E HD HD 采
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA(Electronic Design Automation)即电子设计自 动化。它是从计算机辅助设计cAD、计算机辅助制造 cAM、计算机辅助测试cAT和计算机辅助工程cAE 等技术发展而来的。它以计算机为工具,设计者只需 对系统功能进行描述,就可在EDA工具的帮助下完成 系统设计。EDA技术为电子产品的设计和开发缩短了
中 万闭方儇数鬓俄据表2006年第3期
95
(4)对于用VHDL完成的一个确定的设计,可以 利用EDA工具进行逻辑综合和优化,并自动地将VHDL 描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计 者可以不懂硬件结构,也不必管最终设计实现的目标 器件是什么,而进行独立的设计。
3数字钟的设计实现
详细介绍了用VHDL语言开发的数字电路’『太大简化了对盖拉电路的设许藏且减低了成本艿 ≯
i o叠
AbStract:By the developmeIlt of dect的llic de鲑g趣a11董阐睁耄ioll(善奢攀),姆越j;ci黪蛹捺囊a黪啦i嘶_0棠卿爹繁◇≤巍鞫耩。
in practice.The paper百Ves a detail introduacion七o deSi醴矗di西tal d麓磷tbased o爨啦e V摹蓬薹臻蜘彝蠊静;鞠憾誊嚣i确套錾謦秘
图2产生的1Hz脉冲
本设计采用自顶向下的方法。首先从系统设计人 手,在顶层进行功能方框图的划分;然后对各模块进 行设计并仿真,再将其进一步综合。基本流程如图1 所示。设计的数字时钟基本功能划分为:计数模块 (包括秒、分、时、日、月、年)、控制显示模块。
系统分析和模块划分
各模块的VHDL的程序

各模块模拟仿真
VHDL的优点: (1)具有更强的行为描述能力,是系统设计领域 最佳的硬件描述语言。 (2)具有丰富的仿真语句和库函数,使得在任何 大系统的设计早期就能查验设计系统的功能可行性, 随时可对设计进行仿真模拟。 (3)VHDL语句的行为描述能力和程序结构决定 了它具有支持大规模设计的分解和已有设计的再利用 功能。该功能能满足市场大规模系统高效、高速的需 要,可替代多人甚至多个代发组共同工作。
时间,降低了成本,提高了系统的可靠性。 电子设计自动化(EDA)的关键技术之一是要求
用形式化方法描述数字系统的硬件电路。VHDL(Very High Speed Inte铲ated Cin玉it Hardware Description Lan— gLlage)超高速集成电路硬件描述语言在电子设计自动 化中扮演着重要的角色,它是EDA技术研究的重点之 一。VHDL语言程序可由实体(Entitv)说明、结构体 (Architecture)、程序包(Package)、库(Library)及配 置(co瓶gIlration)5个部分组成。其中库、实体说明、 结构体是vHDL语言程序的基本组成部分。
基于VH DL语言的数字电路设计
The Design of Digital System Based on the VHDL Language
大连海事大学自动化研究所(辽宁大连116026)张文英邹晴柴燕
摘要:随着电子设计自动化(EDA)技术的进步,数字电路在安静生蒲鐾中舀经当据≯蘩要黪缓羹≥。零囊j
中国仪器仪表 CHINA INSTRUMENTATION 2006(3) 1次
参考文献(4条) 1.Kevin Skahill 可编程逻辑系统的VHDL技术 1998 2.杨晖;张凤言 大规模可编程器件与数字系统逻辑设计 1998 3.候伯亨;顾新 VHDL硬件描述语言与数字逻辑电路设计 1997 4.李景华;杜玉远 可编程逻辑器件与EDA技术 2000
引证文献(1条)
1.董佳辉 将VHDL语言引入数字电路教学的探讨[期刊论文]-科技信息 2009(15)
本文链接:/Periodical_zgyqyb200603023.aspx
学出版社,1998.
囊警≤i夔警酶簿ii誉蔫纂,『|谚篝磷蠢誊善主荽研究声
向为智穗撞翱誊_ 董
万方数据
2006年第3期中阅便霹俄表
基于VHDL语言的数字电路设计
作者: 作者单位: 刊名:
英文刊名: 年,卷(期): 被引用次数:
张文英, 邹晴, 柴燕 大连海事大学自动化研究所,辽宁,大连,116026
在ispDesignExpert开发系统中编译各模块的同时, 生成了符号文件,把各符号文件按照逻辑功能连接起 来,加上输入输出端口然后再进行编译,结果正确后 下载到芯片即可。仿真结果如图2、图3所示。
4结束语
本文通过数字钟设计实例,说明设计数字电路的 基本方法和过程。用VHDL语言实现数字电路的设计 过程,是一个以软件设计为主,器件配置相结合的过 程。这种软件设计与硬件设计的结合,以一片器件代 替由多片小规模集成数字电路组成的电路,其优势已 经越来越明显。由此可见,在进行系统设计时,如果 系统比较复杂,所需器件数目多,并要求体积小、速 度快、功耗低时,首先应该考虑使用VHDL进行芯片 设计,然后再进行整体设计。



各模块的测试标准
各模块综合成门极电路
1极电路仿真正确?
电路实现块是TIMEKEEPER, 它包括5个子模块,分别是:u1:second_wave,u2:h- m—s—time,u3:date,u4:month—yeaur,u5:led—disp。 模 块second_wave产生lHz脉冲;模块h—mLsjime是时 分秒模块,完成时分秒的预置与计时,当计时满24h 时,引脚产生进位;模块date是日期模块,完成日期 的预置与显示;模块month—year是年月模块,完成年 月的预置与显示;模块led_disp是控制显示模块,完 成显示的切换。预置年份时,其他LED显示为FF;预 置月份时,其他LED显示为FF,依次类推。
1引言
随着科学技术的发展,现代电子设计技术已进入 一个全新的阶段,传统的电子设计方法、工具和器件 在更大的程度上被EDA所取代。在EDA技术中,最 为瞩目的是以现代电子技术为特征的逻辑设计仿真测 试技术。该技术的出现,使电子系统设计发生了质的 变化。设计速度快、体积小、重量轻、功耗小的集成 电路已成为趋势。本文详细介绍了利用VHDL语言设 计数字系统的方法,并且给出了一个数字钟的设计实 例,在ispDesignExpen开发系统中进行编译、仿真、 下载。 2 EDA及VHDL
easier to design the indus拓y control circuit and reduce th霉cost.
“|

一 o ≯、
曩≯
关键词:战拍技术愀涛寿数字缈
Keywo州s:E£拍招叻疗oZo!缈Ⅵ兹X.肠倦豳目匿跨翻留腧,谢9醵i
曩u:
一i j曩。
一一一
一:…!
。 一_≯曩 。o曩、≥。¨¨¨|-j蚤l|。
参考文献 1李景华,杜玉远.可编程逻辑器件与EDA技术.东北
大学出版社,2000. 2候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路
设计.西安电子科技大学出版社,1997. 3杨晖,张凤言.大规模可编程器件与数字系统逻辑设
计.北京航空航天大学出版社,1998. 4 Kevin Skahill.可编程逻辑系统的vHDL技术.东南大
相关文档
最新文档