数控分频器实验报告
更新时间:2023-10-02 16:12:01 阅读量: 综合文库 文档下载
《数控分频实验》
姓名:谭国榕 班级:12电子卓越班 学号:201241301132
一、实验目的
1.熟练编程VHDL语言程序。
2.设计一个数控分频器。 二、实验原理
本次实验我是采用书上的5分频电路进行修改,通过观察其5分频的规律进而修改成任意奇数分频,再在任意奇数分频的基础上修改为任意偶数分频,本次实验我分为了三个部分,前两部分就是前面所说的任意奇数分频和任意偶数分频,在这个基础上,再用奇数输入的最低位为1,偶数最低位为0的原理实现合并。
三、实验步骤
1.任意奇数分频
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DIV1 IS
PORT(CLK:IN STD_LOGIC;
D:IN INTEGER RANGE 0 TO 255; K1,K2,K_OR:OUT STD_LOGIC ); END;
ARCHITECTURE BHV OF DIV1 IS
SIGNAL TEMP3,TEMP4:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL M1,M2:STD_LOGIC;
--SIGNAL OUT1,OUT2,OUT3:STD_LOGIC; BEGIN
PROCESS(CLK,TEMP3) BEGIN IF RISING_EDGE(CLK) THEN
IF(TEMP3=D-1) THEN TEMP3<=\
IF(TEMP3=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-2) THEN M1<=NOT M1; END IF; END IF; END PROCESS;
PROCESS(CLK,TEMP4) BEGIN IF FALLING_EDGE(CLK) THEN
IF(TEMP4=D-1) THEN TEMP4<=\
IF(TEMP4=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (TEMP4=D-2) THEN M2<=NOT M2;
END IF; END IF; END PROCESS;
K1<=M1; K2<=M2; K_OR <=M1 OR M2; END BHV;
此段程序最主要的部分为:
PROCESS(CLK,TEMP3) BEGIN IF RISING_EDGE(CLK) THEN
IF(TEMP3=D-1) THEN TEMP3<=\
IF(TEMP3=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-2) THEN M1<=NOT M1; END IF; END IF; END PROCESS;
PROCESS(CLK,TEMP4) BEGIN IF FALLING_EDGE(CLK) THEN
IF(TEMP4=D-1) THEN TEMP4<=\
IF(TEMP4=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (TEMP4=D-2) THEN M2<=NOT M2; END IF; END IF; END PROCESS;
在这里,我通过研究书上的占空比为50%的5分频电路的程序,通过实验发现了一个规律,就是书上的C1=\,在奇数任意分频中为输入信号减一,即D-1,而在第二个if里,5分频为C1=\,7分频为C1=\,9分频为C1=\,以此类推,则不难发现: 5-4=1;7-5=2;9-6=3.。。。即为程序中的TEMP4=D-(D+3)/2;而ELSIF里的C2=\则为我程序中的TEMP4=D-2。通过这样的修改就可以实现任意奇数分频。
程序仿真: 3分频:
5分频:
7分频:
2.任意偶数分频
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DIV2 IS
PORT(CLK:IN STD_LOGIC;
D:IN INTEGER RANGE 0 TO 255; K1:OUT STD_LOGIC ); END;
ARCHITECTURE BHV OF DIV2 IS
SIGNAL TEMP3,TEMP4:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL M1:STD_LOGIC;
--SIGNAL OUT1,OUT2,OUT3:STD_LOGIC; BEGIN
PROCESS(CLK,TEMP3) BEGIN IF FALLING_EDGE(CLK) THEN
IF(TEMP3=D-1) THEN TEMP3<=\
IF(TEMP3=D-(D+2)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-1) THEN M1<=NOT M1; END IF; END IF; END PROCESS; K1<=M1; END BHV;
此段程序比任意奇数分频简单,原因是偶数分频所用到的周期是整数,例如二分频那么就要用到4个周期,占空比为50%则为高电平两个周期,低电平两个周期,而任意奇数分频则需要半个周期的高电平或低电平,故需要两个信号相或。任意偶数分频的原理与任意奇数分频的原理相似,同样是我在书上的程序上修改而来,其中最重要的是发现其变化规律。 程序仿真: 2分频:
4分频:
8分频:
3.数控分频
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY DIV IS
PORT(CLK_IN:IN STD_LOGIC;
D:IN INTEGER RANGE 0 TO 255; CLK_OUT:OUT STD_LOGIC ); END;
ARCHITECTURE BHV OF DIV IS
SIGNAL C1,C2,C3,D1:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL M1,M2,M3:STD_LOGIC; BEGIN
PROCESS(CLK_IN,C1) BEGIN
D1<=CONV_STD_LOGIC_VECTOR(D,8); IF D1(0)='1' THEN
IF RISING_EDGE(CLK_IN) THEN
IF(C1=D-1) THEN C1<=\
IF(C1=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (C1=D-2) THEN M1<=NOT M1; END IF; END IF;END IF; END PROCESS;
PROCESS(CLK_IN,C2) BEGIN
D1<=CONV_STD_LOGIC_VECTOR(D,8); IF D1(0)='1' THEN
IF FALLING_EDGE(CLK_IN) THEN
IF(C2=D-1) THEN C2<=\
IF(C2=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (C2=D-2) THEN M2<=NOT M2; END IF; END IF;END IF; END PROCESS;
PROCESS(CLK_IN,C3) BEGIN
D1<=CONV_STD_LOGIC_VECTOR(D,8); IF D1(0)='0' THEN
IF FALLING_EDGE(CLK_IN) THEN
IF(C3=D-1) THEN C3<=\
IF(C3=D-(D+2)/2) THEN M3<=NOT M3; ELSIF (C3=D-1) THEN M3<=NOT M3; END IF; END IF; END IF; END PROCESS;
CLK_OUT <=M1 OR M2 OR M3; END BHV;
此程序原理在1、2已经说过了,这里主要用到的就是if的奇偶判断语句: D1<=CONV_STD_LOGIC_VECTOR(D,8); IF D1(0)='1' THEN 此为奇数判断;
D1<=CONV_STD_LOGIC_VECTOR(D,8); IF D1(0)='0' THEN 此为偶数判断。
从而实现了数控分频。 程序仿真:
2分频:
3分频:
4分频:
四、实验心得
此次实验我并没有按照老师的要求,在上课之前先把程序做好,对此我深
感抱歉,没有在课前写好程序是我认为自己能够在几个小时内完成,其实不然,是自己太高估了自己,没有放很多时间在EDA这门课程上,可是通过这次的实验,我深刻意识到,其实自己再也普通不过,在上课之前的一天晚上,我从10点开始编写这个数控分频程序,然而我却发现了难度,想法我是有的,可是却编写不出来。刚刚开始我是想通过时钟上下沿跳变计数来实现数控分频,因为这样能够简单的实现,可是在编程上却遇到了难度,因为对VHDL的语法规则的不熟悉,我一直熬夜到了半夜两点还是一点也没写出来,只好上床睡觉了,第二天中午还想了一中午,通过两个进程来实现计数,对同一个信号进行两个进程的奇数,一个是上升沿,一个是下降沿,再次碰壁。时间过得飞快,到了上课时间,我还是毫无收获,当老师问起我的作业时,我顿时哑口无言,深感惭愧。那三节课的时间我还是编不出任何东西,但是也熟悉了许多语法规则,例如signal要在进程外定义,begin要在定义变量之前,process之后等等小问题,曾经想过抄袭同学的回去再好好领悟,可是我放弃了,因为我知道这样做我就更加没有收获,而且也对不起自己,所以在课后我也不断的尝试去编写,刚刚开始还是不断受挫,
不知道从何写起,后来和同学讨论了一下,发现还有奇偶判断的方法,于是灵机一动,只要把任意奇数分频和任意偶数分频写出来合并在一起就可以实现数控分频了。于是我开始研究书上的5次分频程序,并且发现了任意奇偶分频的函数规律,最终终于把程序编好了。故余虽愚,卒或有所闻。通过这次的实验,我深知在EDA这个领域的编程的困难性,所以我愿意花更多的时间去学习,老师所布置的实验再也不会不提前做好程序了。
正在阅读:
数控分频器实验报告10-02
e表集成开发手册10-24
河北省石家庄市复兴中学冀人版八年级历史上册(2017)学案(无答案)第17课二万五千里长征12-18
2017年中国电动汽车行业市场需求预测与投资战略规划分析 - 图文07-03
松树借物喻人的作文3篇12-23
做主耶稣的精兵12-20
以平衡计分卡为基的研发部门绩效评估指标之可行性研究05-06
浅析金融政策对房地产行业的影响08-11
千里马是怎样炼成的?08-02
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 分频器
- 数控
- 实验
- 报告
- 2016-2017潜江油焖大虾市场营销推广策划案
- 继承法讲座讲稿(心血之作)
- 工程设计阶段有效造价控制浅析
- 2010年四川中考语文试题汇编—综合性学习
- 信息系统开发与设计实验九 活动图、状态图
- 管理试题123
- 外国文学笔记
- 如何才能增强真石漆涂层的防水性和耐沾污性? - 图文
- 2015电大《阅读与写作》形成性考核册答案1、2、3
- 人教版二年级上册数学练习题()里最大能填几
- 中国近代史纲要习题第十章
- 09光电效应法测普朗克常量
- 2018电大公共政策概论期末考试复习小抄(完美版)
- 基因的分离定律和自由组合定律的实验验证设计
- XXXX乡镇重点建设项目管理制度
- 西医诊断操作
- 科技写作考查
- 液压支架设计 1,2章
- 光纤入户设计方案(住宅小区FTTH解决方案) - 图文
- 2414+机械设计基础机考期末复习20160701 - 图文