FPGA笔试题解析(五):串并转换与奇分频电路
题目:使用状态机实现序列检测器?
序列检测器的状态机实现,以前的博文写的很多,这里贴出两个简单易懂的,看需要的部分即可:
序列检测器的Moore状态机实现
序列检测器的Mealy状态机实现
题目:用Verilog设计串专并电路?
在下面这篇博文中,包含串转并以及并转串的思路:移位寄存器专题
1. module left_shifter_reg(clk, din, dout); 2. input clk; 3. input din; 4. output [7:0] dout; 5. wire [7:0] dout; 6. reg [7:0] qtemp; 7. always @ (posedge clk) 8. begin 9. qtemp <= {qtemp[6:0], din}; //每次输入一位 10. end 11. assign dout = qtemp; //并行输出 12. 13. endmodule
并转串
1. module right_shifter_reg(clk, en, din, dout); 2. input [7:0] din; 3. input en,clk; 4. output dout; 5. reg dout; 6. reg [7:0] qtemp; 7. always @(posedge clk) 8. begin 9. if(en == 1) 10. qtemp <= din; 11. else 12. begin 13. dout <= qtemp[0]; 14. qtemp <= {qtemp[0], qtemp[7:1]}; 15. end 16. end 17. 18. endmodule
题目:设计分频电路?
二分频:https://blog.csdn.net/Reborn_Lee/article/details/85254025
module clkdiv2(input ClkIn,input rst,output ClkOut);reg ClkOut;always@(posedge ClkIn)beginif(rst) ClkOut = 1'b0;else ClkOut = ~ClkOut;end
endmodule
奇偶分频:https://blog.csdn.net/Reborn_Lee/article/details/81298123
先看简单的偶分频电路设计,以10分频为例,意思就是频率降低10倍,那么周期就增大10倍,这样我只需要在原来时钟五倍周期时候翻转一次即可实现10分频电路,这是思路,具体实现时,我们使用计数器来完成10分频电路,计数器的初值为0,每到一个时钟上升沿计数一次并判断是否计数达到要求。
那么计数要求是多少呢?
当然是4,当计数器计数到4,也就是第4个上升沿到来时,要等到下一个上升沿到来判断计数是否到4,同时翻转时钟,这就达到了目的,具体代码移植以前的博文:
//偶分频电路的Verilog HDL设计(10分频为例)
module even_freq_div(clk, rst, clk_div10,cnt);input clk;
input rst;
output clk_div10;
reg clk_div10;
output [2:0] cnt; //输出cnt的原因是为了看到计数次数,便于分析仿真结果。
reg [2:0] cnt;always @(posedge clk)
beginif(rst) //复位信号有效;begincnt <= 0; //计数器清零clk_div10 <= 0; //输出清零;endelse //复位信号无效;beginif(cnt == 4) //每一次时钟上升沿到来时,都检查一次计数值是否达到4;beginclk_div10 <= ~clk_div10;cnt <= 0; //计数器计数到4后,重新清零;计数值为4意味着已经计了5个周期,这时10分频时钟翻转一次;endelse //如果计数器未计数到4,则来一个上升沿加1,同时分频时钟继续保持原值不变。begincnt <= cnt + 1; clk_div10 <= clk_div10; //否则继续保持;endendendendmodule
功能仿真:
可以数数看,恰好是十分频。
接着看奇分频,且为占空比为50%的奇分频电路,以5分频为例:
表面上说,应该对被分频时钟计数2.5个时钟周期翻转一次,但如何计数2.5个周期是一个问题,有人可能会说,上升沿下降沿同时计数,想法很丰满,同样的反面教材:
//奇分频电路的Verilog HDL设计(5分频为例)
module odd_freq_div(clk, rst, clk_div, cnt);input clk;
input rst;
output clk_div;
reg clk_div;
output [2:0] cnt; //输出cnt的原因是为了看到计数次数,便于分析仿真结果。
reg [2:0] cnt;
wire clk1;assign clk1 = ~clk; //相位与clk相差180°;always @(posedge clk or posedge clk1)
beginif(rst) //复位信号有效;begincnt <= 0; //计数器清零clk_div <= 0; //输出清零;endelse //复位信号无效;beginif(cnt == 4) //每一次时钟上升沿到来时,都检查一次计数值是否达到4;beginclk_div <= ~clk_div;cnt <= 0; //计数器计数到4后,重新清零;endelse //如果计数器未计数到4,则来一个上升沿加1,同时分频时钟继续保持原值不变。begincnt <= cnt + 1; clk_div <= clk_div; //否则继续保持;endendendendmodule
功能仿真图:
至于其他幺蛾子,见原博文:https://blog.csdn.net/Reborn_Lee/article/details/81298123#%E5%89%8D%E8%A8%80%EF%BC%9A
正确的分频电路见链接:【FPGA】分频电路设计(Verilog HDL设计)
`timescale 1ns / 1ps
//
// Company:
// Engineer: CSDN 李锐博恩
//
// Create Date: 2019/07/28 15:15:27
// Design Name:
// Module Name: FRE_DIV5//module FRE_DIV5(input clk,input rst_n,output clk_div5);reg [2:0] div_cnt;always@(posedge clk or negedge rst_n) beginif(~rst_n) begindiv_cnt <= 0;endelse if(div_cnt <4) begindiv_cnt <= div_cnt + 1;endelse div_cnt <= 0;endreg clk_div_r, clk_div_rr;always@(posedge clk or negedge rst_n) beginif(~rst_n) beginclk_div_r <= 1;endelse if(div_cnt == 1) beginclk_div_r <= ~clk_div_r;endelse if(div_cnt == 4) beginclk_div_r <= ~clk_div_r;endelse clk_div_r <= clk_div_r;endalways@(negedge clk or negedge rst_n) beginif(~rst_n) beginclk_div_rr <= 1;endelse clk_div_rr <= clk_div_r;endassign clk_div5 = clk_div_r | clk_div_rr;endmodule
FPGA笔试题解析(五):串并转换与奇分频电路相关推荐
- FPGA笔试题解析(二)
1.数制转换 R进制数转换为十进制数:按权展开,相加 十进制数转化为R进制数:整数部分,除R取余法,除到商为0为止.小数部分,乘R取整法,乘到积为0为止. 二进制数转化八进制数:三位一组,整数部分左边 ...
- FPGA笔试题解析(一)
1.简述ASIC设计流程,并列举出各部分用到的工具? 说实话,半路出家,没弄过ASIC,但是经常遇到ASIC与FPGA开发做比较的题目,不得不主动了解下ASIC: ASIC全称: Applicatio ...
- FPGA笔试题解析(四)
1.什么是高阻态? 高阻态:电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,可以理解为断路,不被任何东西所驱动,也不驱动任何东西. 之前写过和高阻态 ...
- FPGA笔试题解析(三)
1.简述建立时间和保持时间,画图表示? 建立时间Tsu(setup):触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间. 保持时间Th(hold):触发器在时钟上升沿到来之后,其数 ...
- FPGA笔试题知识点汇总(41~60)
FPGA笔试题知识点汇总 第三章 FPGA笔试题知识点汇总(41~60) 文章目录 FPGA笔试题知识点汇总 前言 一.题目及解析? 1.IC设计过程中将寄生效应的怎样反馈影响设计师的设计方案?(寄生 ...
- 腾讯2016春招安全岗笔试题解析
腾讯2016春招安全岗笔试题解析 昨天(4月2日)晚上7:00到9:00做了腾讯春招安全岗的笔试题.下面解析一下: 题目解析 1 在生成随机数前用当前时间设置随机数种子应该是安全的.如果程序用固定的数 ...
- 【C语言指针】 回调函数、冒泡函数模拟实现qsort、指针和数组笔试题解析
目录 一.回调函数 定义: 用回调函数形式实现加法运算 二.qsort 函数参数: void指针 用qsort排序整型和结构体 用冒泡函数模拟实现qsort,排序整型和结构体 三.指针和数组笔试题解析 ...
- IC/FPGA笔试题分析(五)
下一个笔试题是华为,虽然只有单选和多选,但还是需要准备一下: 这是一个电路中的某一条关键路径,或者是一个单独的设计,都可以去求其最高频率. 考虑到有时钟抖动等许多情况,所以此电路的最小周期应该为: T ...
- 2021 搜狐畅游数据分析笔试题解析
从牛客网上找到的搜狐畅游数据分析岗位的笔试题,精选了14道题目来给大家解析下,内容涵盖统计学.Excel.SQL.Python.业务理解. 统计学 Excel 业务理解 SQL Python 1统计学 ...
最新文章
- Python类的使用总结
- WEB前端 从原生JavaScript到MVVM
- JS中的(IIFE)(立即调用函数)
- MYSQL函数应用----替换函数replace()用法
- java文件快速扫描仪_有没有办法从Java中的方法提供自动扫描仪输入?
- fpga从入门到放弃(一)基于vivado2018环境开发板Artix 7系列BASYS3(更新中)
- 第2章 神经网络的数学基础
- 使用expect实现shell的交互
- RDP Wrapper
- 计算机输入什么指令关机,电脑自动关机命令是什么
- Minecraft 1.12.2模组开发(五十五) 动画生物实体
- exsi 无法打开虚拟机 执行此操作的权限被拒绝[解决]
- 【区块链之技术进阶】Attention please!区块链技术的风险!
- 软件测试人员面试技巧总结
- Goddy服务器配置
- conda 多环境切换
- 基于SSM的高校课程评价系统
- 查找素材终极神器,视频片段查找神器!
- 安卓解决小米,魅族状态栏全白的问题
- 基恩士PLC导通检测程序
热门文章
- Windows Phone 7监测网络环境变化
- [跟我学UML] UML类图中的泛化
- java选择哪款eclipse_写java程序用哪一个版的eclipse比较好
- transactionscope 中的异步 处理 异常_协程中的取消和异常 | 异常处理详解
- mysql 设置表空间位置_如何修改表空间数据文件路径
- cmder添加到系统变量中_开发环境搭建之VSCode、Cmder
- reddit android app,reddit安卓版app
- 配置ssl证书_Nginx监听443端口配置SSL证书
- 5首页加载慢_5个 外贸建站谷歌SEO优化技巧
- 测量左右磁极的原片磁铁