北邮ASIC实验报告 (3,1,8)卷积码编码器
【报告】卷积码实验报告

【报告】卷积码实验报告一、实验目的本次卷积码实验的主要目的是深入理解卷积码的编码与译码原理,掌握其在数字通信系统中的应用,并通过实际实验操作和结果分析,评估卷积码的纠错性能和对通信质量的改善效果。
二、实验原理(一)卷积码的基本概念卷积码是一种有记忆的非分组码,它将输入的信息序列经过特定的编码器生成输出的码序列。
卷积码的编码过程不仅取决于当前输入的信息位,还与之前的若干个信息位有关。
(二)编码原理卷积码的编码器通常由若干个移位寄存器和模 2 加法器组成。
输入的信息位在时钟的控制下依次进入移位寄存器,同时与寄存器中的内容进行模 2 加法运算,生成输出的编码位。
(三)译码原理卷积码的译码方法有多种,常见的有维特比译码算法。
维特比译码算法基于最大似然准则,通过在码的网格图上寻找最有可能的路径来实现译码。
三、实验环境与设备本次实验在计算机上进行,使用了以下软件和工具:1、 MATLAB 编程环境,用于实现卷积码的编码、传输和译码过程,并进行性能分析。
2、通信系统仿真工具,用于构建通信系统模型,模拟信号的传输和接收。
四、实验步骤(一)编码实现1、在 MATLAB 中定义卷积码的编码器结构,包括移位寄存器的数量和连接方式,以及模 2 加法器的位置。
2、编写编码函数,输入信息序列,按照编码器的工作原理生成编码后的序列。
(二)信道传输1、模拟加性高斯白噪声信道,设置不同的信噪比条件。
2、将编码后的序列通过信道传输,引入噪声干扰。
(三)译码实现1、使用维特比译码算法对接收序列进行译码。
2、编写译码函数,输入接收序列和信道参数,输出译码后的信息序列。
(四)性能评估1、计算误码率,即错误译码的比特数与总传输比特数的比值。
2、绘制误码率曲线,分析卷积码在不同信噪比条件下的纠错性能。
五、实验结果与分析(一)不同卷积码参数对性能的影响1、改变卷积码的约束长度,观察其对纠错性能的影响。
结果表明,约束长度越长,卷积码的纠错能力越强,但编码效率会有所降低。
北邮 电子科学与技术 ASIC专业实验 实验报告

