您好、欢迎来到现金彩票网!
当前位置:秒速时时彩计划 > 随机开关 >

ASIC系统设计实验报告_随机数产生器

发布时间:2019-07-07 03:14 来源:未知 编辑:admin

  ASIC系统设计实验报告_随机数产生器_信息与通信_工程科技_专业资料。随机数产生器

  随机数发生器的原理分析与设计实现 要求设计的随机数发生器可产生两个随机数,由一开关(RIN)进行控制,RIN 为 1 时 随机数发生器被清除,RIN 为 0 时随机数发生器将产生 1-6 的两个随机数,可由 LED 数码 管显示,显示的方式可由设计者自行设计,既可以选择数码管中的任两个 LED 显示随机数, 也可让四位 LED 同时显示一个随机数(按一定的时间跳转显示)。根据给定的材料完成上 述系统的设计,用 Xilinx ise 完成功能的设计与仿真,并最终下载到目标板 XILINX SPARTAN-3 Starter Board 上进行验证实现。 1 系统原理分析 根据设计要求,所设计的系统分为可控随机数产生器、时钟控制、显示译码、片选控制 几个部分。目标板上的 FPGA 芯片型号为:XILINX XC3S200FT256。对于时钟控制部分, 可以直接利用目标板上的时钟引脚 T9(输出频率为 50MHZ),以此引脚为输入设计分频器 以输出适合本系统的时钟;对于可控随机数产生器,可设计为一个计数器,可控开关选择目 标板上的 SW7(对应引脚为 K13),当开关关闭时,计数器为一从 1?6 的随机计数器,当 开关打开时,计数器停止计数并保存当前数值不变,如果开关的开合随机,则开关打开时计 数器的输出即为一个 1?6 的随机数;显示译码部分主要完成 BCD 码到 7 段数码管显示码之 间的转换;片选控制部分完成两个工作,选择显示数字的 LED 管以及需要显示的数字,使 得数码管根据系统时钟的变化显示对应的随机数。 完成上述各模块的设计与仿真分析,确保设计的正确性。在顶层图中对上述各模块进行 正确的连接,并对顶层图进行仿真验证,结果正确后下载到目标板上进行验证。系统的顶层 图如图(1)示,下述章节将对各模块进行分析。 图 1 系统顶层原理图 2 系统模块分析 实验给定的原理图在某些模块的设计上有错误,故图 1 与给定的原理图有一定的出入。 下面将图 1 所示的系统分为 4 个模块,进行具体分析,与给定的原理图进行比较,并对有改 动的地方进行详细的说明。 第1页共9页 2.1 时钟控制模块 时钟模块为系统提供时钟,目标板上 T9 的输出时钟频率为 50MHZ,如果直接应用于 本系统,系统时钟周期将会很小,加上设计上存在的一些问题,使得系统延时相对与时钟周 期不能忽略,进而数码管的不能够稳定的显示(出现闪烁状),而这种问题在仿真阶段并不 存在。在本系统中,我们对 50MHZ 的时钟进行分频,从顶层图可以看出,用到了两个分频 器,最终的输出时钟为 20KHZ,经验证,可以稳定的显示随机数,效果较好。分频器的封 装与内部结构如图(2)。 图 2 分频模块的封装图与内部结构图 分频器的设计采用的是 VHDL 语言,设计的分频倍数为 50,两级级联后的分频倍数将达到 2500 倍,输出的时钟频率为 20KHZ。分频器设计的 VHDL 代码如下示。 ------------------------------------------------------------------------------entity frequencyDiv is port( CLK_IN: in std_logic; CLK_OUT: out std_logic); end frequencyDiv; -------------------------------------------------------------------------------architecture Behavioral of frequencyDiv is signal count_val:std_logic_vector(6 downto 0):=(others =0); signal temp_output:std_logic:=0; begin process(CLK_IN) begin if(rising_edge(CLK_IN)) then 第2页共9页 if(count_val=110010) then count_val=(others=0); temp_output=not(temp_output); else count_val=count_val+1; end if; end if; CLK_OUT=temp_output; end process; end Behavioral; ------------------------------------------------------------------------------该时钟模块与实验给定的时钟模块存在一定的区别,给定的顶层图中,时钟模块如图(3) 示。在 XILINX ISE 中,对应于目标板的芯片中并没有内部时钟振荡器(OSC4),故这种 方案难以实施。于是,我们更换了设计方案,设计一个分频倍数为 50 的分频器,对 T9 的 输出进行两级分频,得到 20KHZ 的时钟频率,作为系统的时钟,经最终的仿真验证与实现, 效果良好。 图 3 实验给定的时钟模块 2.2 随机数产生模块 随机数产生模块如图(4)示,包括两个小的模块 roll11 和 random,下面对这两个模块进 行分析。 (1) 模块 ROLL 图 4 随机数产生模块 第3页共9页 模块 ROLL 有两个输入信号,时钟信号 CLK 以及开关信号 R_IN,有一个输出信号 ROLL。原理图如图(5)所示。由图可看出,其由两个不同类型的 D 触发器组成,根据触发器 的特点可得出其真指表(表一)。该模块实现的功能是当时钟上升沿时,ROLL 的输出等于 输入 R_IN,非上升沿时保持不变,以实现按照一定的时钟周期检查开关的状态。 图 5 ROLL 模块的内部结构图 表一:ROLL 模块真值表 输入 R_IN 0 1 CLK ↑ ↑ 输出 ROLL 0 1 (2) RANDOM 模块 模块 RANDOM 负责产生两个随机数,其顶层图如图(6)示,包含两个输入 CLKR、RLIN 以及两组输出数据(Q0?Q5)。第一个随机数产生模块 U1 的时钟为系统时钟,开关控制 信号 RLIN 对其进行控制,第二个随机数产生模块 U2 的时钟为 U1 的输出 Q2,这样可以保 证随机数在产生的过程中不同步,以产生与 U1 不同的随机数,U2 的控制开关也为 RLIN。 图 6 随机数产生模块的顶层图 随机数产生模块 U1 与 U2 的内部结构如图 7 所示,其中模块 FDCE 的真值表如表二示。从 FDCE 的真值表可看出,其为带清 0(CLK)和使能(CE)的上升沿 D 触发器: CLR=1 进行清零操作,Q(n+1)=0 CLR=0,CE=0,没有使能,Q(n+1)=Q(n) CLR=0,CE=1,上升沿时:Q(n+1)=D 在此基础上对图 7 进行分析仿真,得到的仿线 和表三示。从真值表中看 出,随机数产生的原理为:当 RL=1、CLR=0 时,为 1?6 的循环计数器,当 RL 从 1 变为 0, 由于 D 触发器没有使能,其状态将会停留在 1 到 6 中间的某个状态,这样便会产生一个 1 到 6 的随机数。所以当时钟不同时,便可以同步产生不同的随机数。 第4页共9页 表二:FDCE 线 随机数产生模块电路图 图 8 随机数产生模块的仿真波形 表三:随机数产生模块的线 显示译码模块 显示模块将 3 位二进制数据转换成 7 段数码管能够显示的 10 进制数,以显示随机数发 生器所产生的随机数,电路原理图如图(9)示。在实验提供的原理图中,这个模块是错误的 (对提供的原理图进行波形仿线 时,a、b、c、d、e、f、g 全为 1,而其中 g 应该为 0。同理显示‘7’出现了类似的问题。而其余数字又是直接按照共阳极的生成的, 不用加反向器),故此处做了一定的修正。在设计译码器的时候,根据显示原理列出真值表 (表四),然后通过卡洛图等计算出输出的表达式,画出电路图。 表四:译码器的真值表(目标板上的 LED 管为共阳极管) 第5页共9页 图 9 译码电路及其封装图 画出电路图后对电路图进行仿线,从图中可以看出仿真的结果与真值表对 应,表明设计结果的正确性。 图 10 译码电路仿线 片选控制模块 片选控制模块完成两方面的内容,一方面选择数据,即在某一时刻对哪个随机数进行译 码并显示,另一方面选择 LED 管,即在某一时刻选择哪个数码管作为显示随机数的载体。 从顶层图中可看出,这部分包括三个小的模块 COUNT、SELECT、SELECTLED,下面将对 这三个小的模块进行分析。 (1)COUNT 模块 COUNT 模块的电路图如图(11)所示,从图中可以看出,其只包含一个元件 CB2RE,该 模块的真值表也如图示。在本电路中我们只用到了 CB2RE 的两个输入端 Q0、Q1,从真值 表中可以看出,当开关信号 RL=1,CLK 上升沿时,输出端(Q1、Q0)被清零。当开关信 号 RL=0,CLK 上升沿时,输出端实现计数功能(从 00—11 循环计数)。 图 11 COUNT 模块电路图以及 CB2RE 的线)SELECT 模块 SELECT 模块的电路图如图(12)示,从图中可看出其有三组输入,数据组 A、B 以及选 择端 S,而输出只有一组数据。通过 S 的不同取值来决定输出是 A 还是 B,通过对电路的仿 真分析,可得到电路图的真值表(表五)。从真值表中可以看出,模块输入输出关系表达式 1.1。 其根据 S0、S1 的值来决定输出数据是 A、B 还是 0,进而按照一定的时钟调整送入译码器 的数据。 O1 ? A1* S0 * S1? B1* S0 * S1 O2 ? A2 * S0 * S1? B2 * S0 * S1 O3 ? A3* S0 * S1? B3* S0 * S1 (1.1) 图 12 SELECT 模块电路图 表五:SELECT 模块的线)SELECTLED 模块 SELECTLED 模块电路图如图(13)示,真值表如表六。在实验给定的原理图中没有这个 模块,在系统设计中,我选择开关打开时,分别在四位 LED 的 AN0 和 AN2 上同时显示两 个随机数,故在显示数据和 LED 管应一一对应,根据开发板上的 LED 管性质,设计控制关 系的真值表,从而设计电路让一个周期内只有一个管亮。 图 13 SELECTLED 电路图 表六:SELECTLED 对应的线页 根据上面三个小模块的分析,可以得出片选模块的整个工作流程,现描述如下:当 RL=1 时,两个计数模块 U1、U2 按照不同的时钟进行计数,所以输入数据 A、B 将不断变化,而 COUNT 模块的输出端(Q1,Q0)被清零,使得 SELECT 的输出端(即要显示的数据)为 0,此时,SELECTLED 模块控制 LED 的四个端口全为 0(四个 LED 管将全部点亮),此时 的效果应为 4 位 LED 管全部显示数据 0。当 RL=0 时,计数模块 U1、U2 计数被暂停,SELECT 模块的输入 A、B 将在 1?6 的某个数上保持不变,而此时 COUNT 的输出 Q1、Q0 从 0?3 进行循环计数,当(Q1,Q0)为(0,0)时,SELECT 输出端(即显示的数据),由于此 时数据为 0,故应关掉所有的 LED 管,当其为(0,1)时,显示数据 B,此时只打开 LED 管 AN0,当其为(1,0)时,显示数据 0,应关闭所有的 LED 管,当其为(1,1)时,显 示数据 B,则只打开 LED 管 AN2。由于 COUNT 的 CLK 为系统时钟,所以只要上述变化按 照一定的顺序快速的往复,则在 LED 上能够看到两位稳定的随机数。 3 随机数发生器的设计实现 完成上述各模块的分析与仿真后,将各模块进行连接,画出系统的顶层原理图(如图 1)。 对顶层图进行仿真,分析仿真结果。确保仿真数据正确后,生成供下载的 16 进制文件,并 设置好下载环境,将 16 进制文件烧进目标板,检验设计的正确性。 在顶层图仿真时,需注意两点,一是将 CLK 作为时钟信号,需去掉其后紧跟的两个分 频器,因为仿真时所能提供的可见时钟有限(与 50MHZ 相差太远),经 2500 倍分频后, 可见的频率周期数会变的很小甚至一个周期都不到,所有模块不能顺利的完成固有的任务, 进而造成仿真的失败。第二是将 IPAQ 作为控制信号,首先需将其值设置为 1,并保持至少 10 个周期,然后才能调为 0.,根据设计原理,随机数发生器首先是一个计数器(要求 IPAQ=1), 而且两个计数器的时钟还不同,所以,为确保两个计数器都进入计数状态,加上系统稳定所 耗掉的周期,需保证 IPAQ 为 1 至少 10 个周期。下载到目标板后这两个问题都不存在,目 标板提供 50MHZ 的时钟,必须得分频才能有效的去除噪声,取得好的显示效果,而 IPAQ 对应一个开关,需人为手动操作,相对于系统运行的时钟,打开开关的时间很长(大于 10 个周期)。 图 14 顶层图仿线)所示为仿线)为仿线)为下载到目标板后的运行 图,其中第一个图是开关关闭时清零的显示,第二、三幅图显示两次随机数。从仿真结果中 可看出,当 IPAQ=1 时,系统稳定后,将在 AN3 上显示 0,其余的 LED 管为熄灭状态,实 第8页共9页 现了清零的功能;当 IPAQ 变为 0 后,将在 AN2 和 AN0 上显示两个随机数,而其余两个 LED 灯显示 0,说明仿线 进制文件进行设计的验证。 图 15 顶层图仿线 下载到目标板后运行的结果 4 总结 利用开关控制的计数器产生随机数来进行随机数发生器的设计,原理比较简单,而且题 目中给出了系统部分原理电路图。通过对电路图的分析与仿真,掌握了随机数产生与显示的 整个流程。利用 XILINX ISE 软件画出原理图,进行系统的仿真,并最终将系统下载到目标 板,完成系统的设计。通过这一设计,我基本上掌握了利用 XINLINX ISE 进行 FPGA 设计 的流程,总的来说,有以下几点收获。 1) 掌握了随机数发生器的基本原理,掌握了系统各个模块的原理与功能。在分析各模块时, 发现了某些模块中存在的问题,例如 SEG 模块中的输出不对,并对相关电路进行了修 正;系统随机数的显示方式也有待商榷,如果按照所给原理图进行设计,则需给显示提 供单独的时钟(跳转显示间隔要达到秒级别,人眼才能够很好的分辨),而本文中采取 扫描式的显示方法,通过添加片选模块,让随机数、LED 与时钟同步,可以选择其中 的两个 LED 管作为随机数的载体,同时显示数字,比设计时钟模块要简单。 2) 掌握了 XINLINX ISE 原理图输入的设计方法与流程。 3) 对一个系统的设计,正确的划分出各个模块是解决一个问题的关键,模块划分的好坏直 接关系到设计的难易程度与系统的质量。本实验中的系统模块划分比较合理,但比较粗 糙,并没有很好的处理延时、噪声等因素,这也是不能直接使用系统提供的 50MHZ 频 率的原因。 第9页共9页

http://parroche-dorioz.com/suijikaiguan/229.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有