# Course_ICDesign **Repository Path**: chenhuai21/course_-icdesign ## Basic Information - **Project Name**: Course_ICDesign - **Description**: 研究生课程IC设计方法作业。 - **Primary Language**: Verilog - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-18 - **Last Updated**: 2022-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Course_ICDesign ### 介绍 本项目包含清华大学深圳国际研究生院研究生课程《IC设计与方法》的课程小作业和大作业设计。 个人完成的代码,不保证质量,欢迎讨论。所有项目均不含综合过程。 ### 小作业 包含如下几个设计: #### FSM ![](https://pic.imgdb.cn/item/623478185baa1a80ab3fe97e.jpg) #### TrafficLight 设计一个简单的交通灯控制器,要求如下: - 有三个输入:reset,start 和 clock; - 有三个输出:red,yellow,和 green,这三个输出 控制红、黄、绿三盏灯。 - 任何时候只能有一盏灯亮。 - Reset 信号强制红灯亮。Reset 信号复位有效结束后,start 信号才会有效。 - 当 start 信号启动后,红灯至少亮一秒钟,然后 黄灯亮一秒钟,紧接着绿灯亮至少三秒钟,然后红灯亮,并且电路回到 reset 状态。 用Verilog 完成设计。(参考时钟周期可以设为 1 秒钟) #### PulseGenerator ![](https://pic.imgdb.cn/item/623478aa5baa1a80ab411f2a.jpg) #### CodeRecog ![](https://pic.imgdb.cn/item/623478d95baa1a80ab4195ac.jpg) ### 课程设计 包含PIECoder和PIEDecoder两个项目。 #### 项目要求 PIE 全称 pulse interval encoding,译为:脉冲宽度编码。本实验中采用的 PIE 数据编码。格式如下:每个待编码数据为 8bit 二进制数,编码时由高位到低位依次编码。 ![](https://pic.imgdb.cn/item/623479925baa1a80ab4328ea.jpg) ![](https://pic.imgdb.cn/item/623479ab5baa1a80ab435e51.jpg) 如下图所示,帧头由一个 Tari 的低电平信号+一个 Tari 的 data-0 信号+一个 Tari 的data-1 信号组成,帧尾由一个 Tari 的低电平信号+一个 Tari 的 data-0 信号组成。 ![](https://pic.imgdb.cn/item/623479ab5baa1a80ab435e51.jpg) 一帧 PIE 数据由帧头(SOF),若干字节的数据,以及帧尾(EOF)构成,一般每帧数据的个数在 1-16 字节左右,两帧数据之间的时间间隔是任意的。例如: ``` [SOF], 03, AA, 20, 13, [EOF] ``` **PIE 编码器** 输入管脚: Clk:时钟周期 2us Rst:低电平有效,异步复位 Din:输入的 8bit 数据,每个数据持续一个时钟周期 Le:输入帧有效标志,持续一个时钟周期 N:4bit,持续一个时钟周期,与 Le 同时出现,表示该帧 PIE 数据包含的字节个数为N+1,并将从 N 有效算起、共连续 N+1 个时钟周期所对应的数据输入视为该帧数据包含的字节 输出管脚: Dout:1bit,串行输出的编码结果 关于编码器的说明: 两个 Le 有效之间的时间足够长,前一个 Le 有效时的全帧数据编码完成后才出现第二帧数据输入。 **PIE 解码器** 输入管脚: Clk:时钟周期 2us Rst:低电平有效,异步复位 Din:PIE 编码器的输出数据 输出管脚: Dout:并行输出的 8 位数据解码结果 D_en:输出数据有效标志,高电平有效,持续一个时钟周期 F_en:帧头检测有效标志,高电平有效,持续一个时钟周期 关于解码器的说明: a. 当解码器收到 PIE 编码后的数据帧时,例如:【SOF】, 03,AA,20,13,【EOF】…..【SOF】, 02,A1,10,【EOF】对数据帧进行解码,并从 Dout 端输出数据 03, AA, 20, 13, 02, A1, 10,同时从 D_en 端输出一个时钟周期的高电平信号,表示输出一个字节的数据。 b. 当解码器收到【SOF】时,从 F_en 端输出一个时钟周期的高电平信号,表示收到了帧头。