十进制加法器的VHDL程序及注释如下:
// 包含所需的库library IEEE
use IEEE.std_logic_1164.all
use IEEE.std_logic_unsigned.all
// 定义所需的输入输出端口和寄存器
ENTITY BCD_counter IS
PORT(clr,clk: IN std_logic
BCD_q:OUT std_logic_vector(3 DOWNTO 0))
END BCD_counter
ARCHITECTURE behavioral OF BCD_counter IS
SIGNAL counter:std_logic_vector(3 DOWNTO 0)
BEGIN
process(CLR,CLK)
begin
IF clr='0' then // 清零标志有效,则计数器清零
counter <= (OTHERS => '0')
ELSIF rising_edge(clk) THEN
IF counter < "1001" THEN // 计数器数值小于10,计数器加1
counter <= counter +'1'
ELSE counter <= (OTHERS => '0') // 计数器数值大于等于10,计数器清零
END IF
END IF
end process
BCD_q <= counter
END behavioral
姓名:王铎澎
学号:20000300055
嵌牛导读:该篇文章主要进行了数字通信中较常见的巴克码的算法原理和仿真实现。
嵌牛正文:
同步是通信系统中一个重要的实际问题。通信系统有效地、可靠地工作是建立在良好的同步系统基础上的。数字通信系统中帧同步一般采用集中插入同步法,而性能良好的巴克码是目前帧同步(群同步)系统中用得比较广泛的同步码,该码组具有尖锐的自相关函数,且在接收端进行同步识别时出现漏同步、伪同步的概率小,群同步平均建立时间短,同时接收端的同步码识别器较为简单[1]。本文主要阐述了如何利用SystemView实现巴克码识别器仿真。仿真系统主要由伪随机序列(Pseudo-Noise,PN)发生器、时钟发生器、8位移位寄存器、加法器及逻辑比较器组成。通过设计仿真电路,分析电路仿真结果,为最终硬件实现提供理论依据。
巴克码识别系统由伪随机序列(数据)发生器、时钟发生器、巴克码生成电路、检测电路共同组成,其中巴克码由时钟脉冲加到PN序列产生器上生成。系统原理框图如图所示
群同步
通信系统的帧同步中的消息数字流总是用若干码元组成一个“字”,又用若干“字”组成一“句”,即组成一个个的“群”进行传输的。因此,在接收这些数字流时,同样也必须知道这些“字”、“句”的起止时刻,在接收端产生与“字”、“句”起止时刻相一致的定时脉冲序列,统称为群同步或帧同步[2]。
接收码组与发送码组在结构、频率和相位上须完全一致,否则就不能正常接收所发送的信息,接收到的只是一片噪声。若实现了收发同步但不能保持同步,也无法准确可靠地获取所发送的信息数据。发送端和接收端可以采用高精确度和高稳定度的时钟频率源,以保证频率和相位的稳定性。但在实际应用中,存在许多事先无法估计的不确定因素,如收发时钟不稳定、发送时刻不确定、信道传输时延及干扰等,尤其在移动通信中,这些不确定因素都有随机性,不能预先补偿,因此只能通过同步系统消除。
群同步的任务就是在位同步信息的基础上,识别出数字信息群(“字”或“句”)的起止时刻,或者说给出每个群的“开头”和“末尾”时刻。这些特殊的码字应该在信息码元序列中不会出现,或者是偶然可能出现,但不会重复出现,此时只要将这个特殊码字连发几次,收端就能识别出来,接收端根据这些特殊码字的位置使接收设备的帧定时与接收到的信号中的帧定时处于同步状态实现群同步。
2 .2 连贯式插入法
连贯插入法,又称集中插入法。它是指在每一信息帧的开头集中插入作为帧同步码组的特殊码组,该码组应在信息码中很少出现,即使偶尔出现,也不可能依照帧的规律周期出现。接收端按帧的周期连续数次检测该特殊码组,这样便获得帧同步信息。
2 .3 帧同步码选择原则
帧同步码的要求:
(1)具有尖锐单峰特性的自相关函数、漏同步概率小;
(2)便于与信息码区别、假同步概率小;
(3)码长适当,以保证传输效率。
2 .4 巴克码
巴克码是一种具有特殊规律的二进制码字,是一种非周期序列,它的特殊规律是:若一个 n 位的巴克码,每个码元只可能取值+1或-1,从它的局部自相关函数
中可以看到巴克码计算的局部自相关函数R(j)具有尖锐单峰特性,从后面的分析同样可以看出,它的识别器结构非常简单。目前只搜索到10组巴克码,其码组最大长度为13,全部列在表3-1 中。表中+表示+1,–表示–1。
以 n = 7的巴克码为例,它的局部自相关函数计算求出j=1、2、3、4、5、6、7时的R(j)值分别为-1、0、-1、0、-1、0,再求出j为负值时的自相关函数值,两者一起画在图3-2 中。由图可见,其自相关函数在j=0时出现尖锐的单峰。
2 .5 巴克码生成电路
时钟脉冲加到PN序列产生器上生成巴克码,巴克码生成电路如图3-3 所示
巴克码生成电路原理图
2 . 5 . 1 时钟信号实现
时钟信号:为系统提供一连串稳定的脉冲信号,从而满足系统各部分协同工作需要的稳定的脉冲信号。
时钟信号源参数设置:一个周期脉冲序列应等于,或长于指定的脉冲宽度,即保证一周期内有脉冲信号显示。脉冲宽度一般设置为 5e-3 sec即0.005s,那么输入频率应小于200Hz,因为1/200=0.005s,这里频率定义为常用值 100Hz
100Hz
图3-6 时钟信号波形图
显然这是时钟信号波形,且时钟信号源图符1 直接连接到接收图符3,故可确定W1(图3-6)为时钟信号波形。
2 . 5 . 2 PN 序列产生器功能实现
SystemView在通信图符库中给出了一个PN码发生器的图符。只需在该图符的输入端加入一定频率的时钟信号,给出相应的移位寄存器长度、反馈系数(或抽头)和起始种子(Seed)便可得到所需的PN序列。
伪随机(PN)序列:可预先确定的,且可以重复地生产和复制的又具有某种随机序列的随机特性(即统计特性)的确定的序列。
伪随机序列系列具有良好的随机性和自相关性,并且有预先的可确定性和可重复性。最常见的二进制PN 序列是最大长度线性移位寄存器序列,简称m 序列[3],它是由一个线性反馈的n 级移位寄存器生成的。所谓线性反馈,是指反馈函数中仅包含模2 加运算而不含非线性运算。n 级移位寄存器共有2n 个状态,除去全0状态外有2 n -1 种状态,因此它能产生的最大长度的码序列为2 n -1位。这样生成的m 序列是一个以P=2 n -1为周期的循环序列。
n 级移位寄存器产生m序列的方法。
图3-7 是由n 级移位寄存器构成的码序列发生器。寄存器的状态决定于时钟控制下输入的信息(“0”或“1”),例如第 i 级移位寄存器决定于前一时钟脉冲后的第 i -1级移位寄存器状态。参加反馈的各级输出经多次模2和后把最后结果送入第一级。需要注意的是,结构需有全0检测电路和启动电路,否则由于某种原因(如启动)发生器可能死在全“0”状态。
图3-7 n级循环序列发生器的模型
图3-2 七位巴克码的自相关函数
PN序列产生器设置 *** 作如下。
从图符库中拖出一个图符“Comm”到设计窗口,双击该图符,在d出的图3-9 通信图符库窗口中选择“ Filters/Data”中的PN序列产生器“PN Gen”, 按“Parameter”按钮,
图3-9 通信图符库窗口
依据前面理论,n=3,Ci=(13)8的m序列故将参数设置窗口中的寄存器长度 “Reg Len”定义为3,种子“Seed”定义为7,抽头项“Taps”的2和3打勾。确认退出,图符变成 。
图3-10 PN序列产生器参数设置窗口
在图符14即可接收显示7位巴克码波形如图3-11 所示
图3-11 巴克码波形图
由波形图W3可看出波形以数据组1110010为周期,因为7位巴克码组为1110010,故W3(图3-11)为巴克码生成输出波形。
2 .6 检测电路
如图3-12 使用一个8位移位寄存器(图符5)的前7位,3个非门(图符6、7、8),加法器(图符9)和比较器(图符16)构成检测电路。信号输出经过比较判决器(图符16)检测识别出大于6的单峰脉冲。
2 . 6 . 1 数据信号实现
在数字通信中,一般使用伪随机序列信号作为训练序列,用来模拟带有巴克码的数据流。
伪随机序列信号:产生一个按设定速率,由不同电平幅度脉冲组成的伪随机序列(PN)信号。
伪随机序列信号源参数设置:频率一般定义为100Hz,电平数就定义为2,即符合巴克码±1,两个电平数.
3 系统仿真模型设计
3 .1 系统设计步骤
1).进入SystemView。双击桌面上的SystemView快捷图标或单击程序组中的SystemView即可启动SystemView。
2).点击菜单栏的“File->New System”建立一个新文件。
3).定义一个幅度为1V,频率为100Hz的数据信号源。从图符库中拖出一个信号源图符 “Source”到设计窗口,双击该图符,在出现的信号源库窗口中,选择噪声/伪随机序列“Noise/PN”中的伪随机序列信号“PN Seq”,按
“Parameter”按钮,将参数设置窗口中的幅度“Amp”定义为1,频率“Frequency”定义为100。确定退出,图符变成。
4).定义一个幅度为1V,频率为100Hz的信时钟号源。从图符库中拖出一个信号源图符“Source”到设计窗口,双击该图符,在出现的信号源库窗口中,选择周期信号“Periodic”中的脉冲信号“Pulse Train”,按“Parameter”按钮,将参数设置窗口中的电压幅度“Amp”定义为1,频率“Frequency”定义为100,脉冲宽度“PulseW”定义为5e-3 ,偏置电压“Offset”定义为-500e-3 。确定退出,图符变成。
5).定义四个接收图符。拖动一个接收图符“sink” 到设计窗口,点击 复制三个同样的图符,双击它们,将它们都选择分析类“Analysis”中的分析接收“Analysis”,确定退出,图符变成 。
6).按快捷键 切换到通信图符库,从图符库中拖出一个逻辑图符 “ Logic”至设计窗口,点击 复制三个同样的图符,双击其中一个,在出现的窗口中,选择“FF/Latch/Reg”中的8位移位寄存器“Shft-8in”按“Parameter”按钮,将参数设置窗口中的输出真值“True Output”定义为1,输出假值“False Output”定义为-1。确认退出,图符变成 。另外三个图符选择门/缓冲器“Gates/Buffers”中的逻辑非“Invert”,按“Parameter”按钮,将参数设置窗口中的输出真值“True Output” 定义为1,输出假值 “False Output” 定义为-1。确认退出,图符变成 。
7).从图符库中拖出一个加法器图符“Adder”到设计窗口。
8).从图符库中拖出一个图符“Comm”到设计窗口,双击该图符,在跳出的窗口中选择“Filters/Data”中的PN序列产生器“PN Gen”,按“Parameter”按钮,依据前面理论,n=3,Ci=(13)8的m序列故将参数设置窗口中的寄存器长度“Reg Len”定义为3,种子“Seed”定义为7,抽头项“Taps”的2和3打勾。确认退出,图符变成 。
9).从图符库中拖出一个算子图符“Operator”到设计窗口,双击该图符,在跳出的窗口中选择逻辑算子”Logic”中的比较器“Compare”, 按“Parameter”按钮,将参数设置窗口中的比较 “Comparison”选取“a>b”,真值输出“True Output”定义为 2 ,假值输出“ False Output”定义为 0 。确认退出,图符变成 。
10). 从图符库中拖出一个信号源图符 “Source”到设计窗口,双击该图符,在跳出的窗口中选“Aperiodic”的阶跃函数“Step Fct” ,按“Parameter”按钮,将参数设置窗口中的电压幅度“Amp”定义为0,确认退出,图符变成 。点击 复制一个同样的图符,电压幅度“Amp”定义为 6。
11).连接图符。将数据信号源输出图符0 分别连接到移位寄存器图符5 和接收图符2 ;时钟信号源输出图符1 分别连接到移位寄存器图符5、接收图符3 和PN序列产生器图符13,图符13 再连接到接收图符14 ;移位寄存器图符5 的0,2,3口分别经过非门再接到加法器图符9,而图符5的1,4,5,6口直接接到加法器图符9,另外加法器外加一个阶跃信号源图符4;加法器图符5 输出到判决器图符10,最后由判决器图符10输出到接收图符12 。得到如下图所示的巴克码识别器仿真系统原理图。
12).设置系统运行时间。单击工具条中的系统定时“System Time”按钮,把采样频率“Samp1e Rate”设置为载波频率的10倍1e+3 Hz,采样点数“No. of Samples”设置为1024。
13).按创建便笺按钮,加入如图4-2 所示的注释Note Pad,汉字的颜色和字体可以在文字框内单击右键定义。
14).运行系统。单击工具条中的运行按钮运行系统。
15).单击“Analysis”快捷按钮进入分析窗口,单击窗口工具条的水平分布,使整个窗口排列显示四个图形W0、W1、W2、W3,利于对照观察分析。这时可以看到四个图形W0、W1、W2、W3。
16).结束仿真,保存系统。通过选择“File ->Save”把刚才设计的内容保存下来。
主要是用74LS283芯片和74LS86芯片通过拨码开关来控制高低电平作为二进制的0和1,用普通led灯来展现高低电平状态,高电平则灯亮,低电平则灯灭,通过2位的拨码开关来实现加法器和减法器的转换,经过两组芯片后电流通过led,led灯亮,则表示为1,如果灯灭,则表示为0。
另外设计一个电源电路,将9v的交流电压降到5v,再输入到加法器、减法器电路,能够实现8位的二进制相加或则相减,结果的范围应该在00000000到111111110之间,八位二进制数换算成三位十进制数最大为255。
扩展资料
设计原理图时,在原理图元器件的放置就要好好安排位置,以免太过杂乱,不好复查,同时,在选择元器件的时候要注意所包含的封装是否是插孔式,因为有的封装是贴片式的,以免选错,造成不必要的麻烦。
在做原理图的时候有一些小技巧,如果像每样相同的元器件很多,比如电阻,可以双击元器件然后摁TAB键,改变元器件名称和序号,这样就可以一次性得到相同型号的元器件,不用一个个点,做原理图时元器件的型号要标好,方便自己检查和焊元器件时pcb和原理图进行对应,从原理图库中有差不多的元器件的时候可以观察它们封装的特点,看哪一个封装比较适合自己,同时看封装大小是否合适。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)