指导老师:刘雯
电子工程学院
ASIC 专业实验
实验报告
班 级:2012211205 姓 名:翁雪妍 学 号:2012210961 指导老师:刘雯
ASIC 专业实验
指导老师:刘雯
一、课程任务
1.完整完成一个 CPU 芯片的功能设计并通过验证(包括前端逻辑设计和仿真),主要对应课 程的 LAB 1 – LAB 8 部分 2.熟悉综合的过程,并验证综合后的电路(逻辑综合) 3.对关键部件进行布局布线(版图设计)
end 3'b011://3
begin {sel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=9'b1_1_1_0_0_0_0_0_0;
end 3'b100://4
begin {sel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=9'b1_1_1_0_0_0_0_0_0;
end 3'b101://5
begin {sel,rd,ld_ir,inc_pc,ld_pc,data_e,ld_ac,wr}<=8'b0_0_0_1_0_0_0_0; halt<=opcode==`HLT;
end 3'b110://6
begin {sel,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=8'b0_0_0_0_0_0_0_0; rd<=alu_op;
总的来说,我们完成的是 Top-down 自顶向下的 CPU 设计,一个基本的 CPU 要包括三部 分功能:数据存储、数据运算和控制部分。与之相对应的硬件结构也分为三部分:存储器、 数据通路和控制器。
北邮ASIC实验报告(3,1,8)卷积码编码器

北京邮电大学ASIC原理课程实验实验报告设计要求:(3,1,8)卷积码编码器学院:电子工程学院专业:电子信息科学与技术班级:学号:姓名:2013年6月20日一、设计要求运用verilog语言编写一个(3,1,8)卷积码编码器,并对其进行仿真。
二、卷积码编码器原理卷积码拥有良好的纠错性能,是一种被广泛应用于移动通信的信道编码系统。
一个(n,k,m)卷积码编码器由k个输入,具有m阶存储的n个输出的线形时序电路实现。
通常, n和k是较小的整数,且k<n,但m比较大。
当k=1时,信息序列不再分成小块,以便可以连续处理。
卷积码(n,k,m)表示码率R=k/n,编码器级数m=s-1,其中s是码约束长度。
反向CDMA信道使用(3,1,8)卷积码,码率R=1/3,约束长度为9,由于k=1,n=3,m=8,则该卷积编码器包含单个输入端,一个8级移位寄存器,三个模 2加法器和一个3向编码器输出的连续转向器。
编码器每输入一位信息比特将产生三位编码输出。
这些编码符号中,第一个输出符号G0是生成序列g1⑴编码产生的符号,第二个输出符号G1是由生成序列g1⑵编码产生的符号,最后一个输出符号G2是由生成序列g1⑶编码产生的符号,如下图所示。
该电路由一个八位寄存器、三个码生成逻辑、一个时隙发生器和一个四选一复用器构成。
mux的输入为G0、G1和G2,码选择信号C[1:0]和clk1由时隙发生器产生,输出信号即为整个电路的输出Yout。
卷积编码器的初始状态用rst异步清零信号置为0,rst=0时,电路清零。
卷积编码器的初始状态全为0,初始状态之后输出的第一个编码符号由生成序列g1⑴编码产生。
这里,三个生成序列分别为g1⑴=(101101111),g1⑵=(110110011), g1⑶=(111001001)。
即三个生成多项式分别为:C0=1+X+X2+X3+X5+X6+X8 (557)C1=1+X+X4+X5+X7+X8 (663)C2=1+X3+X6+X7+X8 (711)三、实验设计与实现根据以上实验要求,我们首先设想了分为几个模块,然后将各个模块进行整合实现编码器的功能,根据我们的设想编写相应的verilog程序,进行调试、实现。
北邮通信考研2010年801通信原理真题及答案

北京邮电大学2010年硕士研究生入学考试试题考试科目:801通信原理一、选择填空题(每空1分,共20分)(a )1 (b )2 (c )3(d )4 (e )5 (f )6(g )1/4 (h )1/5 (i )3/4 (j )4/5 (k )5/6 (l )高(m )低(n )变长(o )等长(p )均匀量化器 (q )对数量化器 (r )最佳非线性量化器 (s )重复码 (t )汉明码 (u )偶校验码 (v )奇校验码 (w )1/(2)H f(x )1/(2)H f (y )1/(2)H f (z )最大似然 (A )Rake (B )最大后验概率 (C )90(D )180(E )270(F )Costas 环载波恢复 (G )2DPSK 调制 (H )()sin 2c m t f t (I )()sin 2c m t f t (J )2()c j f t m t e (K )()()m t t (L )()m t (M )11(N )200 (O )360 (P )快衰落 (Q )慢衰落 (R )32 (S )64(T )128 (U )均匀(V )正态(W )瑞利(X )莱斯(Y )1001、对带宽为H f 、均值为零点低通高斯白噪声进行采样,当采样间隔T (1) 时,所得的采样值统计独立。
2、若某个线性分组码的监督矩阵是(1,1,1,1)H ,该码是 (2) ,其编码效率为 (3) 。
3、一直某线性分组码的8个码为(000000)、(001110)、(010101)、(011011)、(100011)、(101101)、(110110)、(111000),该码的最小码距为 (4) 。
若该码用于检错,能检出 (5) 位错码。
4、在电话通信中,为了改善小信号时的量化信噪比,通常使用 (6) ,其中A 律13折线和μ律15折线近似的主要区别是μ律正向第一段的斜率要大于A 律,这说明采用 律量化时小信号的量化信噪比会更 (7) 。
卷积码实验报告

卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
编码器 实验报告

编码器实验报告编码器实验报告引言编码器是一种重要的数字电路设备,用于将输入的信息转换为特定的编码形式。
在现代科技发展中,编码器广泛应用于通信、计算机、电子设备等领域。
本实验旨在通过设计和实现一个简单的编码器电路,深入了解编码器的原理和应用。
实验目的1. 了解编码器的基本原理和分类;2. 学习编码器的设计方法和实现技巧;3. 掌握编码器的应用场景和使用方法。
实验原理编码器是一种多对一的数字电路设备,通过对输入信号进行编码,将多个输入状态映射为唯一的输出状态。
常见的编码器有优先编码器、旋转编码器、格雷码编码器等。
1. 优先编码器优先编码器是一种将多个输入状态按照优先级进行编码的设备。
当多个输入同时有效时,只有优先级最高的输入被编码输出。
优先编码器常用于优先级译码器和多路选择器中。
2. 旋转编码器旋转编码器是一种通过旋转操作来改变输出状态的设备。
它通常由一个旋转轮和两个感应器组成,感应器用于检测旋转轮的方向和速度。
旋转编码器常用于旋钮、鼠标滚轮等设备中。
3. 格雷码编码器格雷码编码器是一种将二进制输入信号转换为格雷码输出信号的设备。
格雷码是一种特殊的二进制编码形式,相邻的两个码字只有一位不同,避免了二进制编码中的多位错误。
格雷码编码器常用于数字显示器、光电编码器等设备中。
实验过程本实验以优先编码器为例,设计和实现一个4输入优先编码器电路。
1. 确定输入和输出端口根据实验要求,我们需要设计一个4输入优先编码器,因此需要确定4个输入端口和1个输出端口。
2. 绘制逻辑电路图根据优先编码器的原理,我们可以绘制出如下的逻辑电路图:(图略)3. 确定逻辑门类型根据逻辑电路图,我们可以确定每个逻辑门的类型。
在本实验中,我们选择使用与门和或门。
4. 搭建电路实验平台根据逻辑电路图,我们可以搭建实验平台,连接逻辑门和输入输出端口。
5. 进行实验测试将不同输入信号输入到优先编码器中,观察输出信号的变化。
测试不同输入组合下的编码输出结果。
卷积码实验报告

卷积码实验报告篇一:卷积码实验报告实验五信道编解码()本章目标掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的1. 使用MATLAB进行卷积码编/译码器的仿真。
2. 熟练掌握MATLAB软件、语句。
3. 了解卷积码编/译码器的原理、知识。
5.2实验要求1. 编写源程序、准备测试数据。
2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。
如果结果有误,应找出原因,并设法更正之。
5.3 实验原理(一)卷积码编码器 1. 连接表示卷积码由3个整数n,k,N描述。
k/n也表示编码效率(每编码比特所含的信N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度;表示在编码移位寄存器中k元组的级数。
卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且还是前面N?1个输入k元组的函数。
实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。
下面以图1中的卷积码编码器为例介绍卷积码编码器。
该图表示一个约束长度K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。
在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。
对每一个输入信号比特都重复上述采样过程。
图1卷积码编码器(编码效率1/2,K?3)用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。
应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。
仍以图1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有:g1(X)?1?X?X2g2(X)?1?X2多项式中的最低阶项对应于寄存器的输入级。
实验三 8 3优先编码器和3 8线译码器讲解学习

实验三 8-3优先编码器和3-8线译码器一、实验目的1、熟悉常用编码器,译码器的功能逻辑。
2、熟悉VHDL的代码编写方法。
3、掌握复杂译码器的设计方法。
二、实验原理2、逻辑表达式:Y2=X4&X5&X6&X7Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));Y0=~(~(X1)&x2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));2、3-8线码器总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。
三、实验连线1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到SOPC下载的一边2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。
3、请将JP103的短路帽全部插上。
四、实验步骤及波形按照步骤三正确连线,参考实验二步骤,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。
8-3优先编码器参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY encode ISPORT(XINA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);Y0,Y1,Y2: OUT STD_LOGIC;OUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END encode;ARCHITECTURE ADO OF encode ISSIGNAL LED: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL XIN: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINXIN<=XINA;LEDW<=PROCESS (XIN)BEGINCASE XIN ISWHEN xWHEN x => OUTA<=x;WHEN x => OUTA<=x_x0005_B;WHENx=>OUTA<=xF;WHEN xWHEN x => OUTA<=xD;WHEN x_x0010_ => OUTA<=x_x0007_D;WHEN x => OUTA<=x_x0007_;WHEN x80 => OUTA<=x F;WHEN OTHERS => OUTA<=x F;END CASE;END PROCESS;PROCESS (XIN)BEGINCASE XIN ISWHEN x => LED<=;WHEN x => LED<=;WHENx=> LED<=;WHEN xWHEN x => LED<=A;WHEN x_x0010_ => LED<=H;WHEN x => LED<=I;WHEN x80 => LED<=WHEN OTHERS => LED<=END CASE;END PROCESS;Y2<=LED(2);Y1<=LED(1);Y0<=LED(0);END ADO;3-8译码器参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DECODE ISPORT(DATA_IN :IN STD_LOGIC_VECTOR(2 DOWNTO 0);LEDOUT,DATA_OUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW :OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END DECODE;ARCHITECTURE ADO OF DECODE ISSIGNAL OUTA,D_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINLEDW<=PROCESS (DATA_IN)V ARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINTA_IN;DIN:=DALEDOUT<=OUTA;DATA_OUT<=D_OUT;CASE DIN ISwhen OUTA<=11111 ; --when => outa<= --when => outa<=11011; --when => outa<=01111; --when @ => outa<=00110;--when A => outa<=01101; --_x0005_when H => outa<=11101; --when I => outa<= --_x0007_WHEN OTHERS => OUTA<=XXXXXXXX;END CASE;CASE DIN ISWHENWHEN => D_OUT<=WHEN => D_OUT<=WHEN => D_OUT<=WHEN @ => D_OUT<=WHEN A => D_OUT<=WHEN H => D_OUT<=00000;WHEN I => D_OUT<=00000;WHEN OTHERS=> D_OUT<=XXXXXXXX;END CASE;END PROCESS;END ADO;五、实验仿真8-3编码器引脚锁定如图:5-1图图5-2仿真波形如图:3-8译码器引脚锁定如图:图5-3波形如图:图5-4六、实验现象调试ok的EP2C5文件在文件夹decode中,可以直接调用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学ASIC原理课程实验实验报告设计要求:(3,1,8)卷积码编码器学院:电子工程学院专业:电子信息科学与技术班级:学号:姓名:2013年6月20日一、设计要求运用verilog语言编写一个(3,1,8)卷积码编码器,并对其进行仿真。
二、卷积码编码器原理卷积码拥有良好的纠错性能,是一种被广泛应用于移动通信的信道编码系统。
一个(n,k,m)卷积码编码器由k个输入,具有m阶存储的n个输出的线形时序电路实现。
通常,n和k是较小的整数,且k<n,但m比较大。
当k=1时,信息序列不再分成小块,以便可以连续处理。
卷积码(n,k,m)表示码率R=k/n,编码器级数m=s-1,其中s是码约束长度。
反向CDMA信道使用(3,1,8)卷积码,码率R=1/3,约束长度为9,由于k=1,n=3,m=8,则该卷积编码器包含单个输入端,一个8级移位寄存器,三个模2加法器和一个3向编码器输出的连续转向器。
编码器每输入一位信息比特将产生三位编码输出。
这些编码符号中,第一个输出符号G0是生成序列g1⑴编码产生的符号,第二个输出符号G1是由生成序列g1⑵编码产生的符号,最后一个输出符号G2是由生成序列g1⑶编码产生的符号,如下图所示。
该电路由一个八位寄存器、三个码生成逻辑、一个时隙发生器和一个四选一复用器构成。
mux的输入为G0、G1和G2,码选择信号C[1:0]和clk1由时隙发生器产生,输出信号即为整个电路的输出Yout。
卷积编码器的初始状态用rst异步清零信号置为0,rst=0时,电路清零。
卷积编码器的初始状态全为0,初始状态之后输出的第一个编码符号由生成序列g1⑴编码产生。
这里,三个生成序列分别为g1⑴=(101101111),g1⑵=(110110011), g1⑶=(111001001)。
即三个生成多项式分别为:C0=1+X+X2+X3+X5+X6+X8 (557)C1=1+X+X4+X5+X7+X8 (663)C2=1+X3+X6+X7+X8 (711)三、实验设计与实现根据以上实验要求,我们首先设想了分为几个模块,然后将各个模块进行整合实现编码器的功能,根据我们的设想编写相应的verilog程序,进行调试、实现。
以下是实验的具体过程。
1.卷积码模块设计(1)3分频器(fenping)。
它的功能是产生clk时钟三分之一频率的时钟信号,命名为clk1,同时产生选择信号sel[1:0]。
(2)4-1多路选择器(mux_4_1)。
根据sel[1:0]输入的选择信号,选择4路(in0,in1,in2,in3)输入的1路来输出(out)。
后来,根据老师的指导,将卷积的运算逻辑组装在这个模块里。
(3)8位移位寄存器(wyjc_8)。
用于记录输入的信息。
每经过一个时钟上升沿(clk1)向前移位一次。
2.verilog程序编写各个模块相应的代码和注释如下所示。
(1)3分频器module fenping(clear,clk,clk1,count);input clk,clear;output clk1,count;wire clk,clear;reg clk1;reg [2:0] count;always @(posedge clk or posedge clear)beginif(clear==1)count[2:0]<=3’b010;elsebegin//通过循环移位实现3分频count[0]<=count[2];count[1]<=count[0];count[2]<=count[1];clk1<=count[1];end;endendmodule(2)4—1多路选择器module mux_4_1(clk1,clk,sel,in,kin,out);input[1:0] sel;input clk,in,clk1;input[7:0] kin;output out;wire [1:0] sel;reg out;reg [8:0]k;always @(posedge clk) //依次计算c0,c1,c2begincase(sel)default out<=0;2’b00:out<=(k[0]+k[1])+(k[2]+k[3])+(k[5]+k[6]+k[8]);2’b01:out<=k[0]+k[1]+k[4]+k[5]+k[7]+k[8];2’b10:out<=k[0] +k[3]+k[6])+k[7]+k[8];endcaseendalways @(posedge clk1) //采样部分begink[7:0]<=kin[7:0];k[8]<=in;endendmodule(3)8位移位寄存器module wyjc_8(clear,clk,in,out);Input clear,clk,in;output[7:0] out;reg[7:0] out;wire clear,clk,in;always @(posedge clk or posedge clear)beginif(clear==1)ou t[7:0]<=8’b0;elsebeginout[7]<=in;out[6]<=out[7];out[5]<=out[6];out[4]<=out[5];out[3]<=out[4];out[2]<=out[3];out[1]<=out[2];out[0]<=out[1];endendendmodule(4)整合模块`include “fenping.v”//将各模块加入文件`include “mux_4_1.v”`include “wyjc_8.v”module bianma(rst,clk,in,out,clk1);input rst,clk,in;output out;output clk1;wire clr,clk,in,clk1,rst;wire[7:0] k;wire[2:0] sel;reg g0,g1,g2;fenping f1(.clk(clk),.clear(clr),.clk1(clk1),.count(sel));//分频器实例化wyjc_8 w1(.clear(clr),.clk(clk1),.in(in),.out(k));//移位寄存器实例化mux_4_1 m1(.clk1(clk1),.in(in),.kin(k),.clk(clk),.sel(sel[1:0]),.out(out)); //多路选择器实例化assign clr=~rst;//复位信号翻转endmodule(5)测试程序·timescale 1 ns/ 1 nsmodule bianma_test1;reg clk,rst,in,code,flag;wire out,clk1;integer I,j,r_seed;reg[31:0] a;reg[15:0] c0,c1,c2;bianma b1(.clk1(clk1),.clk(clk),.rst(rst),.in(in),.out(out));initial clk=0;//时钟产生always #5 clk=~clk;initial//复位部分beginrst=0;#7 rst=1;endinitial//结束仿真#490 $finish;Initial//输入与对照分量产生begin$monitor($stime,,”clk=%b,rst=%b,in=%b,out=%b,code=%b,error=%b ”,clk,rst,in,out,code,fl ag);a[31:0]=32’b0;a[18:0]=$random % (1024*8);for(i=0;i<16;i=i+1)beginc0[i]=a[i+8]^ a[i+6]^ a[i+5]^ a[i+3]^ a[i+2]^ a[i+1]^a[i];c1[i]=a[i+8]^ a[i+7]^ a[i+5]^ a[i+4]^ a[i+1]^a[i];c2[i]=a[i+8]^ a[i+7]^ a[i+6]^ a[i+3]^a[i];endin=0;flag=0;#10 in=a[8];for(i=0;i<16;i=i+1)begin#30 in=a[i+9];endendinitial//采样对比begin#20 code=0;for(j=0;j<16;j=j+1)begin#5 code=c0[j];#5 if(out!=code) flag=1;#5 code=c1[j];#5 if(out!=code) flag=1;#5 code=c2[j];#5 if(out!=code) flag=1;if(flag==1) $dispaly(“error”);endendinitial $sdf_annotate(“bianma.sdf”,b1);//延时文件endmodule四、仿真与综合1.初始波形(输入IN为随机数)图中out端输出为编码器输出,code端输出为对照输出,从仿真波形图可以看出,两者的输出波形完全一致,即编码器工作正常。
2.门级电路仿真各模块和综合后仿真结果如下4张图所示。
3.综合后电路信息4.综合后仿真波形(输入IN为随机数)在control_test.v 文件中加入以下语句,以便将control.sdf 文件标注到测试文件中:initial $sdf_annotate(“control.sdf”,c1); [c1 为测试文件中调用control 电路模块的标签]在对门级电路control.vg 进行仿真时,在仿真命令中使用-v/home2/student/lib/train/verilog/tsmc25.v将库文件引入,得到的仿真波形如下图所示。
由上图可知,在其他条件不变情况下,编码器工作依然正常,但是out端(实际)的输出与code端(对照)的输出相比,有1ps的延迟。
五.实验思考题请用vi 打开control.vg 和control.sdf 文件,理解其中内容,尤其是control.sdf 中的延迟信息是如何表示的,并回答以下问题。
1.control.vg 文件是verilog 语言级的描述还是结构化的描述?实验中的部分vg文件如下截图所示。
可以看出,vg文件是结构化描述。
2.control.sdf 文件中,对触发器的延迟包括哪些信息,请一一列出。
Sdf文件中关于触发器的描述部分截图如下。
可以看出触发器的延时信息包括每一个逻辑单元的每一个管脚的上升时延与下降时延的最小值、典型值、最大值。